diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b92956a264..1633fa254b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,13 +19,23 @@ jobs: uses: actions/checkout@v2 with: submodules: recursive - - - name: Update ubuntu + - name: Install C++ dependencies run: | sudo apt update - sudo apt-get install git cmake gcc g++ libboost1.67-all-dev python3-all-dev swig libpcre3-dev libxml2-dev - sudo apt-get install libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \ - libhdf5-dev libcgal-dev + sudo apt-get install --no-install-recommends \ + git cmake gcc g++ \ + libboost-date-time-dev \ + libboost-filesystem-dev \ + libboost-iostreams-dev \ + libboost-program-options-dev \ + libboost-regex-dev \ + libboost-system-dev \ + libboost-thread-dev \ + python3-all-dev python3-pip \ + swig libpcre3-dev libxml2-dev \ + libtbb-dev nlohmann-json3-dev \ + libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \ + libhdf5-dev libcgal-dev opencollada-dev - name: Build env: @@ -44,10 +54,18 @@ jobs: -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \ -DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 \ -DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so \ - -DCOLLADA_SUPPORT=Off \ -DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 \ -DLIBXML2_LIBRARIES=/usr/lib/x86_64-linux-gnu/libxml2.so \ + -DGLTF_SUPPORT=On \ + -DJSON_INCLUDE_DIR=/usr/include \ + -DCGAL_INCLUDE_DIR=/usr/include \ + -DGMP_INCLUDE_DIR=/usr/include \ + -DMPFR_INCLUDE_DIR=/usr/include \ + -DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \ + -DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \ -DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \ + -DOPENCOLLADA_INCLUDE_DIR=/usr/include/opencollada \ + -DOPENCOLLADA_LIBRARY_DIR=/usr/lib/opencollada/ \ ../cmake make -j $(nproc) make install diff --git a/.gitignore b/.gitignore index c49cfab341..b1783fad92 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,15 @@ /_installed-vs*-x*/ /build/ +# output directories +/cmake/out/ +/docs/out/ +/src/examples/out/ +/src/ifcmax/out/ +/src/ifcwrap/out/ +/src/qtviewer/out/ + + /win/BuildDepsCache*.txt # IfcExpressParser residue /src/ifcexpressparser/express_parser.py @@ -13,6 +22,7 @@ __pycache__ *.py.bak # Visual Studio Code files .vscode +.vs # PyCharm files .idea @@ -57,3 +67,9 @@ htmlcov # Blender *.blend1 + +# Sphinx +_build/ + +# IDS Docs +src/ifcopenshell-python/test/build diff --git a/.gitmodules b/.gitmodules index 12fecc6668..ccec1ac990 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,9 +8,6 @@ [submodule "src/svgfill"] path = src/svgfill url = https://github.com/IfcOpenShell/svgfill -[submodule "src/ifcopenshell-python/ifcopenshell/Sample-BIM-Files"] - path = src/ifcopenshell-python/ifcopenshell/Sample-BIM-Files - url = https://github.com/atomczak/Sample-BIM-Files [submodule "src/ifcopenshell-python/test/Sample-BIM-Files"] path = src/ifcopenshell-python/test/Sample-BIM-Files url = https://github.com/atomczak/Sample-BIM-Files diff --git a/README.md b/README.md index 1ef82d777d..c3100e86db 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,14 @@ For more information, see * [http://ifcopenshell.org](http://ifcopenshell.org) * [http://academy.ifcopenshell.org](http://academy.ifcopenshell.org) -[![Build Status](https://travis-ci.org/IfcOpenShell/IfcOpenShell.svg?branch=v0.6.0)](https://travis-ci.org/IfcOpenShell/IfcOpenShell) +[![Build Status](https://travis-ci.com/IfcOpenShell/IfcOpenShell.svg?branch=v0.6.0)](https://travis-ci.com/IfcOpenShell/IfcOpenShell) + +[![Financial Contributors](https://opencollective.com/opensourcebim/tiers/badge.svg)](https://opencollective.com/opensourcebim/) Prerequisites ------------- * Git -* CMake (2.6 or newer) +* CMake (3.1.3 or newer) * Windows: [Visual Studio] 2008 to 2019 (2022 not yet supported by dependency CMake) with C++ toolset (or [Visual C++ Build Tools]) or [MSYS2] + MinGW * *nix: GCC 4.7 or newer, or Clang (any version) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 549575dff1..1fed2f1189 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -38,7 +38,7 @@ MESSAGE(STATUS "Autodesk 3ds Max SDK found at ${max_sdk}") set(HAS_MAX TRUE) endif() endforeach() - +OPTION(MINIMAL_BUILD "The build is to make a minimal version of IFC converter from OCCT into IFC." OFF) OPTION(COLLADA_SUPPORT "Build IfcConvert with COLLADA support (requires OpenCOLLADA)." ON) OPTION(IFCXML_SUPPORT "Build IfcParse with ifcXML support (requires libxml2)." ON) OPTION(ENABLE_BUILD_OPTIMIZATIONS "Enable certain compiler and linker optimizations on RelWithDebInfo and Release builds." OFF) @@ -53,6 +53,7 @@ OPTION(HDF5_SUPPORT "Enable HDF5 support (requires HDF5, zlib)" ON) OPTION(USE_VLD "Use Visual Leak Detector for debugging memory leaks, MSVC-only." OFF) OPTION(USE_MMAP "Adds a command line options to parse IFC files from memory mapped files using Boost.Iostreams" OFF) OPTION(BUILD_SHARED_LIBS "Build IfcParse and IfcGeom as shared libs (SO/DLL)." OFF) +OPTION(MSVC_PARALLEL_BUILD "Multi-threaded compilation in Microsoft Visual Studio (/MP)" ON) if (${HAS_MAX}) OPTION(BUILD_IFCMAX "Build IfcMax, a 3ds Max plug-in, Windows-only." OFF) endif() @@ -66,8 +67,12 @@ IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE "Release") ENDIF() -# TODO QtViewer is deprecated ATM as it uses the 0.4 API -# OPTION(BUILD_QTVIEWER "Build IfcOpenShell Qt GUI Viewer (requires Qt 4 framework)." OFF) +if(MSVC AND MSVC_PARALLEL_BUILD) + add_definitions("/MP") +endif() + +# QtViewer requires Qt5 +OPTION(BUILD_QTVIEWER "Build IfcOpenShell Qt GUI Viewer" OFF) include(GNUInstallDirs) if((BUILD_CONVERT OR BUILD_GEOMSERVER OR BUILD_IFCPYTHON) AND (NOT BUILD_IFCGEOM)) message(STATUS "'IfcGeom' is required with current outputs") @@ -121,6 +126,7 @@ ENDMACRO() UNIFY_ENVVARS_AND_CACHE(OCC_INCLUDE_DIR) UNIFY_ENVVARS_AND_CACHE(OCC_LIBRARY_DIR) +if (NOT MINIMAL_BUILD) UNIFY_ENVVARS_AND_CACHE(OPENCOLLADA_INCLUDE_DIR) UNIFY_ENVVARS_AND_CACHE(OPENCOLLADA_LIBRARY_DIR) UNIFY_ENVVARS_AND_CACHE(LIBXML2_INCLUDE_DIR) @@ -130,17 +136,20 @@ UNIFY_ENVVARS_AND_CACHE(PYTHON_EXECUTABLE) UNIFY_ENVVARS_AND_CACHE(HDF5_INCLUDE_DIR) UNIFY_ENVVARS_AND_CACHE(HDF5_LIBRARY_DIR) UNIFY_ENVVARS_AND_CACHE(HDF5_LIBRARIES) +endif() UNIFY_ENVVARS_AND_CACHE(BOOST_ROOT) UNIFY_ENVVARS_AND_CACHE(BOOST_LIBRARYDIR) +if (NOT MINIMAL_BUILD) UNIFY_ENVVARS_AND_CACHE(CGAL_INCLUDE_DIR) UNIFY_ENVVARS_AND_CACHE(CGAL_LIBRARY_DIR) UNIFY_ENVVARS_AND_CACHE(GMP_INCLUDE_DIR) UNIFY_ENVVARS_AND_CACHE(GMP_LIBRARY_DIR) UNIFY_ENVVARS_AND_CACHE(MPFR_INCLUDE_DIR) UNIFY_ENVVARS_AND_CACHE(MPFR_LIBRARY_DIR) +endif() -if (GLTF_SUPPORT AND BUILD_CONVERT) +if (NOT MINIMAL_BUILD AND GLTF_SUPPORT AND BUILD_CONVERT) UNIFY_ENVVARS_AND_CACHE(JSON_INCLUDE_DIR) FIND_FILE(json_hpp "json.hpp" ${JSON_INCLUDE_DIR}/nlohmann) IF(json_hpp) @@ -201,10 +210,12 @@ if(USE_MMAP) add_definitions(-DUSE_MMAP) endif() +if (NOT MINIMAL_BUILD) # libxml2 is required for IFCXML (optional) and SVGFILL (mandatory) -find_package(LibXml2 REQUIRED) + find_package(LibXml2 REQUIRED) +endif() -if (IFCXML_SUPPORT) +if (NOT MINIMAL_BUILD AND IFCXML_SUPPORT) add_definitions(-DWITH_IFCXML) set(SWIG_DEFINES ${SWIG_DEFINES} -DWITH_IFCXML) endif() @@ -346,7 +357,7 @@ endif() endif(BUILD_IFCGEOM) -IF(COLLADA_SUPPORT) +IF(NOT MINIMAL_BUILD AND COLLADA_SUPPORT) # Find OpenCOLLADA IF("${OPENCOLLADA_INCLUDE_DIR}" STREQUAL "") MESSAGE(STATUS "No OpenCOLLADA include directory specified") @@ -426,7 +437,7 @@ IF(COLLADA_SUPPORT) ENDIF() ENDIF() -if(HDF5_SUPPORT) +if(NOT MINIMAL_BUILD AND HDF5_SUPPORT) IF("${HDF5_INCLUDE_DIR}" STREQUAL "") MESSAGE(STATUS "No HDF5 include directory specified") ElSE() @@ -804,7 +815,7 @@ INSTALL(TARGETS IfcConvert endif(BUILD_CONVERT) # IfcGeomServer -if(BUILD_GEOMSERVER) +if(NOT MINIMAL_BUILD AND BUILD_GEOMSERVER) file(GLOB CPP_FILES ../src/ifcgeomserver/*.cpp) file(GLOB H_FILES ../src/ifcgeomserver/*.h) @@ -858,7 +869,7 @@ IF(BUILD_DOCUMENTATION) ADD_SUBDIRECTORY(../docs docs) ENDIF() -IF(BUILD_IFCPYTHON) +IF(NOT MINIMAL_BUILD AND BUILD_IFCPYTHON) ADD_SUBDIRECTORY(../src/ifcwrap ifcwrap) ENDIF() @@ -866,11 +877,12 @@ IF(BUILD_EXAMPLES) ADD_SUBDIRECTORY(../src/examples examples) ENDIF() -IF(BUILD_IFCMAX) +IF(NOT MINIMAL_BUILD AND BUILD_IFCMAX) ADD_SUBDIRECTORY(../src/ifcmax ifcmax) ENDIF() - +if (NOT MINIMAL_BUILD) ADD_SUBDIRECTORY(../src/svgfill svgfill) +endif() # CMake installation targets INSTALL(FILES ${IFCPARSE_H_FILES} @@ -915,6 +927,9 @@ INSTALL(FILES ${SERIALIZERS_S_FILES} ) endif() +IF(BUILD_QTVIEWER) + ADD_SUBDIRECTORY(../src/qtviewer qtviewer) +endif() list(APPEND CPACK_SOURCE_IGNORE_FILES .git diff --git a/nix/build-all.py b/nix/build-all.py index 3ed99e8382..f26a09b944 100644 --- a/nix/build-all.py +++ b/nix/build-all.py @@ -508,7 +508,7 @@ if USE_OCCT and "occ" in targets: "-DBUILD_MODULE_Draw=0", "-DBUILD_RELEASE_DISABLE_EXCEPTIONS=Off" ], - download_url = "https://git.dev.opencascade.org/repos/occt.git", + download_url = "https://github.com/Open-Cascade-SAS/OCCT", download_name = "occt", download_tool=download_tool_git, patch=None if OCCT_VERSION >= "7.4" else "./patches/occt/enable-exception-handling.patch", diff --git a/src/bcf/src/bcf/v3/bcfxml.py b/src/bcf/src/bcf/v3/bcfxml.py index 429bb2258a..0aa5925bdf 100644 --- a/src/bcf/src/bcf/v3/bcfxml.py +++ b/src/bcf/src/bcf/v3/bcfxml.py @@ -646,7 +646,7 @@ class BcfXml: def get_comments(self, guid): comments = {} data = self._read_xml(os.path.join(guid, "markup.bcf"), "markup.xsd") - if "Comments" not in data["Topics"]: + if "Comments" not in data["Topic"]: return comments for item in data["Topic"]["Comments"].get("Comment", []): diff --git a/src/blenderbim/Makefile b/src/blenderbim/Makefile index a18b59d45e..fc2c644ea3 100644 --- a/src/blenderbim/Makefile +++ b/src/blenderbim/Makefile @@ -115,7 +115,7 @@ endif cp -r blenderbim/* dist/blenderbim/ # Provides IfcOpenShell Python functionality - cd dist/working && wget https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-$(PYNUMBER)-v0.7.0-2985bba-$(PLATFORM)64.zip + cd dist/working && wget https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-$(PYNUMBER)-v0.7.0-cb8cfd7-$(PLATFORM)64.zip cd dist/working && unzip ifcopenshell-python* cp -r dist/working/ifcopenshell dist/blenderbim/libs/site/packages/ @@ -534,11 +534,19 @@ test-core: .PHONY: test-bim test-bim: +ifndef MODULE pytest test/bim +else + pytest test/bim -m "$(MODULE)" ./ --maxfail=1 +endif .PHONY: test-tool test-tool: +ifndef MODULE pytest test/tool +else + pytest test/tool/test_$(MODULE).py +endif .PHONY: qa qa: diff --git a/src/blenderbim/blenderbim/bim/__init__.py b/src/blenderbim/blenderbim/bim/__init__.py index da0194dcec..c29a3f9298 100644 --- a/src/blenderbim/blenderbim/bim/__init__.py +++ b/src/blenderbim/blenderbim/bim/__init__.py @@ -27,6 +27,7 @@ modules = { "root": None, "unit": None, "model": None, + "cad": None, "georeference": None, "context": None, "drawing": None, @@ -130,7 +131,8 @@ for mod in modules.values(): def on_register(scene): handler.setDefaultProperties(scene) - bpy.app.handlers.depsgraph_update_post.remove(on_register) + if not bpy.app.background: + bpy.app.handlers.depsgraph_update_post.remove(on_register) def register(): diff --git a/src/blenderbim/blenderbim/bim/data/pset/EPset_Annotation.ifc b/src/blenderbim/blenderbim/bim/data/pset/EPset_Annotation.ifc new file mode 100644 index 0000000000..78742d16b2 --- /dev/null +++ b/src/blenderbim/blenderbim/bim/data/pset/EPset_Annotation.ifc @@ -0,0 +1,13 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION((),'2;1'); +FILE_NAME('EPset_Annotation.ifc','2020-01-01T00:00:00',(),(),'EPset_Annotation','EPset_Annotation',$); +FILE_SCHEMA(('IFC4')); +ENDSEC; +DATA; +#1=IFCPROPERTYSETTEMPLATE('3VuPUwdCD2Qx3XDDRs0R1N',$,'EPset_Annotation','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation',(#2,#3)); +#2=IFCSIMPLEPROPERTYTEMPLATE('2P7JN79n96Q9pElZ83LKe4',$,'ZIndex','',.P_SINGLEVALUE.,'IfcInteger',$,$,$,$,$,.READWRITE.); +#3=IFCSIMPLEPROPERTYTEMPLATE('1Wpx_r2xj1_9w5JpI0QRJy',$,'Symbol','',.P_ENUMERATEDVALUE.,'IfcLabel',$,#4,$,$,$,.READWRITE.); +#4=IFCPROPERTYENUMERATION('Symbol',(IFCLABEL('rectangle-tag'), IFCLABEL('door-tag')),$); +ENDSEC; +END-ISO-10303-21; diff --git a/src/blenderbim/blenderbim/bim/data/pset/EPset_Drawing.ifc b/src/blenderbim/blenderbim/bim/data/pset/EPset_Drawing.ifc index 49a45176d1..3883e8ef5f 100644 --- a/src/blenderbim/blenderbim/bim/data/pset/EPset_Drawing.ifc +++ b/src/blenderbim/blenderbim/bim/data/pset/EPset_Drawing.ifc @@ -5,12 +5,20 @@ FILE_NAME('EPset_Drawing.ifc','2020-01-01T00:00:00',(),(),'EPset_Drawing','EPset FILE_SCHEMA(('IFC4')); ENDSEC; DATA; -#1=IFCPROPERTYSETTEMPLATE('2JhNIvqZrFnAgxfhK0XVQX',$,'EPset_Drawing','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation',(#2,#3,#4,#5,#6,#7)); +#1=IFCPROPERTYSETTEMPLATE('2JhNIvqZrFnAgxfhK0XVQX',$,'EPset_Drawing','',.PSET_OCCURRENCEDRIVEN.,'IfcAnnotation',(#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15)); #2=IFCSIMPLEPROPERTYTEMPLATE('23JavTMk98ZxXhrUEnjAcf',$,'TargetView','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.); #3=IFCSIMPLEPROPERTYTEMPLATE('1yVWUt5H9DAOuu0OaMMLpe',$,'Scale','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.); #4=IFCSIMPLEPROPERTYTEMPLATE('3gsuPBtU93b8f0gg1pjkq6',$,'HumanScale','',.P_SINGLEVALUE.,'IfcLabel',$,$,$,$,$,.READWRITE.); #5=IFCSIMPLEPROPERTYTEMPLATE('0AK5C2UpL4$eaac2LszAx$',$,'HasUnderlay','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.); #6=IFCSIMPLEPROPERTYTEMPLATE('2j2ZEZR8X5tONm7kli5hM6',$,'HasLinework','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.); #7=IFCSIMPLEPROPERTYTEMPLATE('1ttChRysH9UuEX2FeMj5Hu',$,'HasAnnotation','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.); +#8=IFCSIMPLEPROPERTYTEMPLATE('2NPPxuABv1huDTVh32TFgw',$,'GlobalReferencing','',.P_SINGLEVALUE.,'IfcBoolean',$,$,$,$,$,.READWRITE.); +#9=IFCSIMPLEPROPERTYTEMPLATE('10hT_1zrzEbRRKMXYAWvtD',$,'Metadata','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.); +#10=IFCSIMPLEPROPERTYTEMPLATE('3Z0BXPSG5CWgtI33ioV7aj',$,'Include','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.); +#11=IFCSIMPLEPROPERTYTEMPLATE('1RVts_g3PAw98PJA2yL3bO',$,'Exclude','',.P_SINGLEVALUE.,'IfcText',$,$,$,$,$,.READWRITE.); +#12=IFCSIMPLEPROPERTYTEMPLATE('0c1$8NpYDEaBiJrj16jHIo',$,'Stylesheet','',.P_SINGLEVALUE.,'IfcURIReference',$,$,$,$,$,.READWRITE.); +#13=IFCSIMPLEPROPERTYTEMPLATE('3mRF52q81FQB$h4oTh7M45',$,'Markers','',.P_SINGLEVALUE.,'IfcURIReference',$,$,$,$,$,.READWRITE.); +#14=IFCSIMPLEPROPERTYTEMPLATE('1rhr_0N3LDtuORcEJP0KXM',$,'Symbols','',.P_SINGLEVALUE.,'IfcURIReference',$,$,$,$,$,.READWRITE.); +#15=IFCSIMPLEPROPERTYTEMPLATE('2sHDBuW7P4TROy$hL2w7ct',$,'Patterns','',.P_SINGLEVALUE.,'IfcURIReference',$,$,$,$,$,.READWRITE.); ENDSEC; END-ISO-10303-21; diff --git a/src/blenderbim/blenderbim/bim/data/styles/default.css b/src/blenderbim/blenderbim/bim/data/styles/default.css index 2a5aadf779..e87a177590 100644 --- a/src/blenderbim/blenderbim/bim/data/styles/default.css +++ b/src/blenderbim/blenderbim/bim/data/styles/default.css @@ -23,21 +23,27 @@ text { fill: black; stroke: none; } .cut { fill: black; stroke: black; stroke-linecap: 'round'; stroke-width: 0.35; fill-rule: evenodd; } .projection { fill: white; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; } .annotation { fill: none; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; } -.solid {} .IfcAnnotation { fill: none; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; } -.PredefinedType-MISC { fill: red; stroke: blue; stroke-width: 1; } +.PredefinedType-LINEWORK { stroke: black; stroke-width: 0.25; } +.PredefinedType-BACKGROUND { stroke: black; stroke-width: 0.18; } .PredefinedType-GRID { marker-start: url(#grid-marker); marker-end: url(#grid-marker); } +.PredefinedType-SECTION { stroke-dasharray: 12.5, 3, 3, 3; } .PredefinedType-SECTIONLEVEL { marker-start: url(#section-level-marker); stroke-dasharray: 12.5, 3, 3, 3; } .PredefinedType-PLANLEVEL { marker-end: url(#plan-level-marker); } .PredefinedType-DIMENSION { marker-start: url(#dimension-marker-start); marker-end: url(#dimension-marker-end); } +.PredefinedType-ANGLE { marker-start: url(#angle-marker-start); marker-end: url(#angle-marker-end); } +.PredefinedType-RADIUS { marker-end: url(#radius-marker-end); } +.PredefinedType-DIAMETER { marker-start: url(#diameter-marker-start); marker-end: url(#diameter-marker-end); } .PredefinedType-HIDDENLINE { stroke-dasharray: 3, 2; } -.PredefinedType-STAIR { marker-start: url(#stair-marker-start); marker-end: url(#stair-marker-end); } +.PredefinedType-STAIRARROW { marker-start: url(#stair-marker-start); marker-end: url(#stair-marker-end); } .PredefinedType-BOUNDARY { fill: none; stroke: red; stroke-width: 1; stroke-dasharray: 12, 4, 3, 4, 3, 4; } +.PredefinedType-BATTING { marker-start: url(#batting); stroke: none; } +.PredefinedType-SEALANT { fill: url(#crosshatch1); stroke-width: 0.25; } +.PredefinedType-FILLAREA { fill: white; stroke: none; } +.PredefinedType-BREAKLINE { fill: none; stroke: black; stroke-width: 0.25; marker-mid: url(#breakline-marker); } .PredefinedType-TEXT { fill: black; stroke: none; } path.PredefinedType-TEXTLEADER { marker-end: url(#leader-marker); } text.PredefinedType-TEXTLEADER { fill: black; stroke: none; } -.break { fill: white; } -.breakline { fill: none; stroke: black; stroke-linecap: 'round'; stroke-width: 0.25; marker-mid: url(#breakline-marker); } .material-blank { fill: white; } .material-diagonal1 { fill: url(#diagonal1); } .material-diagonal2 { fill: url(#diagonal2); } @@ -54,3 +60,8 @@ text.PredefinedType-TEXTLEADER { fill: black; stroke: none; } .material-sand { fill: url(#sand); } .material-concrete { fill: url(#concrete); stroke-width: 0.5; } .IfcSpace { fill: none; stroke: none; } +.PredefinedType-STUD { stroke: black; stroke-width: 1; } +.PredefinedType-WOOD { fill: url(#wood); stroke: black; stroke-width: 0.5; } +.PredefinedType-STEEL { fill: url(#steel); stroke: black; stroke-width: 0.5; } +.PredefinedType-CONCRETE { fill: url(#concrete); stroke: black; stroke-width: 0.5; } +.PredefinedType-PLASTERBOARD { fill: url(#sand); stroke: black; stroke-width: 0.25; } diff --git a/src/blenderbim/blenderbim/bim/data/templates/markers.svg b/src/blenderbim/blenderbim/bim/data/templates/markers.svg index 3ba0be893a..87ba553db2 100644 --- a/src/blenderbim/blenderbim/bim/data/templates/markers.svg +++ b/src/blenderbim/blenderbim/bim/data/templates/markers.svg @@ -1,5 +1,9 @@ + + + + @@ -12,6 +16,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -53,7 +86,7 @@ - + diff --git a/src/blenderbim/blenderbim/bim/data/templates/patterns.svg b/src/blenderbim/blenderbim/bim/data/templates/patterns.svg index 3a9ea5c53c..fffeff04e7 100644 --- a/src/blenderbim/blenderbim/bim/data/templates/patterns.svg +++ b/src/blenderbim/blenderbim/bim/data/templates/patterns.svg @@ -3,6 +3,10 @@ + + + + @@ -80,6 +84,9 @@ + + + 300: - self.merge_materials_by_colour() - self.profile_code("Merging by colour") self.add_project_to_scene() self.profile_code("Add project to scene") if self.ifc_import_settings.should_clean_mesh and len(self.file.by_type("IfcElement")) < 1000: self.clean_mesh() self.profile_code("Mesh cleaning") + if self.ifc_import_settings.should_merge_materials_by_colour or len(self.material_creator.materials) > 300: + self.merge_materials_by_colour() + self.profile_code("Merging by colour") self.set_default_context() self.profile_code("Setting default context") self.update_progress(100) @@ -269,7 +272,9 @@ class IfcImporter: def is_point_far_away(self, point, is_meters=True): # Locations greater than 1km are not considered "small sites" according to the georeferencing guide - limit = 1000 if is_meters else (1000 / self.unit_scale) + # Users can configure this if they have to handle larger sites but beware of surveying precision + limit = self.ifc_import_settings.distance_limit + limit = limit if is_meters else (limit / self.unit_scale) coords = point if hasattr(point, "Coordinates"): coords = point.Coordinates @@ -304,14 +309,24 @@ class IfcImporter: self.settings_2d.set_context_ids(self.plan_contexts) def process_element_filter(self): + offset = self.ifc_import_settings.element_offset + offset_limit = offset + self.ifc_import_settings.element_limit + if self.ifc_import_settings.has_filter: - self.elements = set(self.ifc_import_settings.elements) + self.elements = self.ifc_import_settings.elements + if isinstance(self.elements, set): + self.elements = list(self.elements) # TODO: enable filtering for annotations self.annotations = set(self.file.by_type("IfcAnnotation")) else: - self.elements = set(self.file.by_type("IfcElement")) + self.elements = self.file.by_type("IfcElement") self.annotations = set(self.file.by_type("IfcAnnotation")) + if self.ifc_import_settings.is_coordinating: + self.elements = [e for e in self.elements if e.Representation and not e.is_a("IfcFeatureElement")] + + self.elements = set(self.elements[offset:offset_limit]) + if self.ifc_import_settings.has_filter and self.ifc_import_settings.should_filter_spatial_elements: self.spatial_elements = self.get_spatial_elements_filtered_by_elements(self.elements) else: @@ -354,15 +369,26 @@ class IfcImporter: "type": "IfcSweptDiskSolid", } return True + + if not self.ifc_import_settings.should_use_native_meshes: + return False # Performance improvements only occur on edge cases currently + # FacetedBreps (without voids) are meshes. See #841. - # Commented out as seems currently too slow. - # if self.is_native_faceted_brep(representations): - # self.native_data[element.GlobalId] = { - # "representations": representations, - # "representation": self.get_body_representation(element.Representation.Representations), - # "type": "IfcFacetedBrep", - # } - # return True + if self.is_native_faceted_brep(representations): + self.native_data[element.GlobalId] = { + "representations": representations, + "representation": self.get_body_representation(element.Representation.Representations), + "type": "IfcFacetedBrep", + } + return True + + if self.is_native_face_based_surface_model(representations): + self.native_data[element.GlobalId] = { + "representations": representations, + "representation": self.get_body_representation(element.Representation.Representations), + "type": "IfcFaceBasedSurfaceModel", + } + return True def is_native_swept_disk_solid(self, representations): for representation in representations: @@ -378,6 +404,13 @@ class IfcImporter: return False return True + def is_native_face_based_surface_model(self, representations): + for representation in representations: + for i in representation["raw"].Items: + if i.is_a() != "IfcFaceBasedSurfaceModel": + return False + return True + def get_products_from_shape_representation(self, element): products = [pr.ShapeOfProduct[0] for pr in element.OfProductRepresentation] for rep_map in element.RepresentationMap: @@ -391,6 +424,8 @@ class IfcImporter: props = bpy.context.scene.BIMGeoreferenceProperties if props.has_blender_offset: return + if self.ifc_import_settings.false_origin: + return self.set_manual_blender_offset() if self.file.schema == "IFC2X3": project = self.file.by_type("IfcProject")[0] else: @@ -403,6 +438,13 @@ class IfcImporter: return self.guess_georeferencing(building) return self.guess_absolute_coordinate() + def set_manual_blender_offset(self): + props = bpy.context.scene.BIMGeoreferenceProperties + props.blender_eastings = str(self.ifc_import_settings.false_origin[0]) + props.blender_northings = str(self.ifc_import_settings.false_origin[1]) + props.blender_orthogonal_height = str(self.ifc_import_settings.false_origin[2]) + props.has_blender_offset = True + def guess_georeferencing(self, element): if not element.ObjectPlacement or not element.ObjectPlacement.is_a("IfcLocalPlacement"): return @@ -419,10 +461,12 @@ class IfcImporter: props.has_blender_offset = True def guess_absolute_coordinate(self): - # Civil BIM applications like to work in absolute coordinates, where the ObjectPlacement is 0,0,0 but each - # individual coordinate of the shape representation is in absolute values. + # Civil BIM applications like to work in absolute coordinates, where the + # ObjectPlacement is usually 0,0,0 (but not always, so we'll need to + # check for the actual transformation) but each individual coordinate of + # the shape representation is in absolute values. offset_point = self.get_offset_point() - if not offset_point: + if offset_point is None: return props = bpy.context.scene.BIMGeoreferenceProperties props.blender_eastings = str(offset_point[0]) @@ -432,34 +476,41 @@ class IfcImporter: def get_offset_point(self): elements_checked = 0 - # If more than these points aren't far away, the file probably isn't absolutely positioned - element_checking_threshold = 100 - if self.file.schema == "IFC2X3": - # IFC2X3 does not have IfcCartesianPointList3D - point_lists = [] - else: - point_lists = self.file.by_type("IfcCartesianPointList3D") - for point_list in point_lists: - elements_checked += 1 - if elements_checked > element_checking_threshold: - return - for i, point in enumerate(point_list.CoordList): - if len(point) == 3 and self.is_point_far_away(point, is_meters=False): - return point - - for point in self.file.by_type("IfcCartesianPoint"): - is_used_in_placement = False - for inverse in self.file.get_inverse(point): - if inverse.is_a("IfcAxis2Placement3D"): - is_used_in_placement = True - break - if is_used_in_placement: + # If more than these elements aren't far away, the file probably isn't absolutely positioned + element_checking_threshold = 10 + for element in self.file.by_type("IfcElement"): + if not element.Representation: continue elements_checked += 1 if elements_checked > element_checking_threshold: return - if len(point.Coordinates) == 3 and self.is_point_far_away(point, is_meters=False): - return point.Coordinates + if not self.does_element_likely_have_geometry_far_away(element): + continue + shape = ifcopenshell.geom.create_shape(self.settings, element) + m = shape.transformation.matrix.data + mat = np.array( + ([m[0], m[3], m[6], m[9]], [m[1], m[4], m[7], m[10]], [m[2], m[5], m[8], m[11]], [0, 0, 0, 1]) + ) + point = np.array( + ( + shape.geometry.verts[0] / self.unit_scale, + shape.geometry.verts[1] / self.unit_scale, + shape.geometry.verts[2] / self.unit_scale, + 0.0, + ) + ) + return mat @ point + + def does_element_likely_have_geometry_far_away(self, element): + for representation in element.Representation.Representations: + for subelement in self.file.traverse(representation): + if subelement.is_a("IfcCartesianPointList3D"): + for point in subelement.CoordList: + if len(point) == 3 and self.is_point_far_away(point, is_meters=False): + return True + if subelement.is_a("IfcCartesianPoint"): + if len(subelement.Coordinates) == 3 and self.is_point_far_away(subelement, is_meters=False): + return True def apply_blender_offset_to_matrix_world(self, obj, matrix): props = bpy.context.scene.BIMGeoreferenceProperties @@ -477,11 +528,6 @@ class IfcImporter: float(props.blender_x_axis_ordinate), ) - if self.ifc_import_settings.should_offset_model: - matrix[0, 3] += self.ifc_import_settings.model_offset_coordinates[0] - matrix[1, 3] += self.ifc_import_settings.model_offset_coordinates[1] - matrix[2, 3] += self.ifc_import_settings.model_offset_coordinates[2] - return mathutils.Matrix(matrix.tolist()) def find_decomposed_ifc_class(self, element, ifc_class): @@ -505,6 +551,8 @@ class IfcImporter: if grid.Representation: shape = ifcopenshell.geom.create_shape(self.settings_2d, grid) grid_obj = self.create_product(grid, shape) + grid_obj.lock_location = (True, True, True) + grid_obj.lock_rotation = (True, True, True) collection = bpy.data.collections.new(self.get_name(grid)) u_axes = bpy.data.collections.new("UAxes") collection.children.link(u_axes) @@ -522,6 +570,8 @@ class IfcImporter: shape = ifcopenshell.geom.create_shape(self.settings_2d, axis.AxisCurve) mesh = self.create_mesh(axis, shape) obj = bpy.data.objects.new(f"IfcGridAxis/{axis.AxisTag}", mesh) + obj.lock_location = (True, True, True) + obj.lock_rotation = (True, True, True) self.link_element(axis, obj) self.set_matrix_world(obj, grid_obj.matrix_world) grid_collection.objects.link(obj) @@ -572,13 +622,20 @@ class IfcImporter: return representation_map def create_native_elements(self): - total = 0 + progress = 0 checkpoint = time.time() + total = len(self.native_elements) for element in self.native_elements: - total += 1 - if total % 250 == 0: - print("{} elements processed in {:.2f}s ...".format(total, time.time() - checkpoint)) + progress += 1 + if progress % 250 == 0: + percent = round(progress / total * 100) + print( + "{} / {} ({}%) elements processed in {:.2f}s ...".format( + progress, total, percent, time.time() - checkpoint + ) + ) checkpoint = time.time() + self.incrementally_merge_objects() native_data = self.native_data[element.GlobalId] representation = native_data["representation"] if not representation: @@ -591,6 +648,8 @@ class IfcImporter: mesh = self.create_native_swept_disk_solid(element, mesh_name) elif native_data["type"] == "IfcFacetedBrep": mesh = self.create_native_faceted_brep(element, mesh_name) + elif native_data["type"] == "IfcFaceBasedSurfaceModel": + mesh = self.create_native_faceted_brep(element, mesh_name) mesh.BIMMeshProperties.ifc_definition_id = representation.id() mesh.name = mesh_name self.meshes[mesh_name] = mesh @@ -630,26 +689,32 @@ class IfcImporter: ) else: iterator = ifcopenshell.geom.iterator(self.settings, self.file, include=products) - cache = IfcStore.get_cache() - if cache: - iterator.set_cache(cache) + if self.ifc_import_settings.should_cache: + cache = IfcStore.get_cache() + if cache: + iterator.set_cache(cache) valid_file = iterator.initialize() if not valid_file: return results checkpoint = time.time() - total = 0 + progress = 0 + total = len(products) start_progress = self.progress progress_range = 85 - start_progress while True: - total += 1 - if total % 250 == 0: + progress += 1 + if progress % 250 == 0: + percent_created = round(progress / total * 100) + percent_preprocessed = iterator.progress() + percent_average = (percent_created + percent_preprocessed) / 2 print( - "{} ({}%) elements processed in {:.2f}s ...".format( - total, iterator.progress(), time.time() - checkpoint + "{} / {} ({}% created, {}% preprocessed) elements processed in {:.2f}s ...".format( + progress, total, percent_created, percent_preprocessed, time.time() - checkpoint ) ) checkpoint = time.time() - self.update_progress((iterator.progress() / 100 * progress_range) + start_progress) + self.update_progress((percent_average / 100 * progress_range) + start_progress) + self.incrementally_merge_objects() shape = iterator.get() if shape: product = self.file.by_id(shape.guid) @@ -668,6 +733,19 @@ class IfcImporter: print("Done creating geometry") return results + def incrementally_merge_objects(self): + if not self.ifc_import_settings.is_coordinating: + return + if self.ifc_import_settings.merge_mode == "IFC_CLASS": + self.merge_by_class() + self.profile_code("Merging by class") + elif self.ifc_import_settings.merge_mode == "IFC_TYPE": + self.merge_by_type() + self.profile_code("Merging by type") + elif self.ifc_import_settings.merge_mode == "MATERIAL": + self.merge_by_material() + self.profile_code("Merging by material") + def create_structural_items(self): # Create structural collections self.structural_member_collection = bpy.data.collections.new("Members") @@ -778,9 +856,10 @@ class IfcImporter: ) else: iterator = ifcopenshell.geom.iterator(self.settings_2d, self.file, include=products) - cache = IfcStore.get_cache() - if cache: - iterator.set_cache(cache) + if self.ifc_import_settings.should_cache: + cache = IfcStore.get_cache() + if cache: + iterator.set_cache(cache) valid_file = iterator.initialize() if not valid_file: return results @@ -794,7 +873,7 @@ class IfcImporter: shape = iterator.get() if shape: product = self.file.by_id(shape.guid) - self.create_product(self.file.by_id(shape.guid), shape) + self.create_product(product, shape) results.add(product) if not iterator.next(): break @@ -851,8 +930,13 @@ class IfcImporter: def get_representation_item_material_name(self, item): if not item.StyledByItem: return - style_ids = [e.id() for e in self.file.traverse(item.StyledByItem[0]) if e.is_a("IfcSurfaceStyle")] - return style_ids[0] if style_ids else None + styles = list(item.StyledByItem[0].Styles) + while styles: + style = styles.pop() + if style.is_a("IfcSurfaceStyle"): + return style.id() + elif style.is_a("IfcPresentationStyleAssignment"): + styles.extend(style.Styles) def create_native_faceted_brep(self, element, mesh_name): # TODO: georeferencing? @@ -901,22 +985,32 @@ class IfcImporter: self.convert_representation(item.MappingSource.MappedRepresentation) elif item.is_a() == "IfcFacetedBrep": self.convert_representation_item_faceted_brep(item) + elif item.is_a() == "IfcFaceBasedSurfaceModel": + self.convert_representation_item_face_based_surface_model(item) + + def convert_representation_item_face_based_surface_model(self, item): + mesh = item.get_info_2(recursive=True) + for face_set in mesh["FbsmFaces"]: + self.convert_representation_item_face_set(item, face_set) def convert_representation_item_faceted_brep(self, item): + mesh = item.get_info_2(recursive=True) + return self.convert_representation_item_face_set(item, mesh["Outer"]) + + def convert_representation_item_face_set(self, item, mesh): # On a few occasions, we flatten a list. This seems to be the most efficient way to do it. # https://stackoverflow.com/questions/20112776/how-do-i-flatten-a-list-of-lists-nested-lists - mesh = item.get_info_2(recursive=True) # For huge face sets it might be better to do a "flatmap" instead of sum() # bounds = sum((f["Bounds"] for f in mesh["Outer"]["CfsFaces"] if len(f["Bounds"]) == 1), ()) - bounds = tuple(chain.from_iterable(f["Bounds"] for f in mesh["Outer"]["CfsFaces"] if len(f["Bounds"]) == 1)) + bounds = tuple(chain.from_iterable(f["Bounds"] for f in mesh["CfsFaces"] if len(f["Bounds"]) == 1)) # Here are some untested alternatives, are they faster? # bounds = tuple((f["Bounds"] for f in mesh["Outer"]["CfsFaces"] if len(f["Bounds"]) == 1))[0] # bounds = chain.from_iterable(f["Bounds"] for f in mesh["Outer"]["CfsFaces"] if len(f["Bounds"]) == 1) polygons = [[(p["id"], p["Coordinates"]) for p in b["Bound"]["Polygon"]] for b in bounds] - for face in mesh["Outer"]["CfsFaces"]: + for face in mesh["CfsFaces"]: # Blender cannot handle faces with holes. if len(face["Bounds"]) > 1: inner_bounds = [] @@ -1046,33 +1140,74 @@ class IfcImporter: def merge_by_class(self): merge_set = {} - for obj in self.added_data.values(): - if not isinstance(obj, bpy.types.Object): + id_set = {} + for ifc_definition_id, obj in self.added_data.items(): + if not isinstance(obj, bpy.types.Object) or not obj.data: continue - if "/" not in obj.name or "IfcRelAggregates" in obj.users_collection[0].name: + element = self.file.by_id(ifc_definition_id) + if not element.is_a("IfcElement"): continue - merge_set.setdefault(obj.name.split("/")[0], []).append(obj) - self.merge_objects(merge_set) + merge_set.setdefault(element.is_a(), []).append(obj) + id_set.setdefault(element.is_a(), []).append(ifc_definition_id) + self.merge_objects(merge_set, id_set) + + def merge_by_type(self): + merge_set = {} + id_set = {} + for ifc_definition_id, obj in self.added_data.items(): + if not isinstance(obj, bpy.types.Object) or not obj.data: + continue + element = self.file.by_id(ifc_definition_id) + if not element.is_a("IfcElement"): + continue + element_type = ifcopenshell.util.element.get_type(element) + if not element_type: + continue + merge_key = str(element_type.id()) + "-" + element_type.Name or "Unnamed" + merge_set.setdefault(merge_key, []).append(obj) + id_set.setdefault(merge_key, []).append(ifc_definition_id) + self.merge_objects(merge_set, id_set) def merge_by_material(self): merge_set = {} - for obj in self.added_data.values(): - if not isinstance(obj, bpy.types.Object): + id_set = {} + for ifc_definition_id, obj in self.added_data.items(): + if not isinstance(obj, bpy.types.Object) or not obj.data: continue - if "/" not in obj.name or "IfcRelAggregates" in obj.users_collection[0].name: + element = self.file.by_id(ifc_definition_id) + if not element.is_a("IfcElement"): continue - if not obj.material_slots: - merge_set.setdefault("no-material", []).append(obj) - else: - merge_set.setdefault(obj.material_slots[0].name, []).append(obj) - self.merge_objects(merge_set) + merge_key = obj.material_slots[0].name if obj.material_slots else "no-material" + merge_set.setdefault(merge_key, []).append(obj) + id_set.setdefault(merge_key, []).append(ifc_definition_id) + self.merge_objects(merge_set, id_set) - def merge_objects(self, merge_set): - for ifc_class, objs in merge_set.items(): - context_override = {} - context_override["object"] = context_override["active_object"] = objs[0] - context_override["selected_objects"] = context_override["selected_editable_objects"] = objs - bpy.ops.object.join(context_override) + def merge_objects(self, merge_set, id_set): + total_objs = sum([len(o) for o in merge_set.values()]) + cumulative_total = 0 + merge_set = {k: v for k, v in sorted(merge_set.items(), key=lambda i: len(i[1]), reverse=True)} + for group_name, objs in merge_set.items(): + total_group_objs = len(objs) + if total_group_objs < 10: + continue + merge_potential = total_objs - cumulative_total + if merge_potential < 250: + print("Merge target achieved") + return + cumulative_total += total_group_objs + print(f"Merging {total_group_objs} objects, {merge_potential} potentially remaining -", group_name) + try: + target = objs[0] + target.data = target.data.copy() + context_override = {} + context_override["object"] = context_override["active_object"] = target + context_override["selected_objects"] = context_override["selected_editable_objects"] = objs + bpy.ops.object.join(context_override) + target.data.name += "-merge" + for ifc_definition_id in id_set[group_name][1:]: + del self.added_data[ifc_definition_id] + except: + print("Merge failed") def merge_materials_by_colour(self): cleaned_materials = {} @@ -1282,11 +1417,18 @@ class IfcImporter: for material_definition_representation in self.file.by_type("IfcMaterialDefinitionRepresentation"): material = material_definition_representation.RepresentedMaterial + blender_material = self.material_creator.materials[material.id()] for representation in material_definition_representation.Representations: - for style in [e for e in self.file.traverse(representation) if e.is_a("IfcSurfaceStyle")]: - blender_material = self.material_creator.materials[material.id()] - self.create_style(style, blender_material) - parsed_styles.add(style.id()) + styles = [] + for styled_item in representation.Items: + styles.extend(styled_item.Styles) + while styles: + style = styles.pop() + if style.is_a("IfcSurfaceStyle"): + self.create_style(style, blender_material) + parsed_styles.add(style.id()) + elif style.is_a("IfcPresentationStyleAssignment"): + styles.extend(style.Styles) for style in self.file.by_type("IfcSurfaceStyle"): if style.id() in parsed_styles: @@ -1509,9 +1651,10 @@ class IfcImporter: return self.structural_member_collection.objects.link(obj) elif element.is_a("IfcStructuralConnection"): return self.structural_connection_collection.objects.link(obj) - elif element.is_a("IfcAnnotation") and self.is_drawing_annotation(element): - group = [r for r in element.HasAssignments if r.is_a("IfcRelAssignsToGroup")][0].RelatingGroup - return self.collections[group.GlobalId].objects.link(obj) + elif element.is_a("IfcAnnotation"): + group = self.get_drawing_group(element) + if group: + return self.collections[group.GlobalId].objects.link(obj) container = ifcopenshell.util.element.get_container(element) if container: @@ -1531,32 +1674,16 @@ class IfcImporter: return element.ObjectType in [ "DIMENSION", "EQUAL_DIMENSION", - "MISC", "PLAN_LEVEL", "SECTION_LEVEL", "STAIR_ARROW", "TEXT_LEADER", ] - def is_drawing_annotation(self, element): - return element.ObjectType in [ - "BREAKLINE", - "DIMENSION", - "DRAWING", - "EQUAL_DIMENSION", - "GRID", - "HIDDEN_LINE", - "MISC", - "PLAN_LEVEL", - "SECTION_LEVEL", - "STAIR_ARROW", - "TEXT", - "TEXT_LEADER", - "LEADER", - "HATCH", - "LINEWORK", - "AREA", - ] + def get_drawing_group(self, element): + for rel in element.HasAssignments or []: + if rel.is_a("IfcRelAssignsToGroup"): + return rel.RelatingGroup def get_element_matrix(self, element): result = ifcopenshell.util.placement.get_local_placement(element.ObjectPlacement) @@ -1730,15 +1857,27 @@ class IfcImporter: and geometry.verts and self.is_point_far_away((geometry.verts[0], geometry.verts[1], geometry.verts[2])) ): + m = shape.transformation.matrix.data + mat = np.array( + ([m[0], m[3], m[6], m[9]], [m[1], m[4], m[7], m[10]], [m[2], m[5], m[8], m[11]], [0, 0, 0, 1]) + ) + offset_point = np.linalg.inv(mat) @ np.array( + ( + float(props.blender_eastings), + float(props.blender_northings), + float(props.blender_orthogonal_height), + 0.0, + ) + ) verts = [None] * len(geometry.verts) for i in range(0, len(geometry.verts), 3): verts[i], verts[i + 1], verts[i + 2] = ifcopenshell.util.geolocation.enh2xyz( geometry.verts[i], geometry.verts[i + 1], geometry.verts[i + 2], - float(props.blender_eastings) * self.unit_scale, - float(props.blender_northings) * self.unit_scale, - float(props.blender_orthogonal_height) * self.unit_scale, + offset_point[0] * self.unit_scale, + offset_point[1] * self.unit_scale, + offset_point[2] * self.unit_scale, float(props.blender_x_axis_abscissa), float(props.blender_x_axis_ordinate), ) @@ -1847,14 +1986,18 @@ class IfcImportSettings: self.input_file = None self.diff_file = None self.should_use_cpu_multiprocessing = True - self.should_merge_by_class = False - self.should_merge_by_material = False + self.merge_mode = None self.should_merge_materials_by_colour = False + self.should_use_native_meshes = False self.should_clean_mesh = True + self.should_cache = True + self.is_coordinating = True self.deflection_tolerance = 0.001 self.angular_tolerance = 0.5 - self.should_offset_model = False - self.model_offset_coordinates = (0, 0, 0) + self.distance_limit = 1000 + self.false_origin = None + self.element_offset = 0 + self.element_limit = 30000 self.has_filter = None self.should_filter_spatial_elements = True self.elements = set() @@ -1872,16 +2015,18 @@ class IfcImportSettings: settings.diff_file = scene_diff.diff_json_file settings.collection_mode = props.collection_mode settings.should_use_cpu_multiprocessing = props.should_use_cpu_multiprocessing - settings.should_merge_by_class = props.should_merge_by_class - settings.should_merge_by_material = props.should_merge_by_material + settings.merge_mode = props.merge_mode settings.should_merge_materials_by_colour = props.should_merge_materials_by_colour + settings.should_use_native_meshes = props.should_use_native_meshes settings.should_clean_mesh = props.should_clean_mesh + settings.should_cache = props.should_cache + settings.is_coordinating = props.is_coordinating settings.deflection_tolerance = props.deflection_tolerance settings.angular_tolerance = props.angular_tolerance - settings.should_offset_model = props.should_offset_model - settings.model_offset_coordinates = ( - [float(o) for o in props.model_offset_coordinates.split(",")] - if props.model_offset_coordinates - else (0, 0, 0) - ) + settings.distance_limit = props.distance_limit + settings.false_origin = [float(o) for o in props.false_origin.split(",")] if props.false_origin else None + if settings.false_origin == [0, 0, 0]: + settings.false_origin = None + settings.element_offset = props.element_offset + settings.element_limit = props.element_limit return settings diff --git a/src/blenderbim/blenderbim/bim/module/boundary/operator.py b/src/blenderbim/blenderbim/bim/module/boundary/operator.py index 2aad9c1bc2..4fd108d1fc 100644 --- a/src/blenderbim/blenderbim/bim/module/boundary/operator.py +++ b/src/blenderbim/blenderbim/bim/module/boundary/operator.py @@ -26,7 +26,7 @@ import blenderbim.bim.import_ifc as import_ifc def get_boundaries_collection(blender_space): - space_collection = bpy.data.collections.get(blender_space.name) + space_collection = bpy.data.collections.get(blender_space.name, blender_space.users_collection[0]) collection_name = f"Boundaries/{blender_space.BIMObjectProperties.ifc_definition_id}" boundaries_collection = space_collection.children.get(collection_name) if not boundaries_collection: diff --git a/src/blenderbim/blenderbim/bim/module/cad/__init__.py b/src/blenderbim/blenderbim/bim/module/cad/__init__.py new file mode 100644 index 0000000000..dd7efcb577 --- /dev/null +++ b/src/blenderbim/blenderbim/bim/module/cad/__init__.py @@ -0,0 +1,39 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2022 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + +import bpy +from . import operator, workspace + +classes = ( + operator.CadArcFrom2Points, + operator.CadArcFrom3Points, + operator.CadFillet, + operator.CadMitre, + operator.CadTrimExtend, + workspace.CadHotkey, +) + + +def register(): + if not bpy.app.background: + bpy.utils.register_tool(workspace.CadTool, after={"builtin.transform"}, separator=True, group=True) + + +def unregister(): + if not bpy.app.background: + bpy.utils.unregister_tool(workspace.CadTool) diff --git a/src/blenderbim/blenderbim/bim/module/cad/operator.py b/src/blenderbim/blenderbim/bim/module/cad/operator.py new file mode 100644 index 0000000000..c380cd3175 --- /dev/null +++ b/src/blenderbim/blenderbim/bim/module/cad/operator.py @@ -0,0 +1,345 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2020, 2021 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + +import bpy +import math +import bmesh +import mathutils +import bpy_extras +import blenderbim.tool as tool + +messages = { + "SHARED_VERTEX": "Shared Vertex, no intersection possible", + "PARALLEL_EDGES": "Edges Parallel, no intersection possible", + "NON_PLANAR_EDGES": "Non Planar Edges, no clean intersection point", +} + + +class CadTrimExtend(bpy.types.Operator): + bl_idname = "bim.cad_trim_extend" + bl_label = "CAD Trim / Extend" + + @classmethod + def poll(cls, context): + obj = context.active_object + return bool(obj) and obj.type == "MESH" + + def cancel_message(self, msg): + print(msg) + self.report({"WARNING"}, msg) + return {"CANCELLED"} + + def execute(self, context): + # final attempt to enter unfragmented bm/mesh + # ghastly, but what can I do? it works with these + # fails without. + bpy.ops.object.mode_set(mode="OBJECT") + bpy.ops.object.mode_set(mode="EDIT") + + obj = context.active_object + me = obj.data + + bm = bmesh.from_edit_mesh(me) + bm.verts.ensure_lookup_table() + bm.edges.ensure_lookup_table() + + edges = [e for e in bm.edges if e.select and not e.hide] + + if len(edges) == 2: + message = tool.Cad.do_vtx_if_appropriate(bm, edges, mode="T") + if isinstance(message, set): + msg = messages.get(message.pop()) + return self.cancel_message(msg) + bm = message + else: + return self.cancel_message("select two edges!") + + bm.verts.index_update() + bm.edges.index_update() + bmesh.update_edit_mesh(me, loop_triangles=True) + + return {"FINISHED"} + + +class CadMitre(bpy.types.Operator): + bl_idname = "bim.cad_mitre" + bl_label = "CAD Mitre" + + @classmethod + def poll(cls, context): + obj = context.active_object + return bool(obj) and obj.type == "MESH" + + def cancel_message(self, msg): + print(msg) + self.report({"WARNING"}, msg) + return {"CANCELLED"} + + def execute(self, context): + # final attempt to enter unfragmented bm/mesh + # ghastly, but what can I do? it works with these + # fails without. + bpy.ops.object.mode_set(mode="OBJECT") + bpy.ops.object.mode_set(mode="EDIT") + + obj = context.active_object + me = obj.data + + bm = bmesh.from_edit_mesh(me) + bm.verts.ensure_lookup_table() + bm.edges.ensure_lookup_table() + + edges = [e for e in bm.edges if e.select and not e.hide] + + if len(edges) == 2: + message = tool.Cad.do_vtx_if_appropriate(bm, edges, mode="V") + if isinstance(message, set): + msg = messages.get(message.pop()) + return self.cancel_message(msg) + bm = message + else: + return self.cancel_message("select two edges!") + + bm.verts.index_update() + bm.edges.index_update() + bmesh.update_edit_mesh(me, loop_triangles=True) + + return {"FINISHED"} + + +class CadFillet(bpy.types.Operator): + bl_idname = "bim.cad_fillet" + bl_label = "CAD Fillet" + bl_options = {"REGISTER", "UNDO"} + resolution: bpy.props.IntProperty(name="Arc Resolution", min=0, default=1) + radius: bpy.props.FloatProperty(name="Radius", default=0.1) + + @classmethod + def poll(cls, context): + obj = context.active_object + return obj and obj.type == "MESH" and context.mode == "EDIT_MESH" + + def draw(self, context): + layout = self.layout + for prop in self.__class__.__annotations__.keys(): + layout.prop(self, prop) + + def execute(self, context): + bpy.ops.object.mode_set(mode="OBJECT") + bpy.ops.object.mode_set(mode="EDIT") + + obj = bpy.context.active_object + cursor = obj.matrix_world.inverted() @ bpy.context.scene.cursor.location + mesh = obj.data + bm = bmesh.from_edit_mesh(mesh) + selected_edges = [e for e in bm.edges if e.select] + if len(selected_edges) != 2: + return {"CANCELLED"} + + # Assume the user has selected two edges sharing a vert, but merge verts + # just in case the vertex is coincident but not shared. + all_verts = list(set(selected_edges[0].verts) | set(selected_edges[1].verts)) + bmesh.ops.remove_doubles(bm, verts=all_verts, dist=1e-4) + + # Subdivide one of the edges to give us an extra vert to play with + # without damaging any faces that already exist. + cut = bmesh.ops.bisect_edges(bm, edges=[selected_edges[1]], cuts=1) + bm.edges.index_update() + bmesh.update_edit_mesh(mesh) + + is_wire = selected_edges[0].is_wire + + # Recover the original intention of the selected edges after our bisect operation + cut_edges = cut["geom_split"][1:] + selected_edges = [e for e in bm.edges if e.select and e not in cut_edges] + if set(selected_edges[0].verts) & set(cut_edges[0].verts): + selected_edges.append(cut_edges[0]) + elif set(selected_edges[0].verts) & set(cut_edges[1].verts): + selected_edges.append(cut_edges[1]) + + # Calculate the distance to slide each edge to make space for the fillet arc + shared_vert = list(set(selected_edges[0].verts) & set(selected_edges[1].verts))[0] + v1 = selected_edges[0].other_vert(shared_vert) + v2 = selected_edges[1].other_vert(shared_vert) + dir1 = (v1.co - shared_vert.co).normalized() + dir2 = (v2.co - shared_vert.co).normalized() + edge_angle = dir1.angle(dir2) + slide_distance = self.radius / math.tan(edge_angle / 2) + + angle = math.pi - edge_angle + fillet_v1 = shared_vert.co + (dir1 * slide_distance) + fillet_v2 = shared_vert.co + (dir2 * slide_distance) + + normal = mathutils.geometry.normal([v1.co, shared_vert.co, v2.co]) + + center = mathutils.geometry.intersect_line_line( + fillet_v1, fillet_v1 + normal.cross(dir1), fillet_v2, fillet_v2 + normal.cross(dir2) + )[0] + + v = bm.verts.new(fillet_v1) + steps = self.resolution * 4 if self.resolution else 1 + spin = bmesh.ops.spin(bm, geom=[v], axis=normal, cent=center, steps=steps, angle=angle) + + bmesh.ops.pointmerge(bm, verts=[shared_vert, v], merge_co=v.co) + bmesh.ops.pointmerge(bm, verts=[v2, spin["geom_last"][0]], merge_co=spin["geom_last"][0].co) + + # If faces are involved, then the chamfer edge protects existing faces from the newly created fillet. + # If no faces are involved, we delete the chamfer edge. + if is_wire: + chamfer_edge = [e for e in bm.edges if shared_vert in e.verts and v2 in e.verts][0] + bm.edges.remove(chamfer_edge) + + bmesh.update_edit_mesh(mesh) + mesh.update() + bm.free() + return {"FINISHED"} + + +class CadArcFrom2Points(bpy.types.Operator): + bl_idname = "bim.cad_arc_from_2_points" + bl_label = "CAD Arc from 2 Points" + bl_options = {"REGISTER", "UNDO"} + resolution: bpy.props.IntProperty(name="Arc Resolution", min=1, default=1) + should_flip: bpy.props.BoolProperty(name="Flip", description="Flip arc", default=False) + + def draw(self, context): + layout = self.layout + for prop in self.__class__.__annotations__.keys(): + layout.prop(self, prop) + + def execute(self, context): + bpy.ops.object.mode_set(mode="OBJECT") + bpy.ops.object.mode_set(mode="EDIT") + + if bpy.context.mode != "EDIT_MESH": + return {"CANCELLED"} + obj = bpy.context.active_object + region = bpy.context.region + region_3d = bpy.context.area.spaces.active.region_3d + cursor = bpy.context.scene.cursor.location + center = bpy_extras.view3d_utils.location_3d_to_region_2d(region, region_3d, cursor) + if not center: + return {"CANCELLED"} + mesh = obj.data + mw = obj.matrix_world + bm = bmesh.from_edit_mesh(mesh) + selected_verts = [v for v in bm.verts if v.select] + if len(selected_verts) != 2: + return {"CANCELLED"} + v1 = bpy_extras.view3d_utils.location_3d_to_region_2d(region, region_3d, mw @ selected_verts[0].co) + v2 = bpy_extras.view3d_utils.location_3d_to_region_2d(region, region_3d, mw @ selected_verts[1].co) + l1 = v1 - center + l2 = v2 - center + angle = l1.angle_signed(l2) + + if self.should_flip: + if angle > 0: + angle = -((math.pi * 2) - angle) + else: + angle = (math.pi * 2) + angle + + v = selected_verts[0] + bm.verts.remove(selected_verts[1]) + axis = region_3d.view_rotation @ mathutils.Vector((0, 0, 1)) + bmesh.ops.spin( + bm, + geom=[v], + axis=mw.inverted().to_quaternion() @ axis, + cent=mw.inverted() @ cursor, + steps=self.resolution * 4, + angle=-angle, + ) + bmesh.update_edit_mesh(mesh) + mesh.update() + return {"FINISHED"} + + +class CadArcFrom3Points(bpy.types.Operator): + bl_idname = "bim.cad_arc_from_3_points" + bl_label = "CAD Arc from 3 Points" + bl_options = {"REGISTER", "UNDO"} + resolution: bpy.props.IntProperty(name="Arc Resolution", min=1, default=1) + only_recalculate_center: bpy.props.BoolProperty(name="Only Recalculate Center", default=False) + + @classmethod + def poll(cls, context): + obj = context.active_object + return obj and obj.type == "MESH" and context.mode == "EDIT_MESH" + + def draw(self, context): + layout = self.layout + for prop in self.__class__.__annotations__.keys(): + layout.prop(self, prop) + + def execute(self, context): + bpy.ops.object.mode_set(mode="OBJECT") + bpy.ops.object.mode_set(mode="EDIT") + + if bpy.context.mode != "EDIT_MESH": + return {"CANCELLED"} + + obj = bpy.context.edit_object + mesh = obj.data + bm = bmesh.from_edit_mesh(mesh) + + selected_verts = [v for v in bm.verts if v.select] + if len(selected_verts) != 3: + return {"CANCELLED"} + pts = [v.co for v in selected_verts] + center = tool.Cad.get_center_of_arc(pts, obj) + if not center: + return {"CANCELLED"} + + bpy.context.scene.cursor.location = center + if self.only_recalculate_center: + return {"FINISHED"} + + center = obj.matrix_world.inverted() @ center + + def get_distance_to_other_points(vert): + other_verts = [v for v in selected_verts if v != vert] + total_vector = mathutils.Vector((0, 0, 0)) + for other_vert in other_verts: + total_vector += other_vert.co - vert.co + return total_vector.length + + # For three selected points that represent a start, end, and point on an + # arc, the start and end verts can be identified by being furthest away + # from the other 2 points. + arc_end_verts = sorted(selected_verts, key=get_distance_to_other_points)[-2:] + normal = mathutils.geometry.normal(pts) + + dir1 = (arc_end_verts[0].co - center).normalized() + dir2 = (arc_end_verts[1].co - center).normalized() + + # Let's get the matrix that represents the coordinate system of the arc. + # This matrix allows us to get 2D vectors for calculating the signed arc angle. + z = normal + x = (arc_end_verts[0].co - center).normalized() + y = z.cross(x) + arc_matrix = mathutils.Matrix([x, y, z]).transposed().to_4x4() + + dir1 = ((arc_matrix.inverted() @ arc_end_verts[0].co) - (arc_matrix.inverted() @ center)).normalized() + dir2 = ((arc_matrix.inverted() @ arc_end_verts[1].co) - (arc_matrix.inverted() @ center)).normalized() + angle = dir1.xy.angle_signed(dir2.xy) + + v = arc_end_verts[0] + bmesh.ops.spin(bm, geom=[v], axis=normal, cent=center, steps=self.resolution * 4, angle=-angle) + bmesh.update_edit_mesh(mesh) + mesh.update() + return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/cad/ops.authoring.cad.dat b/src/blenderbim/blenderbim/bim/module/cad/ops.authoring.cad.dat new file mode 100644 index 0000000000..88edb8568c Binary files /dev/null and b/src/blenderbim/blenderbim/bim/module/cad/ops.authoring.cad.dat differ diff --git a/src/blenderbim/blenderbim/bim/module/cad/workspace.py b/src/blenderbim/blenderbim/bim/module/cad/workspace.py new file mode 100644 index 0000000000..2203846f36 --- /dev/null +++ b/src/blenderbim/blenderbim/bim/module/cad/workspace.py @@ -0,0 +1,93 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2022 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + +import os +import bpy +import blenderbim.bim.module.type.prop as type_prop +from bpy.types import WorkSpaceTool +from blenderbim.bim.ifc import IfcStore +from blenderbim.bim.module.model.data import AuthoringData + + +class CadTool(WorkSpaceTool): + bl_space_type = "VIEW_3D" + bl_context_mode = "EDIT_MESH" + + bl_idname = "bim.cad_tool" + bl_label = "CAD Tool" + bl_description = "Gives you CAD authoring related superpowers" + bl_icon = os.path.join(os.path.dirname(__file__), "ops.authoring.cad") + bl_widget = None + # https://docs.blender.org/api/current/bpy.types.KeyMapItems.html + bl_keymap = ( + ("bim.cad_hotkey", {"type": "E", "value": "PRESS", "shift": True}, {"properties": [("hotkey", "S_E")]}), + ("bim.cad_hotkey", {"type": "T", "value": "PRESS", "shift": True}, {"properties": [("hotkey", "S_T")]}), + ("bim.cad_fillet", {"type": "F", "value": "PRESS", "shift": True}, {"properties": []}), + # Enable Mesh Tools add-on to get this amazing tool + ("mesh.offset_edges", {"type": "O", "value": "PRESS", "shift": True}, {"properties": []}), + ("bim.cad_arc_from_2_points", {"type": "C", "value": "PRESS", "shift": True}, {"properties": []}), + ("bim.cad_arc_from_3_points", {"type": "V", "value": "PRESS", "shift": True}, {"properties": []}), + ) + + def draw_settings(context, layout, tool): + row = layout.row(align=True) + row.label(text="", icon="EVENT_SHIFT") + row.label(text="Extend", icon="EVENT_E") + + row = layout.row(align=True) + row.label(text="", icon="EVENT_SHIFT") + row.label(text="Mitre", icon="EVENT_T") + + row = layout.row(align=True) + row.label(text="", icon="EVENT_SHIFT") + row.label(text="Fillet", icon="EVENT_F") + + row = layout.row(align=True) + row.label(text="", icon="EVENT_SHIFT") + row.label(text="Offset", icon="EVENT_O") + + row = layout.row(align=True) + row.label(text="", icon="EVENT_SHIFT") + row.label(text="2-Point Arc", icon="EVENT_C") + + row = layout.row(align=True) + row.label(text="", icon="EVENT_SHIFT") + row.label(text="3-Point Arc", icon="EVENT_V") + + +class CadHotkey(bpy.types.Operator): + bl_idname = "bim.cad_hotkey" + bl_label = "CAD Hotkey" + bl_options = {"REGISTER", "UNDO"} + hotkey: bpy.props.StringProperty() + + def execute(self, context): + self.props = context.scene.BIMModelProperties + self.has_ifc_class = True + try: + self.has_ifc_class = bool(self.props.ifc_class) + except: + pass + getattr(self, f"hotkey_{self.hotkey}")() + return {"FINISHED"} + + def hotkey_S_E(self): + bpy.ops.bim.cad_trim_extend() + + def hotkey_S_T(self): + bpy.ops.bim.cad_mitre() diff --git a/src/blenderbim/blenderbim/bim/module/drawing/__init__.py b/src/blenderbim/blenderbim/bim/module/drawing/__init__.py index 795a33d173..87caeeb83e 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/__init__.py @@ -37,19 +37,21 @@ classes = ( operator.CopyGrid, operator.CreateDrawing, operator.CreateSheets, + operator.DisableEditingAssignedProduct, operator.DisableEditingDrawings, + operator.DisableEditingSchedules, operator.DisableEditingSheets, operator.DisableEditingText, - operator.DisableEditingTextProduct, + operator.EditAssignedProduct, operator.EditText, - operator.EditTextProduct, operator.EditVectorStyle, + operator.EnableEditingAssignedProduct, operator.EnableEditingText, - operator.EnableEditingTextProduct, operator.ExpandSheet, - operator.GenerateReferences, operator.LoadDrawings, + operator.LoadSchedules, operator.LoadSheets, + operator.OpenSchedule, operator.OpenSheet, operator.OpenView, operator.RemoveDrawing, @@ -61,7 +63,6 @@ classes = ( operator.ResizeText, operator.SaveDrawingStyle, operator.SelectDocIfcFile, - operator.SelectScheduleFile, prop.Variable, prop.Drawing, prop.Schedule, @@ -70,12 +71,14 @@ classes = ( prop.DocProperties, prop.BIMCameraProperties, prop.BIMTextProperties, + prop.BIMAssignedProductProperties, ui.BIM_PT_camera, ui.BIM_PT_drawing_underlay, ui.BIM_PT_annotation_utilities, ui.BIM_PT_sheets, ui.BIM_PT_drawings, ui.BIM_PT_schedules, + ui.BIM_PT_product_assignments, ui.BIM_PT_text, ui.BIM_UL_drawinglist, ui.BIM_UL_sheets, @@ -90,6 +93,7 @@ classes = ( def register(): bpy.types.Scene.DocProperties = bpy.props.PointerProperty(type=prop.DocProperties) bpy.types.Camera.BIMCameraProperties = bpy.props.PointerProperty(type=prop.BIMCameraProperties) + bpy.types.Object.BIMAssignedProductProperties = bpy.props.PointerProperty(type=prop.BIMAssignedProductProperties) bpy.types.Object.BIMTextProperties = bpy.props.PointerProperty(type=prop.BIMTextProperties) bpy.types.TextCurve.BIMTextProperties = bpy.props.PointerProperty(type=prop.BIMTextProperties) bpy.app.handlers.load_post.append(handler.toggleDecorationsOnLoad) @@ -99,6 +103,8 @@ def register(): def unregister(): del bpy.types.Scene.DocProperties del bpy.types.Camera.BIMCameraProperties + del bpy.types.Object.BIMAssignedProductProperties + del bpy.types.Object.BIMTextProperties del bpy.types.TextCurve.BIMTextProperties bpy.app.handlers.load_post.remove(handler.toggleDecorationsOnLoad) bpy.app.handlers.depsgraph_update_pre.remove(handler.depsgraph_update_pre_handler) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/annotation.py b/src/blenderbim/blenderbim/bim/module/drawing/annotation.py index 63fa0c4225..aeb5903b0c 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/annotation.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/annotation.py @@ -151,23 +151,32 @@ class Annotator: return obj @staticmethod - def get_annotation_obj(object_type, data_type): - collection = bpy.context.scene.camera.users_collection[0] + def get_annotation_obj(drawing, object_type, data_type): + camera = tool.Ifc.get_object(drawing) + co1, _, _, _ = Annotator.get_placeholder_coords(camera) + matrix_world = camera.matrix_world.copy() + matrix_world[0][3] = co1.x + matrix_world[1][3] = co1.y + matrix_world[2][3] = co1.z + collection = camera.users_collection[0] if object_type == "TEXT": obj = bpy.data.objects.new(object_type, None) + obj.matrix_world = matrix_world collection.objects.link(obj) return obj - elif object_type == "TEXT_LEADER": + elif object_type in ("TEXT_LEADER", "SECTION_LEVEL"): data = bpy.data.curves.new(object_type, type="CURVE") data.dimensions = "3D" data.resolution_u = 2 obj = bpy.data.objects.new(object_type, data) + obj.matrix_world = matrix_world collection.objects.link(obj) return obj - for obj in collection.objects: - element = tool.Ifc.get_entity(obj) - if element and element.ObjectType == object_type: - return obj + if object_type != "ANGLE": + for obj in collection.objects: + element = tool.Ifc.get_entity(obj) + if element and element.ObjectType == object_type: + return obj if data_type == "mesh": data = bpy.data.meshes.new(object_type) elif data_type == "curve": @@ -175,12 +184,14 @@ class Annotator: data.dimensions = "3D" data.resolution_u = 2 obj = bpy.data.objects.new(object_type, data) + obj.matrix_world = matrix_world collection.objects.link(obj) return obj @staticmethod - def get_placeholder_coords(): - camera = bpy.context.scene.camera + def get_placeholder_coords(camera=None): + if not camera: + camera = bpy.context.scene.camera z_offset = camera.matrix_world.to_quaternion() @ Vector((0, 0, -1)) if bpy.context.scene.render.resolution_x > bpy.context.scene.render.resolution_y: y = ( diff --git a/src/blenderbim/blenderbim/bim/module/drawing/data.py b/src/blenderbim/blenderbim/bim/module/drawing/data.py index 20cc167c93..a91f7690eb 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/data.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/data.py @@ -22,18 +22,40 @@ import blenderbim.tool as tool def refresh(): + ProductAssignmentsData.is_loaded = False TextData.is_loaded = False SheetsData.is_loaded = False + SchedulesData.is_loaded = False DrawingsData.is_loaded = False +class ProductAssignmentsData: + data = {} + is_loaded = False + + @classmethod + def load(cls): + cls.data = {"relating_product": cls.relating_product()} + cls.is_loaded = True + + @classmethod + def relating_product(cls): + element = tool.Ifc.get_entity(bpy.context.active_object) + if not element or not element.is_a("IfcAnnotation"): + return + for rel in element.HasAssignments: + if rel.is_a("IfcRelAssignsToProduct"): + name = rel.RelatingProduct.Name or "Unnamed" + return f"{rel.RelatingProduct.is_a()}/{name}" + + class TextData: data = {} is_loaded = False @classmethod def load(cls): - cls.data = {"attributes": cls.attributes(), "relating_product": cls.relating_product()} + cls.data = {"attributes": cls.attributes()} cls.is_loaded = True @classmethod @@ -48,15 +70,6 @@ class TextData: {"name": "BoxAlignment", "value": text_literal.BoxAlignment}, ] - @classmethod - def relating_product(cls): - element = tool.Ifc.get_entity(bpy.context.active_object) - if not element or not element.is_a("IfcAnnotation") or element.ObjectType not in ["TEXT", "TEXT_LEADER"]: - return - for rel in element.HasAssignments: - if rel.is_a("IfcRelAssignsToProduct"): - return rel.RelatingProduct.Name or "Unnamed" - class SheetsData: data = {} @@ -94,3 +107,17 @@ class DrawingsData: ) return results return [(h.upper(), h, "") for h in ["North", "South", "East", "West"]] + + +class SchedulesData: + data = {} + is_loaded = False + + @classmethod + def load(cls): + cls.data = {"total_schedules": cls.total_schedules()} + cls.is_loaded = True + + @classmethod + def total_schedules(cls): + return len([d for d in tool.Ifc.get().by_type("IfcDocumentInformation") if d.Scope == "SCHEDULE"]) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/decoration.py b/src/blenderbim/blenderbim/bim/module/drawing/decoration.py index f29e038f80..a1eb06b3a8 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/decoration.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/decoration.py @@ -170,12 +170,32 @@ class BaseDecorator: returns: iterable of blender objects """ results = [] + decoration_presets = ( + "DIMENSION", + "TEXT_LEADER", + "STAIR_ARROW", + "HIDDEN_LINE", + "PLAN_LEVEL", + "SECTION_LEVEL", + "BREAKLINE", + "GRID", + "ELEVATION", + "SECTION", + "TEXT", + ) for obj in collection.all_objects: element = tool.Ifc.get_entity(obj) if not element: continue - if element.is_a("IfcAnnotation") and element.ObjectType == self.objecttype: - results.append(obj) + if element.is_a("IfcAnnotation"): + if element.ObjectType == self.objecttype: + results.append(obj) + elif ( + self.objecttype == "MISC" + and element.ObjectType not in decoration_presets + and isinstance(obj.data, bpy.types.Mesh) + ): + results.append(obj) return results def get_path_geom(self, obj, topo=True): @@ -247,7 +267,7 @@ class BaseDecorator: """perform actual drawing stuff""" raise NotImplementedError() - def draw_lines(self, context, obj, vertices, indices, topology=None): + def draw_lines(self, context, obj, vertices, indices, topology=None, is_scale_dependant=True): region = context.region region3d = context.region_data color = context.scene.DocProperties.decorations_colour @@ -277,14 +297,15 @@ class BaseDecorator: self.shader.uniform_float("winsize", (region.width, region.height)) self.shader.uniform_float("color", color) - # Horrific prototype code - factor = self.camera_zoom_to_factor(context.space_data.region_3d.view_camera_zoom) - camera_width_px = factor * context.region.width - mm_to_px = camera_width_px / self.camera_width_mm - # 0.00025 is a magic constant number I visually discovered to get the right number. - # It probably should be dynamically calculated using system.dpi or something. - viewport_drawing_scale = 0.00025 * mm_to_px - self.shader.uniform_float("viewportDrawingScale", viewport_drawing_scale) + if is_scale_dependant: + # Horrific prototype code + factor = self.camera_zoom_to_factor(context.space_data.region_3d.view_camera_zoom) + camera_width_px = factor * context.region.width + mm_to_px = camera_width_px / self.camera_width_mm + # 0.00025 is a magic constant number I visually discovered to get the right number. + # It probably should be dynamically calculated using system.dpi or something. + viewport_drawing_scale = 0.00025 * mm_to_px + self.shader.uniform_float("viewportDrawingScale", viewport_drawing_scale) batch.draw(self.shader) @@ -357,11 +378,11 @@ class BaseDecorator: elif "/" in precision: precision = int(precision.split("/")[1]) elif unit_system == "METRIC": - precision = 3 + precision = 4 else: return - return bpy.utils.units.to_string(unit_system, "LENGTH", value, precision=precision, split_unit=True) + return bpy.utils.units.to_string(unit_system, "LENGTH", value, precision=precision) class DimensionDecorator(BaseDecorator): @@ -459,27 +480,8 @@ class DimensionDecorator(BaseDecorator): self.draw_label(context, text, p0 + (dir) * 0.5, dir) -class EqualityDecorator(DimensionDecorator): - """Decorator for equality objects - - outlines each segment - - augments with arrows on both sides - - puts 'EQ' label - """ - - objecttype = "EQUAL_DIMENSION" - - def draw_labels(self, context, obj, vertices, indices): - region = context.region - region3d = context.region_data - for i0, i1 in indices: - v0 = Vector(vertices[i0]) - v1 = Vector(vertices[i1]) - p0 = location_3d_to_region_2d(region, region3d, v0) - p1 = location_3d_to_region_2d(region, region3d, v1) - dir = p1 - p0 - if dir.length < 1: - continue - self.draw_label(context, "EQ", p0 + (dir) * 0.5, dir) +class DiameterDecorator(DimensionDecorator): + objecttype = "DIAMETER" class LeaderDecorator(BaseDecorator): @@ -568,6 +570,98 @@ class LeaderDecorator(BaseDecorator): self.draw_label(context, obj.BIMTextProperties.value, pos, dir, gap=0, center=False, vcenter=False) +class RadiusDecorator(BaseDecorator): + """Decorating text with arrows + - head point with arrow + """ + + objecttype = "RADIUS" + + DEF_GLSL = ( + BaseDecorator.DEF_GLSL + + """ + #define ARROW_ANGLE PI / 12.0 + #define ARROW_SIZE 16.0 + """ + ) + + GEOM_GLSL = """ + uniform vec2 winsize; + uniform float viewportDrawingScale; + + layout(lines) in; + layout(line_strip, max_vertices=MAX_POINTS) out; + in uint type[]; + + void main() { + vec4 clip2win = matCLIP2WIN(); + vec4 win2clip = matWIN2CLIP(); + + vec4 p0 = gl_in[0].gl_Position, p1 = gl_in[1].gl_Position; + uint t0 = type[0], t1 = type[1]; + + vec4 p0w = CLIP2WIN(p0), p1w = CLIP2WIN(p1); + vec4 edge = p1w - p0w, dir = normalize(edge); + vec4 gap1 = vec4(0); + + vec4 p; + + // end edge arrow for last segment + if (t1 == 2u) { + vec4 head[3]; + arrow_head(dir, viewportDrawingScale * ARROW_SIZE, ARROW_ANGLE, head); + + gl_Position = p1; + EmitVertex(); + p = p1w - head[1]; + gl_Position = WIN2CLIP(p); + EmitVertex(); + p = p1w - head[2]; + gl_Position = WIN2CLIP(p); + EmitVertex(); + gl_Position = p1; + EmitVertex(); + EndPrimitive(); + + gap1 = dir * viewportDrawingScale * ARROW_SIZE; + } + + // stem, adjusted for and arrow + gl_Position = p0; + EmitVertex(); + p = p1w - gap1; + gl_Position = WIN2CLIP(p); + EmitVertex(); + EndPrimitive(); + } + """ + + def get_spline_end(self, obj): + spline = obj.data.splines[0] + spline_points = spline.bezier_points if spline.bezier_points else spline.points + if not spline_points: + return Vector((0, 0, 0)) + return obj.matrix_world @ spline_points[0].co + + def decorate(self, context, obj): + verts, idxs, topo = self.get_path_geom(obj) + self.draw_lines(context, obj, verts, idxs, topo) + self.draw_labels(context, obj) + + def draw_labels(self, context, obj): + region = context.region + region3d = context.region_data + dir = Vector((1, 0)) + pos = location_3d_to_region_2d(region, region3d, self.get_spline_end(obj)) + + spline = obj.data.splines[0] + spline_points = spline.bezier_points if spline.bezier_points else spline.points + if spline_points: + length = (spline_points[-1].co - spline_points[-2].co).length + text = self.format_value(context, length) + self.draw_label(context, text, pos, dir, gap=0, center=False, vcenter=False) + + class StairDecorator(BaseDecorator): """Decorating stairs - head point with arrow @@ -671,6 +765,7 @@ class HiddenDecorator(BaseDecorator): GEOM_GLSL = """ uniform vec2 winsize; + uniform float viewportDrawingScale; layout(lines) in; layout(line_strip, max_vertices=MAX_POINTS) out; @@ -725,10 +820,61 @@ class HiddenDecorator(BaseDecorator): self.draw_lines(context, obj, verts, idxs) -class MiscDecorator(HiddenDecorator): +class MiscDecorator(BaseDecorator): objecttype = "MISC" - FRAG_GLSL = BaseDecorator.FRAG_GLSL + GEOM_GLSL = """ + uniform vec2 winsize; + uniform float viewportDrawingScale; + + layout(lines) in; + layout(line_strip, max_vertices=MAX_POINTS) out; + + out float dist; // distance from starging point along segment + + void main() { + vec4 clip2win = matCLIP2WIN(); + vec4 win2clip = matWIN2CLIP(); + + vec4 p0 = gl_in[0].gl_Position, p1 = gl_in[1].gl_Position; + + vec4 p0w = CLIP2WIN(p0), p1w = CLIP2WIN(p1); + vec4 edge = p1w - p0w, dir = normalize(edge); + vec4 gap = dir * 1; + + vec4 p; + + // NB: something should be used to affect position, otherwise compiler eliminates winsize + + dist = 0; + p = p0w + gap; + gl_Position = WIN2CLIP(p); + EmitVertex(); + dist = length(edge); + p = p1w - gap; + gl_Position = WIN2CLIP(p); + EmitVertex(); + EndPrimitive(); + } + """ + + FRAG_GLSL = """ + uniform vec4 color; + in vec2 gl_FragCoord; + in float dist; + out vec4 fragColor; + + void main() { + fragColor = color; + } + """ + + def decorate(self, context, obj): + if obj.data.is_editmode: + verts, idxs = self.get_editmesh_geom(obj) + else: + verts, idxs = self.get_mesh_geom(obj) + self.draw_lines(context, obj, verts, idxs, is_scale_dependant=False) class LevelDecorator(BaseDecorator): @@ -923,7 +1069,7 @@ class SectionLevelDecorator(LevelDecorator): class BreakDecorator(BaseDecorator): - """Decorator for dimension objects + """Decorator for breakline objects - first edge of a mesh with zigzag thingy in the middle Uses first two vertices in verts list. @@ -990,21 +1136,10 @@ class BreakDecorator(BaseDecorator): def decorate(self, context, obj): if obj.data.is_editmode: - verts = self.get_editmesh_geom(obj) + verts, idxs = self.get_editmesh_geom(obj) else: - verts = self.get_mesh_geom(obj) - self.draw_lines(context, obj, verts, [(0, 1)]) - - def get_mesh_geom(self, obj): - # first vertices only - vertices = [obj.matrix_world @ obj.data.vertices[i].co for i in (0, 1)] - return vertices - - def get_editmesh_geom(self, obj): - # first vertices only - mesh = bmesh.from_edit_mesh(obj.data) - vertices = [obj.matrix_world @ v.co for v in mesh.edges[0].verts] - return vertices + verts, idxs = self.get_mesh_geom(obj) + self.draw_lines(context, obj, verts, idxs) class GridDecorator(BaseDecorator): @@ -1363,7 +1498,6 @@ class SectionDecorator(LevelDecorator): self.draw_lines(context, obj, verts, idxs) - class TextDecorator(BaseDecorator): """Decorator for text objects - draws the text next to the origin @@ -1451,10 +1585,11 @@ class TextDecorator(BaseDecorator): class DecorationsHandler: decorators_classes = [ DimensionDecorator, - EqualityDecorator, GridDecorator, HiddenDecorator, LeaderDecorator, + RadiusDecorator, + DiameterDecorator, MiscDecorator, PlanLevelDecorator, SectionLevelDecorator, diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index 940afb575f..91dcdd3b67 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -40,7 +40,7 @@ import blenderbim.bim.module.drawing.scheduler as scheduler import blenderbim.bim.module.drawing.helper as helper import blenderbim.bim.export_ifc from lxml import etree -from mathutils import Vector, Matrix, Euler, geometry +from mathutils import Vector from blenderbim.bim.module.drawing.prop import RasterStyleProperty from blenderbim.bim.ifc import IfcStore from ifcopenshell.api.group.data import Data as GroupData @@ -53,7 +53,7 @@ def open_with_user_command(user_command, path): if user_command: commands = eval(user_command) for command in commands: - subprocess.run(command) + subprocess.Popen(command) else: webbrowser.open("file://" + path) @@ -124,6 +124,15 @@ class CreateDrawing(bpy.types.Operator): self.get_scale() if self.cprops.update_representation(self.camera): bpy.ops.bim.update_representation(obj=self.camera.name, ifc_representation_class="") + + self.svg_writer = svgwriter.SvgWriter() + self.svg_writer.human_scale = self.human_scale + self.svg_writer.scale = self.scale + self.svg_writer.data_dir = context.scene.BIMProperties.data_dir + self.svg_writer.camera = self.camera + self.svg_writer.camera_width, self.svg_writer.camera_height = self.get_camera_dimensions() + self.svg_writer.camera_projection = tuple(self.camera.matrix_world.to_quaternion() @ Vector((0, 0, -1))) + underlay_svg = self.generate_underlay(context) self.profile_code("Generate underlay") linework_svg = self.generate_linework(context) @@ -136,6 +145,16 @@ class CreateDrawing(bpy.types.Operator): print("Total Time: {:.2f}".format(time.time() - start)) return {"FINISHED"} + def get_camera_dimensions(self): + render = bpy.context.scene.render + if self.is_landscape(render): + width = self.camera.data.ortho_scale + height = width / render.resolution_x * render.resolution_y + else: + height = self.camera.data.ortho_scale + width = height / render.resolution_y * render.resolution_x + return width, height + def profile_code(self, message): if not self.time: self.time = time.time() @@ -146,22 +165,26 @@ class CreateDrawing(bpy.types.Operator): # Hacky :) svg_path = os.path.join(context.scene.BIMProperties.data_dir, "diagrams", self.drawing_name + ".svg") with open(svg_path, "w") as outfile: - has_boilerplate = False + pset = ifcopenshell.util.element.get_psets(self.camera_element)["EPset_Drawing"] + self.svg_writer.create_blank_svg(svg_path).define_boilerplate( + pset.get("Stylesheet"), pset.get("Markers"), pset.get("Symbols"), pset.get("Patterns") + ) + boilerplate = self.svg_writer.svg.tostring() + outfile.write(boilerplate.replace("", "")) if underlay: with open(underlay) as infile: - for line in infile: - if "', '" xmlns:ifc="http://www.ifcopenshell.org/ns">') - if "" in line: + for i, line in enumerate(infile): + if i < 2: + continue + elif "" in line: continue outfile.write(line) shutil.copyfile(underlay[0:-4] + ".png", svg_path[0:-4] + "-underlay.png") - has_boilerplate = True if linework: with open(linework) as infile: should_skip = False for i, line in enumerate(infile): - if has_boilerplate and i == 0: + if i == 0: continue if "" in line: continue @@ -174,11 +197,10 @@ class CreateDrawing(bpy.types.Operator): elif should_skip: continue outfile.write(line) - has_boilerplate = True if annotation: with open(annotation) as infile: for i, line in enumerate(infile): - if has_boilerplate and i in [0, 1]: + if i < 2: continue if "" in line: continue @@ -191,9 +213,7 @@ class CreateDrawing(bpy.types.Operator): return svg_path = os.path.join(context.scene.BIMProperties.data_dir, "cache", self.drawing_name + "-underlay.svg") context.scene.render.filepath = svg_path[0:-4] + ".png" - drawing_style = context.scene.DocProperties.drawing_styles[ - self.cprops.active_drawing_style_index - ] + drawing_style = context.scene.DocProperties.drawing_styles[self.cprops.active_drawing_style_index] if drawing_style.render_type == "DEFAULT": bpy.ops.render.render(write_still=True) @@ -225,25 +245,7 @@ class CreateDrawing(bpy.types.Operator): for name, value in previous_visibility.items(): bpy.data.objects[name].hide_set(value) - svg_writer = svgwriter.SvgWriter() - render = context.scene.render - if self.is_landscape(render): - width = self.camera.data.ortho_scale - height = width / render.resolution_x * render.resolution_y - else: - height = self.camera.data.ortho_scale - width = height / render.resolution_y * render.resolution_x - svg_writer.human_scale = self.human_scale - svg_writer.scale = self.scale - svg_writer.output = svg_path - svg_writer.data_dir = context.scene.BIMProperties.data_dir - svg_writer.vector_style = drawing_style.vector_style - svg_writer.camera = self.camera - svg_writer.camera_width = width - svg_writer.camera_height = height - svg_writer.camera_projection = tuple(self.camera.matrix_world.to_quaternion() @ Vector((0, 0, -1))) - svg_writer.background_image = context.scene.render.filepath - svg_writer.write("underlay") + self.svg_writer.create_blank_svg(svg_path).draw_underlay(context.scene.render.filepath).save() return svg_path def generate_linework(self, context): @@ -304,7 +306,7 @@ class CreateDrawing(bpy.types.Operator): body_contexts.append(rep_context.id()) continue - elements = set(ifc.by_type("IfcElement")) - set(ifc.by_type("IfcOpeningElement")) + elements = tool.Drawing.get_drawing_elements(self.camera_element) self.setup_serialiser(ifc) cache = IfcStore.get_cache() @@ -417,72 +419,13 @@ class CreateDrawing(bpy.types.Operator): if os.path.isfile(svg_path) and self.props.should_use_annotation_cache: return svg_path - camera = self.camera - svg_writer = svgwriter.SvgWriter() + elements = tool.Drawing.get_group_elements(tool.Drawing.get_drawing_group(self.camera_element)) + annotations = sorted(elements, key=lambda a: tool.Drawing.get_annotation_z_index(a)) - drawing_style = context.scene.DocProperties.drawing_styles[ - self.cprops.active_drawing_style_index - ] + self.svg_writer.metadata = tool.Drawing.get_drawing_metadata(self.camera_element) + self.svg_writer.create_blank_svg(svg_path).draw_annotations(annotations).save() - render = context.scene.render - if self.is_landscape(render): - width = camera.data.ortho_scale - height = width / render.resolution_x * render.resolution_y - else: - height = camera.data.ortho_scale - width = height / render.resolution_y * render.resolution_x - - svg_writer.human_scale = self.human_scale - svg_writer.scale = self.scale - svg_writer.output = svg_path - svg_writer.data_dir = context.scene.BIMProperties.data_dir - svg_writer.vector_style = drawing_style.vector_style - svg_writer.camera = camera - svg_writer.camera_width = width - svg_writer.camera_height = height - svg_writer.camera_projection = tuple(camera.matrix_world.to_quaternion() @ Vector((0, 0, -1))) - - for obj in camera.users_collection[0].objects: - if "IfcAnnotation/" not in obj.name: - continue - element = tool.Ifc.get_entity(obj) - if element.ObjectType == "GRID": - svg_writer.annotations.setdefault("grid_objs", []).append(obj) - elif obj.type == "CAMERA": - continue - elif element.ObjectType == "TEXT_LEADER": - svg_writer.annotations.setdefault("leader_objs", []).append(obj) - elif element.ObjectType == "STAIR_ARROW": - svg_writer.annotations["stair_obj"] = obj - elif element.ObjectType == "EQUAL_DIMENSION": - svg_writer.annotations.setdefault("equal_objs", []).append(obj) - elif element.ObjectType == "DIMENSION": - svg_writer.annotations.setdefault("dimension_objs", []).append(obj) - elif element.ObjectType == "ELEVATION": - svg_writer.annotations.setdefault("elevation_objs", []).append(obj) - elif element.ObjectType == "SECTION": - svg_writer.annotations.setdefault("section_objs", []).append(obj) - elif element.ObjectType == "BREAKLINE": - svg_writer.annotations["break_obj"] = obj - elif element.ObjectType == "HIDDEN_LINE": - svg_writer.annotations.setdefault("hidden_objs", []).append((obj, obj.data)) - elif element.ObjectType == "SOLID_LINE": - svg_writer.annotations.setdefault("solid_objs", []).append((obj, obj.data)) - elif element.ObjectType == "PLAN_LEVEL": - svg_writer.annotations.setdefault("plan_level_objs", []).append(obj) - elif element.ObjectType == "SECTION_LEVEL": - svg_writer.annotations["section_level_obj"] = obj - elif element.ObjectType == "TEXT": - svg_writer.annotations.setdefault("text_objs", []).append(obj) - else: - svg_writer.annotations.setdefault("misc_objs", []).append(obj) - - svg_writer.annotations["attributes"] = [a.name for a in drawing_style.attributes] - # TODO: This was the old 2D annotation box checking system, prepare to deprecate - svg_writer.annotations["annotation_objs"] = [] - - svg_writer.write("annotation") - return svg_writer.output + return svg_path def get_scale(self): if self.camera.data.BIMCameraProperties.diagram_scale == "CUSTOM": @@ -594,17 +537,11 @@ class AddDrawingToSheet(bpy.types.Operator): has_drawing = False for reference in references: - new = props.sheets.add() - new.ifc_definition_id = reference.id() - new.is_sheet = False - if tool.Ifc.get_schema() == "IFC2X3": - new.identification = reference.ItemReference or "X" element = [r for r in tool.Ifc.by_type("IfcRelAssociatesDocument") if r.RelatingDocument == reference][ 0 ].RelatedObjects[0] else: - new.identification = reference.Identification or "X" element = reference.DocumentRefForObjects[0].RelatedObjects[0] if element == drawing: has_drawing = True @@ -622,7 +559,7 @@ class AddDrawingToSheet(bpy.types.Operator): tool.Ifc.run("document.assign_document", product=drawing, document=reference) sheet_builder = sheeter.SheetBuilder() sheet_builder.data_dir = context.scene.BIMProperties.data_dir - sheet_builder.add_drawing(drawing, sheet) + sheet_builder.add_drawing(reference, drawing, sheet) tool.Drawing.import_sheets() return {"FINISHED"} @@ -636,15 +573,18 @@ class RemoveDrawingFromSheet(bpy.types.Operator): def execute(self, context): reference = tool.Ifc.get().by_id(self.reference) - sheet = tool.Drawing.get_reference_sheet(reference) - drawing = tool.Drawing.get_reference_element(reference) - - tool.Ifc.run("document.unassign_document", product=drawing, document=reference) - tool.Ifc.run("document.remove_reference", reference=reference) + sheet = tool.Drawing.get_reference_document(reference) sheet_builder = sheeter.SheetBuilder() sheet_builder.data_dir = context.scene.BIMProperties.data_dir - sheet_builder.remove_drawing(drawing, sheet) + sheet_builder.remove_drawing(reference, sheet) + + drawing = tool.Drawing.get_reference_element(reference) + if drawing: + tool.Ifc.run("document.unassign_document", product=drawing, document=reference) + + tool.Ifc.run("document.remove_reference", reference=reference) + tool.Drawing.import_sheets() return {"FINISHED"} @@ -663,7 +603,11 @@ class CreateSheets(bpy.types.Operator): props = scene.DocProperties active_sheet = props.sheets[props.active_sheet_index] sheet = tool.Ifc.get().by_id(active_sheet.ifc_definition_id) - name = tool.Drawing.get_sheet_filename(sheet) + + if not sheet.is_a("IfcDocumentInformation"): + return {"FINISHED"} + + name = os.path.splitext(os.path.basename(tool.Drawing.get_document_uri(sheet)))[0] sheet_builder = sheeter.SheetBuilder() sheet_builder.data_dir = scene.BIMProperties.data_dir sheet_builder.build(sheet) @@ -773,68 +717,6 @@ class SelectDocIfcFile(bpy.types.Operator): return {"RUNNING_MODAL"} -class GenerateReferences(bpy.types.Operator): - bl_idname = "bim.generate_references" - bl_label = "Generate References" - bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - self.camera = context.scene.camera - self.filter_potential_references() - if self.camera.data.BIMCameraProperties.target_view == "PLAN_VIEW": - self.generate_grids() - if self.camera.data.BIMCameraProperties.target_view == "ELEVATION_VIEW": - self.generate_grids() - self.generate_levels(context) - if self.camera.data.BIMCameraProperties.target_view == "SECTION_VIEW": - self.generate_grids() - self.generate_levels(context) - return {"FINISHED"} - - def filter_potential_references(self): - for name in ["grids", "levels"]: - setattr(self, name, []) - for obj in bpy.data.objects: - if "IfcGridAxis/" in obj.name: - self.grids.append(obj) - if "IfcBuildingStorey/" in obj.name: - self.levels.append(obj) - - def generate_grids(self): - # TODO - pass - - def generate_levels(self, context): - if self.camera.data.BIMCameraProperties.raster_x > self.camera.data.BIMCameraProperties.raster_y: - width = self.camera.data.ortho_scale - height = ( - width / self.camera.data.BIMCameraProperties.raster_x * self.camera.data.BIMCameraProperties.raster_y - ) - else: - height = self.camera.data.ortho_scale - width = ( - height / self.camera.data.BIMCameraProperties.raster_y * self.camera.data.BIMCameraProperties.raster_x - ) - level_obj = annotation.Annotator.get_annotation_obj("Section Level", "curve", context) - - width_in_mm = width * 1000 - real_world_width_in_mm = width_in_mm * scale - offset_in_mm = 20 - offset_percentage = offset_in_mm / real_world_width_in_mm - - for obj in self.levels: - projection = self.project_point_onto_camera(obj.location) - co1 = self.camera.matrix_world @ Vector((width / 2 - (offset_percentage * width), projection[1], -1)) - co2 = self.camera.matrix_world @ Vector((-(width / 2), projection[1], -1)) - annotation.Annotator.add_line_to_annotation(level_obj, context, co1, co2) - - def project_point_onto_camera(self, point): - projection = self.camera.matrix_world.to_quaternion() @ Vector((0, 0, -1)) - return self.camera.matrix_world.inverted() @ geometry.intersect_line_plane( - point.xyz, point.xyz - projection, self.camera.location, projection - ) - - class ResizeText(bpy.types.Operator): bl_idname = "bim.resize_text" bl_label = "Resize Text" @@ -1014,63 +896,56 @@ class RemoveSheet(bpy.types.Operator, Operator): core.remove_sheet(tool.Ifc, tool.Drawing, sheet=tool.Ifc.get().by_id(self.sheet)) -class AddSchedule(bpy.types.Operator): +class AddSchedule(bpy.types.Operator, Operator): bl_idname = "bim.add_schedule" bl_label = "Add Schedule" bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - new = context.scene.DocProperties.schedules.add() - new.name = "SCHEDULE {}".format(len(context.scene.DocProperties.schedules)) - return {"FINISHED"} - - -class RemoveSchedule(bpy.types.Operator): - bl_idname = "bim.remove_schedule" - bl_label = "Remove Schedule" - bl_options = {"REGISTER", "UNDO"} - index: bpy.props.IntProperty() - - def execute(self, context): - props = context.scene.DocProperties - props.schedules.remove(self.index) - return {"FINISHED"} - - -class SelectScheduleFile(bpy.types.Operator): - bl_idname = "bim.select_schedule_file" - bl_label = "Select Documentation IFC File" - bl_options = {"REGISTER", "UNDO"} filepath: bpy.props.StringProperty(subtype="FILE_PATH") - filter_glob: bpy.props.StringProperty(default="*.ods", options={"HIDDEN"}) - index: bpy.props.IntProperty() + filter_glob: bpy.props.StringProperty(default="*.ods;*.xls;*.xlsx", options={"HIDDEN"}) + use_relative_path: bpy.props.BoolProperty(name="Use Relative Path", default=False) - def execute(self, context): - props = context.scene.DocProperties - props.active_schedule.file = self.filepath - return {"FINISHED"} + def _execute(self, context): + filepath = self.filepath + if self.use_relative_path: + filepath = os.path.relpath(filepath, bpy.path.abspath("//")) + core.add_schedule( + tool.Ifc, + tool.Drawing, + uri=filepath, + ) def invoke(self, context, event): context.window_manager.fileselect_add(self) return {"RUNNING_MODAL"} -class BuildSchedule(bpy.types.Operator): +class RemoveSchedule(bpy.types.Operator, Operator): + bl_idname = "bim.remove_schedule" + bl_label = "Remove Schedule" + bl_options = {"REGISTER", "UNDO"} + schedule: bpy.props.IntProperty() + + def _execute(self, context): + core.remove_schedule(tool.Ifc, tool.Drawing, schedule=tool.Ifc.get().by_id(self.schedule)) + + +class OpenSchedule(bpy.types.Operator, Operator): + bl_idname = "bim.open_schedule" + bl_label = "Open Schedule" + bl_options = {"REGISTER", "UNDO"} + schedule: bpy.props.IntProperty() + + def _execute(self, context): + core.open_schedule(tool.Drawing, schedule=tool.Ifc.get().by_id(self.schedule)) + + +class BuildSchedule(bpy.types.Operator, Operator): bl_idname = "bim.build_schedule" bl_label = "Build Schedule" + schedule: bpy.props.IntProperty() - @classmethod - def poll(cls, context): - return context.scene.DocProperties.active_schedule.file - - def execute(self, context): - props = context.scene.DocProperties - schedule = props.active_schedule - schedule_creator = scheduler.Scheduler() - outfile = os.path.join(context.scene.BIMProperties.data_dir, "schedules", schedule.name + ".svg") - schedule_creator.schedule(schedule.file, outfile) - open_with_user_command(context.preferences.addons["blenderbim"].preferences.svg_command, outfile) - return {"FINISHED"} + def _execute(self, context): + core.build_schedule(tool.Drawing, schedule=tool.Ifc.get().by_id(self.schedule)) class AddScheduleToSheet(bpy.types.Operator): @@ -1086,9 +961,40 @@ class AddScheduleToSheet(bpy.types.Operator): def execute(self, context): props = context.scene.DocProperties + active_schedule = props.schedules[props.active_schedule_index] + active_sheet = props.sheets[props.active_sheet_index] + schedule = tool.Ifc.get().by_id(active_schedule.ifc_definition_id) + sheet = tool.Ifc.get().by_id(active_sheet.ifc_definition_id) + if not sheet.is_a("IfcDocumentInformation"): + return {"FINISHED"} + + if tool.Ifc.get_schema() == "IFC2X3": + references = sheet.DocumentReferences or [] + else: + references = sheet.HasDocumentReferences or [] + + has_schedule = False + for reference in references: + if reference.Location == tool.Drawing.get_schedule_location(schedule): + has_schedule = True + break + + if has_schedule: + return {"FINISHED"} + + reference = tool.Ifc.run("document.add_reference", information=sheet) + if tool.Ifc.get_schema() == "IFC2X3": + attributes = {"ItemReference": str(len(sheet.DocumentReferences or []))} + else: + attributes = {"Identification": str(len(sheet.HasDocumentReferences or []))} + attributes["Location"] = tool.Drawing.get_schedule_location(schedule) + tool.Ifc.run("document.edit_reference", reference=reference, attributes=attributes) + sheet_builder = sheeter.SheetBuilder() sheet_builder.data_dir = context.scene.BIMProperties.data_dir - sheet_builder.add_schedule(props.active_schedule.name, props.active_sheet.name) + sheet_builder.add_schedule(reference, schedule, sheet) + + tool.Drawing.import_sheets() return {"FINISHED"} @@ -1322,34 +1228,34 @@ class DisableEditingText(bpy.types.Operator, Operator): core.disable_editing_text(tool.Drawing, obj=context.active_object) -class EditTextProduct(bpy.types.Operator, Operator): - bl_idname = "bim.edit_text_product" +class EditAssignedProduct(bpy.types.Operator, Operator): + bl_idname = "bim.edit_assigned_product" bl_label = "Edit Text Product" bl_options = {"REGISTER", "UNDO"} def _execute(self, context): product = None - if context.active_object.BIMTextProperties.relating_product: - product = tool.Ifc.get_entity(context.active_object.BIMTextProperties.relating_product) - core.edit_text_product(tool.Ifc, tool.Drawing, obj=context.active_object, product=product) + if context.active_object.BIMAssignedProductProperties.relating_product: + product = tool.Ifc.get_entity(context.active_object.BIMAssignedProductProperties.relating_product) + core.edit_assigned_product(tool.Ifc, tool.Drawing, obj=context.active_object, product=product) -class EnableEditingTextProduct(bpy.types.Operator, Operator): - bl_idname = "bim.enable_editing_text_product" +class EnableEditingAssignedProduct(bpy.types.Operator, Operator): + bl_idname = "bim.enable_editing_assigned_product" bl_label = "Enable Editing Text Product" bl_options = {"REGISTER", "UNDO"} def _execute(self, context): - core.enable_editing_text_product(tool.Drawing, obj=context.active_object) + core.enable_editing_assigned_product(tool.Drawing, obj=context.active_object) -class DisableEditingTextProduct(bpy.types.Operator, Operator): - bl_idname = "bim.disable_editing_text_product" +class DisableEditingAssignedProduct(bpy.types.Operator, Operator): + bl_idname = "bim.disable_editing_assigned_product" bl_label = "Disable Editing Text Product" bl_options = {"REGISTER", "UNDO"} def _execute(self, context): - core.disable_editing_text_product(tool.Drawing, obj=context.active_object) + core.disable_editing_assigned_product(tool.Drawing, obj=context.active_object) class LoadSheets(bpy.types.Operator, Operator): @@ -1370,6 +1276,24 @@ class DisableEditingSheets(bpy.types.Operator, Operator): core.disable_editing_sheets(tool.Drawing) +class LoadSchedules(bpy.types.Operator, Operator): + bl_idname = "bim.load_schedules" + bl_label = "Load Schedules" + bl_options = {"REGISTER", "UNDO"} + + def _execute(self, context): + core.load_schedules(tool.Drawing) + + +class DisableEditingSchedules(bpy.types.Operator, Operator): + bl_idname = "bim.disable_editing_schedules" + bl_label = "Disable Editing Text Product" + bl_options = {"REGISTER", "UNDO"} + + def _execute(self, context): + core.disable_editing_schedules(tool.Drawing) + + class LoadDrawings(bpy.types.Operator, Operator): bl_idname = "bim.load_drawings" bl_label = "Load Drawings" diff --git a/src/blenderbim/blenderbim/bim/module/drawing/prop.py b/src/blenderbim/blenderbim/bim/module/drawing/prop.py index a959f4e7a5..2016f23dd2 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/prop.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/prop.py @@ -99,7 +99,8 @@ def get_diagram_scales(self, context): diagram_scales_enum = [ ("CUSTOM", "Custom", ""), ("1'=1'-0\"|1/1", "1'=1'-0\"", ""), - ('6"=1\'-0"|1/6', '6"=1\'-0"', ""), + ('6"=1\'-0"|1/2', '6"=1\'-0"', ""), + ('3"=1\'-0"|1/4', '3"=1\'-0"', ""), ('1-1/2"=1\'-0"|1/8', '1-1/2"=1\'-0"', ""), ('1"=1\'-0"|1/12', '1"=1\'-0"', ""), ('3/4"=1\'-0"|1/16', '3/4"=1\'-0"', ""), @@ -153,6 +154,11 @@ def update_drawing_name(self, context): core.update_drawing_name(tool.Ifc, tool.Drawing, drawing=drawing, name=self.name) +def update_schedule_name(self, context): + schedule = tool.Ifc.get().by_id(self.ifc_definition_id) + core.update_schedule_name(tool.Ifc, tool.Drawing, schedule=schedule, name=self.name) + + def update_has_underlay(self, context): update_layer(self, context, "HasUnderlay", self.has_underlay) @@ -231,8 +237,9 @@ class Drawing(PropertyGroup): class Schedule(PropertyGroup): - name: StringProperty(name="Name") - file: StringProperty(name="File") + ifc_definition_id: IntProperty(name="IFC Definition ID") + name: StringProperty(name="Name", update=update_schedule_name) + identification: StringProperty(name="Identification") class Sheet(PropertyGroup): @@ -305,6 +312,7 @@ class DocProperties(PropertyGroup): should_use_annotation_cache: BoolProperty(name="Use Annotation Cache", default=False) should_extract: BoolProperty(name="Should Extract", default=True) is_editing_drawings: BoolProperty(name="Is Editing Drawings", default=False) + is_editing_schedules: BoolProperty(name="Is Editing Schedules", default=False) target_view: EnumProperty( items=[ ("PLAN_VIEW", "Plan", ""), @@ -335,10 +343,6 @@ class DocProperties(PropertyGroup): name="Decorations Colour", subtype="COLOR", default=(1, 1, 1, 1), min=0.0, max=1.0, size=4 ) - @property - def active_schedule(self): - return self.schedules[self.active_schedule_index] - class BIMCameraProperties(PropertyGroup): has_underlay: BoolProperty(name="Underlay", default=False, update=update_has_underlay) @@ -351,19 +355,6 @@ class BIMCameraProperties(PropertyGroup): raster_x: IntProperty(name="Raster X", default=1000) raster_y: IntProperty(name="Raster Y", default=1000) is_nts: BoolProperty(name="Is NTS") - cut_objects: EnumProperty( - items=[ - ( - ".IfcWall|.IfcSlab|.IfcCurtainWall|.IfcStair|.IfcStairFlight|.IfcColumn|.IfcBeam|.IfcMember|.IfcCovering|.IfcSpace", - "Overall Plan / Section", - "", - ), - (".IfcElement", "Detail Drawing", ""), - ("CUSTOM", "Custom", ""), - ], - name="Cut Objects", - ) - cut_objects_custom: StringProperty(name="Custom Cut") active_drawing_style_index: IntProperty(name="Active Drawing Style Index") # For now, this JSON dump are all the parameters that determine a camera's "Block representation" @@ -386,7 +377,6 @@ class BIMCameraProperties(PropertyGroup): class BIMTextProperties(PropertyGroup): is_editing: BoolProperty(name="Is Editing", default=False) - is_editing_product: BoolProperty(name="Is Editing Product", default=False) attributes: CollectionProperty(name="Attributes", type=Attribute) value: StringProperty(name="Value", default="TEXT") font_size: EnumProperty( @@ -401,13 +391,7 @@ class BIMTextProperties(PropertyGroup): update=refreshFontSize, name="Font Size", ) - symbol: EnumProperty( - items=[ - ("None", "None", ""), - ("rectangle-tag", "Rectangle Tag", ""), - ("door-tag", "Door Tag", ""), - ], - update=refreshFontSize, - name="Symbol", - ) + +class BIMAssignedProductProperties(PropertyGroup): + is_editing_product: BoolProperty(name="Is Editing Product", default=False) relating_product: PointerProperty(name="Relating Product", type=bpy.types.Object) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py b/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py index 2a8229b660..7855e6067c 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py @@ -31,8 +31,7 @@ class SheetBuilder: self.data_dir = None self.scale = "NTS" - def create(self, name, titleblock_name): - sheet_path = os.path.join(self.data_dir, "sheets", f"{name}.svg") + def create(self, sheet_path, titleblock_name): root = ET.Element("svg") root.attrib["xmlns"] = "http://www.w3.org/2000/svg" root.attrib["xmlns:xlink"] = "http://www.w3.org/1999/xlink" @@ -60,9 +59,9 @@ class SheetBuilder: with open(sheet_path, "w") as f: f.write(minidom.parseString(ET.tostring(root)).toprettyxml(indent=" ")) - def add_drawing(self, drawing, sheet): + def add_drawing(self, reference, drawing, sheet): filename = drawing.Name - sheet_name = tool.Drawing.get_sheet_filename(sheet) + sheet_name = os.path.splitext(os.path.basename(tool.Drawing.get_document_uri(sheet)))[0] sheet_dir = os.path.join(self.data_dir, "sheets") drawing_dir = os.path.join(self.data_dir, "diagrams") sheet_path = os.path.join(sheet_dir, sheet_name + ".svg") @@ -86,7 +85,8 @@ class SheetBuilder: # here to accommodate browsers which do not nest images. view = ET.SubElement(sheet_root, "g") view.attrib["data-type"] = "drawing" - view.attrib["data-guid"] = drawing.GlobalId + view.attrib["data-id"] = str(reference.id()) + view.attrib["data-drawing"] = drawing.GlobalId view_width = self.convert_to_mm(view_root.attrib.get("width")) view_height = self.convert_to_mm(view_root.attrib.get("height")) @@ -111,26 +111,24 @@ class SheetBuilder: self.add_view_title(30, view_height + 35, view) sheet_tree.write(sheet_path) - def remove_drawing(self, drawing, sheet): - sheet_name = tool.Drawing.get_sheet_filename(sheet) - sheet_dir = os.path.join(self.data_dir, "sheets") - sheet_path = os.path.join(sheet_dir, sheet_name + ".svg") - + def remove_drawing(self, reference, sheet): ET.register_namespace("", "http://www.w3.org/2000/svg") + sheet_path = tool.Drawing.get_document_uri(sheet) sheet_tree = ET.parse(sheet_path) sheet_root = sheet_tree.getroot() - for g in sheet_root.findall("{http://www.w3.org/2000/svg}g"): - if g.attrib["data-type"] == "drawing" and g.attrib["data-guid"] == drawing.GlobalId: + for g in sheet_root.findall('{http://www.w3.org/2000/svg}g'): + if g.attrib.get("data-id") == str(reference.id()): sheet_root.remove(g) break sheet_tree.write(sheet_path) - def add_schedule(self, schedule_name, sheet_name): - sheet_path = os.path.join(self.data_dir, "sheets", sheet_name + ".svg") - view_path = os.path.join(self.data_dir, "schedules", schedule_name + ".svg") + def add_schedule(self, reference, schedule, sheet): + view_path = tool.Drawing.get_document_uri(schedule) + schedule_name = os.path.splitext(os.path.basename(view_path))[0] + sheet_path = tool.Drawing.get_document_uri(sheet) ET.register_namespace("", "http://www.w3.org/2000/svg") ET.register_namespace("xlink", "http://www.w3.org/1999/xlink") @@ -143,17 +141,20 @@ class SheetBuilder: view_width = self.convert_to_mm(view_root.attrib.get("width")) view_height = self.convert_to_mm(view_root.attrib.get("height")) - group = ET.SubElement(sheet_root, "g") - group.attrib["data-type"] = "schedule" + view = ET.SubElement(sheet_root, "g") + view.attrib["data-type"] = "schedule" + view.attrib["data-id"] = str(reference.id()) + view.attrib["data-schedule"] = str(schedule.id()) - foreground = ET.SubElement(group, "image") + foreground = ET.SubElement(view, "image") + foreground.attrib["data-type"] = "table" foreground.attrib["xlink:href"] = "../schedules/{}.svg".format(schedule_name) foreground.attrib["x"] = "30" foreground.attrib["y"] = "30" foreground.attrib["width"] = str(view_width) foreground.attrib["height"] = str(view_height) - self.add_view_title(30, view_height + 35, group) + self.add_view_title(30, view_height + 35, view) sheet_tree.write(sheet_path) def add_view_title(self, x, y, parent): @@ -168,7 +169,7 @@ class SheetBuilder: title.attrib["height"] = str(self.convert_to_mm(title_root.attrib.get("height"))) def build(self, sheet): - sheet_name = tool.Drawing.get_sheet_filename(sheet) + sheet_name = os.path.splitext(os.path.basename(tool.Drawing.get_document_uri(sheet)))[0] os.makedirs(os.path.join(self.data_dir, "build", sheet_name), exist_ok=True) sheet_path = os.path.join(self.data_dir, "sheets", f"{sheet_name}.svg") @@ -181,7 +182,7 @@ class SheetBuilder: self.build_titleblock(root, sheet) self.build_drawings(root, sheet) - self.build_schedules(root.findall('{http://www.w3.org/2000/svg}g[@data-type="schedule"]')) + self.build_schedules(root) with open(os.path.join(self.data_dir, "build", sheet_name, f"{sheet_name}.svg"), "wb") as output: tree.write(output) @@ -193,13 +194,11 @@ class SheetBuilder: titleblock.remove(image) def build_drawings(self, root, sheet): - sheet_name = tool.Drawing.get_sheet_filename(sheet) - references = tool.Drawing.get_document_references(sheet) - drawing_references = {tool.Drawing.get_reference_element(r): r for r in references} + sheet_name = os.path.splitext(os.path.basename(tool.Drawing.get_document_uri(sheet)))[0] for view in root.findall('{http://www.w3.org/2000/svg}g[@data-type="drawing"]'): - drawing = [d for d in drawing_references.keys() if d and d.GlobalId == view.attrib["data-guid"]][0] - reference = drawing_references[drawing] + reference = tool.Ifc.get().by_id(int(view.attrib["data-id"])) + drawing = tool.Ifc.get().by_id(view.attrib["data-drawing"]) images = view.findall("{http://www.w3.org/2000/svg}image") @@ -233,24 +232,34 @@ class SheetBuilder: for image in images: view.remove(image) - def build_schedules(self, schedules): - for group in schedules: - images = group.findall("{http://www.w3.org/2000/svg}image") - schedule = images[0] - group_title = images[1] - self.scale = "NTS" + def build_schedules(self, root): + for view in root.findall('{http://www.w3.org/2000/svg}g[@data-type="schedule"]'): + reference = tool.Ifc.get().by_id(int(view.attrib["data-id"])) + schedule = tool.Ifc.get().by_id(int(view.attrib["data-schedule"])) - group.append(self.parse_embedded_svg(schedule, {})) + images = view.findall("{http://www.w3.org/2000/svg}image") - path = self.get_href(schedule) - group.append( - self.parse_embedded_svg( - group_title, {"no": 1, "name": ntpath.basename(path)[0:-4], "scale": self.scale} - ) - ) + table = None + view_title = None for image in images: - group.remove(image) + if image.attrib["data-type"] == "table": + table = image + elif image.attrib["data-type"] == "view-title": + view_title = image + + if table is not None: + view.append(self.parse_embedded_svg(table, {})) + + if view_title is not None: + path = self.get_href(table) + data = reference.get_info() + if not data["Name"]: + data["Name"] = schedule.Name or "Unnamed" + view.append(self.parse_embedded_svg(view_title, data)) + + for image in images: + view.remove(image) def get_href(self, element): return urllib.parse.unquote(element.attrib.get("{http://www.w3.org/1999/xlink}href")) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py index b6e3407daf..891b8f2092 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py @@ -20,7 +20,9 @@ import os import re import bpy import math +import bmesh import pystache +import mathutils import xml.etree.ElementTree as ET import svgwrite import ifcopenshell @@ -34,14 +36,6 @@ from mathutils import geometry from blenderbim.bim.ifc import IfcStore -def load_occ(): - # Don't import until we really need to, as a temporary step before we can purge OCC - try: - from OCC.Core import BRep, BRepTools, TopExp, TopAbs - except ImportError: - from OCC import BRep, BRepTools, TopExp, TopAbs - - class External(svgwrite.container.Group): def __init__(self, xml, **extra): self.xml = xml @@ -61,257 +55,233 @@ class External(svgwrite.container.Group): class SvgWriter: def __init__(self): - self.output = "out.svg" self.data_dir = None - self.vector_style = None self.human_scale = "NTS" - self.annotations = {} - self.background_image = None + self.metadata = [] self.scale = 1 / 100 # 1:100 + self.camera_width = None + self.camera_height = None - def write(self, layer): + def create_blank_svg(self, output_path): self.calculate_scale() self.svg = svgwrite.Drawing( - self.output, - debug=False, + output_path, size=("{}mm".format(self.width), "{}mm".format(self.height)), viewBox=("0 0 {} {}".format(self.width, self.height)), id="root", data_scale=self.human_scale, + debug=False, # Disable validation so that we can insert the IFC namespace ) + self.svg.attribs["xmlns:ifc"] = "http://www.ifcopenshell.org/ns" + return self - if layer == "underlay": - self.draw_background_image() - elif layer == "annotation": - self.add_stylesheet() - self.add_markers() - self.add_symbols() - self.add_patterns() - # self.draw_background_elements() - # self.draw_cut_polygons() - self.draw_annotations() + def save(self): self.svg.save(pretty=True) - def calculate_scale(self): - self.scale *= 1000 # IFC is in meters, SVG is in mm - self.raw_width = self.camera_width - self.raw_height = self.camera_height - self.width = self.raw_width * self.scale - self.height = self.raw_height * self.scale - - def add_stylesheet(self): - with open(os.path.join(self.data_dir, "styles", f"{self.vector_style}.css"), "r") as stylesheet: - self.svg.defs.add(self.svg.style(stylesheet.read())) - - def add_markers(self): - tree = ET.parse(os.path.join(self.data_dir, "templates", "markers.svg")) - root = tree.getroot() - for child in root: - self.svg.defs.add(External(child)) - - def add_symbols(self): - tree = ET.parse(os.path.join(self.data_dir, "templates", "symbols.svg")) - root = tree.getroot() - for child in root: - self.svg.defs.add(External(child)) - - def add_patterns(self): - tree = ET.parse(os.path.join(self.data_dir, "templates", "patterns.svg")) - root = tree.getroot() - for child in root: - self.svg.defs.add(External(child)) - - def draw_background_image(self): + def draw_underlay(self, image): self.svg.add( self.svg.image( - os.path.join("..", "diagrams", os.path.basename(self.background_image)), - **{"width": self.width, "height": self.height}, + os.path.join("..", "diagrams", os.path.basename(image)), width=self.width, height=self.height, ) ) + return self - def draw_background_elements(self): - return # TODO purge? - for element in self.ifc_cutter.background_elements: - if element["type"] == "polygon": - self.draw_polygon(element, "background") - elif element["type"] == "polyline": - self.draw_polyline(element, "background") - elif element["type"] == "line": - self.draw_line(element, "background") + def define_boilerplate(self, stylesheet=None, markers=None, symbols=None, patterns=None): + self.add_stylesheet(stylesheet) + self.add_markers(markers) + self.add_symbols(symbols) + self.add_patterns(patterns) + return self - def draw_annotations(self): - x_offset = self.raw_width / 2 - y_offset = self.raw_height / 2 + def calculate_scale(self): + self.svg_scale = self.scale * 1000 # IFC is in meters, SVG is in mm + self.raw_width = self.camera_width + self.raw_height = self.camera_height + self.width = self.raw_width * self.svg_scale + self.height = self.raw_height * self.svg_scale - for obj in self.annotations.get("equal_objs", []): - self.draw_dimension_annotations(obj, text_override="EQ") - for obj in self.annotations.get("dimension_objs", []): - self.draw_dimension_annotations(obj) + def add_stylesheet(self, uri): + default_stylesheet = os.path.join(self.data_dir, "styles", f"default.css") + with open(tool.Ifc.resolve_uri(uri) or default_stylesheet, "r") as stylesheet: + self.svg.defs.add(self.svg.style(stylesheet.read())) + + def add_markers(self, uri): + tree = ET.parse(tool.Ifc.resolve_uri(uri) or os.path.join(self.data_dir, "templates", "markers.svg")) + root = tree.getroot() + for child in root: + self.svg.defs.add(External(child)) + + def add_symbols(self, uri): + tree = ET.parse(tool.Ifc.resolve_uri(uri) or os.path.join(self.data_dir, "templates", "symbols.svg")) + root = tree.getroot() + for child in root: + self.svg.defs.add(External(child)) + + def add_patterns(self, uri): + tree = ET.parse(tool.Ifc.resolve_uri(uri) or os.path.join(self.data_dir, "templates", "patterns.svg")) + root = tree.getroot() + for child in root: + self.svg.defs.add(External(child)) + + def draw_annotations(self, annotations): + for element in annotations: + obj = tool.Ifc.get_object(element) + if not obj or element.ObjectType == "DRAWING": + continue + elif element.ObjectType == "GRID": + self.draw_grid_annotation(obj) + elif element.ObjectType == "TEXT_LEADER": + self.draw_leader_annotation(obj) + elif element.ObjectType == "STAIR_ARROW": + self.draw_stair_annotation(obj) + elif element.ObjectType == "DIMENSION": + self.draw_dimension_annotations(obj) + elif element.ObjectType == "ANGLE": + self.draw_angle_annotations(obj) + elif element.ObjectType == "RADIUS": + self.draw_radius_annotations(obj) + elif element.ObjectType == "DIAMETER": + self.draw_diameter_annotations(obj) + elif element.ObjectType == "ELEVATION": + self.draw_elevation_annotation(obj) + elif element.ObjectType == "SECTION": + self.draw_section_annotation(obj) + elif element.ObjectType == "BREAKLINE": + self.draw_break_annotations(obj) + elif element.ObjectType == "HIDDEN_LINE": + self.draw_line_annotation(obj) + elif element.ObjectType == "PLAN_LEVEL": + self.draw_plan_level_annotation(obj) + elif element.ObjectType == "SECTION_LEVEL": + self.draw_section_level_annotation(obj) + elif element.ObjectType == "TEXT": + self.draw_text_annotation(obj, obj.location) + else: + self.draw_misc_annotation(obj) + + # Experimental integration with the MeasureIt-ARCH Add-on self.draw_measureit_arch_dimension_annotations() + return self - if self.annotations.get("break_obj"): - self.draw_break_annotations(self.annotations["break_obj"]) - - for grid_obj in self.annotations.get("grid_objs", []): - matrix_world = grid_obj.matrix_world - classes = self.get_attribute_classes(grid_obj) - for edge in grid_obj.data.edges: - v0_global = matrix_world @ grid_obj.data.vertices[edge.vertices[0]].co.xyz - v1_global = matrix_world @ grid_obj.data.vertices[edge.vertices[1]].co.xyz - v0 = self.project_point_onto_camera(v0_global) - v1 = self.project_point_onto_camera(v1_global) - start = Vector(((x_offset + v0.x), (y_offset - v0.y))) - end = Vector(((x_offset + v1.x), (y_offset - v1.y))) - vector = end - start - line = self.svg.add( - self.svg.line( - start=tuple(start * self.scale), end=tuple(end * self.scale), class_=" ".join(classes) - ) - ) - line["stroke-dasharray"] = "12.5, 3, 3, 3" - axis_tag = tool.Ifc.get_entity(grid_obj).Name - self.svg.add( - self.svg.text( - axis_tag, - insert=tuple(start * self.scale), - **{ - "font-size": annotation.Annotator.get_svg_text_size(5.0), - "font-family": "OpenGost Type B TT", - "text-anchor": "middle", - "alignment-baseline": "middle", - "dominant-baseline": "middle", - }, - ) - ) - self.svg.add( - self.svg.text( - axis_tag, - insert=tuple(end * self.scale), - **{ - "font-size": annotation.Annotator.get_svg_text_size(5.0), - "font-family": "OpenGost Type B TT", - "text-anchor": "middle", - "alignment-baseline": "middle", - "dominant-baseline": "middle", - }, - ) - ) - - self.draw_ifc_annotation() - - for obj in self.annotations.get("misc_objs", []): - self.draw_misc_annotation(obj) - - for obj_data in self.annotations.get("hidden_objs", []): - self.draw_line_annotation(obj_data) - - for obj_data in self.annotations.get("solid_objs", []): - self.draw_line_annotation(obj_data) - - self.draw_leader_annotations() - - for obj in self.annotations.get("plan_level_objs", []): - self.draw_plan_level_annotation(obj) - - if self.annotations.get("section_level_obj"): - matrix_world = self.annotations["section_level_obj"].matrix_world - classes = self.get_attribute_classes(self.annotations["section_level_obj"]) - for spline in self.annotations["section_level_obj"].data.splines: - points = self.get_spline_points(spline) - projected_points = [self.project_point_onto_camera(matrix_world @ p.co.xyz) for p in points] - d = " ".join( - [ - "L {} {}".format((x_offset + p.x) * self.scale, (y_offset - p.y) * self.scale) - for p in projected_points - ] - ) - d = "M{}".format(d[1:]) - path = self.svg.add(self.svg.path(d=d, class_=" ".join(classes))) - text_position = Vector( - ( - (x_offset + projected_points[0].x) * self.scale, - ((y_offset - projected_points[0].y) * self.scale) - 3.5, - ) - ) - # TODO: allow metric to be configurable - rl = (matrix_world @ points[0].co.xyz).z - if bpy.context.scene.unit_settings.system == "IMPERIAL": - rl = helper.format_distance(rl) - else: - rl = "{:.3f}m".format(rl) - self.svg.add( - self.svg.text( - "RL +{}".format(rl), - insert=tuple(text_position), - **{ - "font-size": annotation.Annotator.get_svg_text_size(2.5), - "font-family": "OpenGost Type B TT", - "text-anchor": "start", - "alignment-baseline": "baseline", - "dominant-baseline": "baseline", - }, - ) - ) - - if self.annotations.get("stair_obj"): - matrix_world = self.annotations["stair_obj"].matrix_world - classes = self.get_attribute_classes(self.annotations["stair_obj"]) - for spline in self.annotations["stair_obj"].data.splines: - points = self.get_spline_points(spline) - projected_points = [self.project_point_onto_camera(matrix_world @ p.co.xyz) for p in points] - d = " ".join( - [ - "L {} {}".format((x_offset + p.x) * self.scale, (y_offset - p.y) * self.scale) - for p in projected_points - ] - ) - d = "M{}".format(d[1:]) - start = Vector(((x_offset + projected_points[0].x), (y_offset - projected_points[0].y))) - next_point = Vector(((x_offset + projected_points[1].x), (y_offset - projected_points[1].y))) - text_position = (start * self.scale) - ((next_point - start).normalized() * 5) - path = self.svg.add(self.svg.path(d=d, class_=" ".join(classes))) - self.svg.add( - self.svg.text( - "UP", - insert=tuple(text_position), - **{ - "font-size": annotation.Annotator.get_svg_text_size(2.5), - "font-family": "OpenGost Type B TT", - "text-anchor": "middle", - "alignment-baseline": "middle", - "dominant-baseline": "middle", - }, - ) - ) - - for obj in self.annotations.get("elevation_objs", []): - self.draw_elevation_annotation(obj) - - for obj in self.annotations.get("section_objs", []): - self.draw_section_annotation(obj) - - for text_obj in self.annotations.get("text_objs", []): - self.draw_text_annotation(text_obj, text_obj.location) - - def draw_ifc_annotation(self): + def draw_section_level_annotation(self, obj): x_offset = self.raw_width / 2 y_offset = self.raw_height / 2 - for annotation in self.annotations.get("annotation_objs", []): - for edge in annotation["edges"]: - v0_global = annotation["vertices"][edge[0]] - v1_global = annotation["vertices"][edge[1]] - v0 = self.project_point_onto_camera(v0_global) - v1 = self.project_point_onto_camera(v1_global) - start = Vector(((x_offset + v0.x), (y_offset - v0.y))) - end = Vector(((x_offset + v1.x), (y_offset - v1.y))) - vector = end - start - line = self.svg.add( - self.svg.line( - start=tuple(start * self.scale), - end=tuple(end * self.scale), - class_=" ".join(annotation["classes"]), - ) + matrix_world = obj.matrix_world + classes = self.get_attribute_classes(obj) + element = tool.Ifc.get_entity(obj) + storey = tool.Drawing.get_annotation_element(element) + tag = storey.Name if storey else element.Description + for spline in obj.data.splines: + points = self.get_spline_points(spline) + projected_points = [self.project_point_onto_camera(matrix_world @ p.co.xyz) for p in points] + d = " ".join( + [ + "L {} {}".format((x_offset + p.x) * self.svg_scale, (y_offset - p.y) * self.svg_scale) + for p in projected_points + ] + ) + d = "M{}".format(d[1:]) + path = self.svg.add(self.svg.path(d=d, class_=" ".join(classes))) + text_position = Vector( + ( + (x_offset + projected_points[0].x) * self.svg_scale, + ((y_offset - projected_points[0].y) * self.svg_scale) - 3.5, ) + ) + # TODO: allow metric to be configurable + rl = (matrix_world @ points[0].co.xyz).z + if bpy.context.scene.unit_settings.system == "IMPERIAL": + rl = helper.format_distance(rl) + else: + rl = "{:.3f}m".format(rl) + text_style = { + "font-size": annotation.Annotator.get_svg_text_size(2.5), + "font-family": "OpenGost Type B TT", + "text-anchor": "start", + "alignment-baseline": "baseline", + "dominant-baseline": "baseline", + } + self.svg.add(self.svg.text(f"RL +{rl}", insert=tuple(text_position), **text_style)) + if tag: + self.svg.add(self.svg.text(tag, insert=(text_position[0], text_position[1] - 5), **text_style)) + + def draw_stair_annotation(self, obj): + x_offset = self.raw_width / 2 + y_offset = self.raw_height / 2 + matrix_world = obj.matrix_world + classes = self.get_attribute_classes(obj) + for spline in obj.data.splines: + points = self.get_spline_points(spline) + projected_points = [self.project_point_onto_camera(matrix_world @ p.co.xyz) for p in points] + d = " ".join( + [ + "L {} {}".format((x_offset + p.x) * self.svg_scale, (y_offset - p.y) * self.svg_scale) + for p in projected_points + ] + ) + d = "M{}".format(d[1:]) + start = Vector(((x_offset + projected_points[0].x), (y_offset - projected_points[0].y))) + next_point = Vector(((x_offset + projected_points[1].x), (y_offset - projected_points[1].y))) + text_position = (start * self.svg_scale) - ((next_point - start).normalized() * 5) + path = self.svg.add(self.svg.path(d=d, class_=" ".join(classes))) + self.svg.add( + self.svg.text( + "UP", + insert=tuple(text_position), + **{ + "font-size": annotation.Annotator.get_svg_text_size(2.5), + "font-family": "OpenGost Type B TT", + "text-anchor": "middle", + "alignment-baseline": "middle", + "dominant-baseline": "middle", + }, + ) + ) + + def draw_grid_annotation(self, obj): + x_offset = self.raw_width / 2 + y_offset = self.raw_height / 2 + matrix_world = obj.matrix_world + classes = self.get_attribute_classes(obj) + for edge in obj.data.edges: + v0_global = matrix_world @ obj.data.vertices[edge.vertices[0]].co.xyz + v1_global = matrix_world @ obj.data.vertices[edge.vertices[1]].co.xyz + v0 = self.project_point_onto_camera(v0_global) + v1 = self.project_point_onto_camera(v1_global) + start = Vector(((x_offset + v0.x), (y_offset - v0.y))) + end = Vector(((x_offset + v1.x), (y_offset - v1.y))) + vector = end - start + line = self.svg.add( + self.svg.line(start=tuple(start * self.svg_scale), end=tuple(end * self.svg_scale), class_=" ".join(classes)) + ) + line["stroke-dasharray"] = "12.5, 3, 3, 3" + axis_tag = tool.Ifc.get_entity(obj).Name + self.svg.add( + self.svg.text( + axis_tag, + insert=tuple(start * self.svg_scale), + **{ + "font-size": annotation.Annotator.get_svg_text_size(5.0), + "font-family": "OpenGost Type B TT", + "text-anchor": "middle", + "alignment-baseline": "middle", + "dominant-baseline": "middle", + }, + ) + ) + self.svg.add( + self.svg.text( + axis_tag, + insert=tuple(end * self.svg_scale), + **{ + "font-size": annotation.Annotator.get_svg_text_size(5.0), + "font-family": "OpenGost Type B TT", + "text-anchor": "middle", + "alignment-baseline": "middle", + "dominant-baseline": "middle", + }, + ) + ) def draw_misc_annotation(self, obj): # We have to decide whether this should come from Blender or from IFC. @@ -332,7 +302,7 @@ class SvgWriter: projected_points.append(projected_points[0]) d = " ".join( [ - "L {} {}".format((x_offset + p.x) * self.scale, (y_offset - p.y) * self.scale) + "L {} {}".format((x_offset + p.x) * self.svg_scale, (y_offset - p.y) * self.svg_scale) for p in projected_points ] ) @@ -346,65 +316,36 @@ class SvgWriter: str(ifcopenshell.util.element.get_predefined_type(element)) ) classes = [global_id, element.is_a(), predefined_type] - for attribute in self.annotations.get("attributes", []): - result = self.get_obj_value(obj, attribute) - if result: - classes.append( - "{}-{}".format(re.sub("[^0-9a-zA-Z]+", "", attribute), re.sub("[^0-9a-zA-Z]+", "", result)) - ) + for key in self.metadata: + value = ifcopenshell.util.selector.Selector.get_element_value(element, key) + if value: + classes.append(self.canonicalise_class_name(key) + "-" + self.canonicalise_class_name(str(value))) return classes def canonicalise_class_name(self, name): return re.sub("[^0-9a-zA-Z]+", "", name) - def get_obj_value(self, obj, key): - # This is a duplicate implementation of the IFC selector key in Blender - # In the future if all this becomes purely IFC based this can be deleted - if "." in key and key.split(".")[0] == "type": - try: - obj = obj.BIMObjectProperties.relating_type - except: - return - key = ".".join(key.split(".")[1:]) - result = obj.BIMObjectProperties.attributes.get(key) - if result: - return result.string_value - elif key == "Name": - return obj.name.split("/")[1] - elif "." in key: - pset_name, prop = key.split(".") - pset = obj.BIMObjectProperties.psets.get(pset_name) - if not pset: - pset = obj.BIMObjectProperties.qtos.get(pset_name) - if not pset: - return - result = pset.properties.get(prop) - if result: - return result.string_value - - def draw_line_annotation(self, obj_data): + def draw_line_annotation(self, obj): # TODO: properly scope these offsets x_offset = self.raw_width / 2 y_offset = self.raw_height / 2 - obj, data = obj_data - classes = self.get_attribute_classes(obj) matrix_world = obj.matrix_world - if isinstance(data, bpy.types.Curve): - for spline in data.splines: + if isinstance(obj.data, bpy.types.Curve): + for spline in obj.data.splines: points = self.get_spline_points(spline) projected_points = [self.project_point_onto_camera(matrix_world @ p.co.xyz) for p in points] d = " ".join( [ - "L {} {}".format((x_offset + p.x) * self.scale, (y_offset - p.y) * self.scale) + "L {} {}".format((x_offset + p.x) * self.svg_scale, (y_offset - p.y) * self.svg_scale) for p in projected_points ] ) d = "M{}".format(d[1:]) path = self.svg.add(self.svg.path(d=d, class_=" ".join(classes))) - elif isinstance(data, bpy.types.Mesh): + elif isinstance(obj.data, bpy.types.Mesh): self.draw_edge_annotation(obj, classes) def draw_edge_annotation(self, obj, classes): @@ -420,25 +361,24 @@ class SvgWriter: end = Vector(((x_offset + v1.x), (y_offset - v1.y))) vector = end - start line = self.svg.add( - self.svg.line(start=tuple(start * self.scale), end=tuple(end * self.scale), class_=" ".join(classes)) + self.svg.line(start=tuple(start * self.svg_scale), end=tuple(end * self.svg_scale), class_=" ".join(classes)) ) - def draw_leader_annotations(self): - for obj in self.annotations.get("leader_objs", []): - self.draw_line_annotation((obj, obj.data)) - spline = obj.data.splines[0] - spline_points = spline.bezier_points if spline.bezier_points else spline.points - if spline_points: - position = obj.matrix_world @ spline_points[0].co.xyz - else: - position = Vector((0, 0, 0)) - self.draw_text_annotation(obj, position) + def draw_leader_annotation(self, obj): + self.draw_line_annotation(obj) + spline = obj.data.splines[0] + spline_points = spline.bezier_points if spline.bezier_points else spline.points + if spline_points: + position = obj.matrix_world @ spline_points[0].co.xyz + else: + position = Vector((0, 0, 0)) + self.draw_text_annotation(obj, position) def draw_section_annotation(self, obj): x_offset = self.raw_width / 2 y_offset = self.raw_height / 2 - self.draw_line_annotation((obj, obj.data)) + self.draw_line_annotation(obj) v1 = self.project_point_onto_camera(obj.matrix_world @ Vector((0, 0, 0))) v2 = self.project_point_onto_camera(obj.matrix_world @ Vector((0, 0, -1))) @@ -450,17 +390,17 @@ class SvgWriter: symbol_position = Vector(((x_offset + symbol_position.x), (y_offset - symbol_position.y))) transform = "rotate({}, {}, {})".format( angle, - (symbol_position * self.scale)[0], - (symbol_position * self.scale)[1], + (symbol_position * self.svg_scale)[0], + (symbol_position * self.svg_scale)[1], ) self.svg.add( - self.svg.use("#section-arrow", insert=tuple(symbol_position * self.scale), transform=transform) + self.svg.use("#section-arrow", insert=tuple(symbol_position * self.svg_scale), transform=transform) ) - self.svg.add(self.svg.use("#section-tag", insert=tuple(symbol_position * self.scale))) + self.svg.add(self.svg.use("#section-tag", insert=tuple(symbol_position * self.svg_scale))) reference_id, sheet_id = self.get_reference_and_sheet_id_from_annotation(tool.Ifc.get_entity(obj)) - text_position = list(symbol_position * self.scale) + text_position = list(symbol_position * self.svg_scale) text_style = { "font-size": annotation.Annotator.get_svg_text_size(2.5), "font-family": "OpenGost Type B TT", @@ -483,15 +423,15 @@ class SvgWriter: transform = "rotate({}, {}, {})".format( angle, - (symbol_position * self.scale)[0], - (symbol_position * self.scale)[1], + (symbol_position * self.svg_scale)[0], + (symbol_position * self.svg_scale)[1], ) - self.svg.add(self.svg.use("#elevation-arrow", insert=tuple(symbol_position * self.scale), transform=transform)) - self.svg.add(self.svg.use("#elevation-tag", insert=tuple(symbol_position * self.scale))) + self.svg.add(self.svg.use("#elevation-arrow", insert=tuple(symbol_position * self.svg_scale), transform=transform)) + self.svg.add(self.svg.use("#elevation-tag", insert=tuple(symbol_position * self.svg_scale))) reference_id, sheet_id = self.get_reference_and_sheet_id_from_annotation(tool.Ifc.get_entity(obj)) - text_position = list(symbol_position * self.scale) + text_position = list(symbol_position * self.svg_scale) text_style = { "font-size": annotation.Annotator.get_svg_text_size(2.5), "font-family": "OpenGost Type B TT", @@ -508,7 +448,7 @@ class SvgWriter: drawing = tool.Drawing.get_annotation_element(element) reference = tool.Drawing.get_drawing_reference(drawing) if reference: - sheet = tool.Drawing.get_reference_sheet(reference) + sheet = tool.Drawing.get_reference_document(reference) if sheet: if tool.Ifc.get_schema() == "IFC2X3": reference_id = reference.ItemReference or "-" @@ -539,14 +479,13 @@ class SvgWriter: transform = "rotate({}, {}, {})".format( angle, - (text_position * self.scale)[0], - (text_position * self.scale)[1], + (text_position * self.svg_scale)[0], + (text_position * self.svg_scale)[1], ) - if text_obj.BIMTextProperties.symbol != "None": - self.svg.add( - self.svg.use(f"#{text_obj.BIMTextProperties.symbol}", insert=tuple(text_position * self.scale)) - ) + symbol = tool.Drawing.get_annotation_symbol(element) + if symbol: + self.svg.add(self.svg.use(f"#{symbol}", insert=tuple(text_position * self.svg_scale))) if text_literal.BoxAlignment == "top-left": alignment_baseline = "hanging" @@ -578,7 +517,7 @@ class SvgWriter: literal = text_literal.Literal - product = tool.Drawing.get_text_product(element) + product = tool.Drawing.get_assigned_product(element) selector = ifcopenshell.util.selector.Selector variables = {} for variable in re.findall("{{.*?}}", literal): @@ -588,7 +527,7 @@ class SvgWriter: self.svg.add( self.svg.text( text_line, - insert=tuple((text_position * self.scale) + Vector((0, 3.5 * line_number))), + insert=tuple((text_position * self.svg_scale) + Vector((0, 3.5 * line_number))), class_=" ".join(self.get_attribute_classes(text_obj)), **{ "font-size": annotation.Annotator.get_svg_text_size(text_obj.BIMTextProperties.font_size), @@ -601,33 +540,28 @@ class SvgWriter: ) ) - def draw_break_annotations(self, break_obj): + def draw_break_annotations(self, obj): x_offset = self.raw_width / 2 y_offset = self.raw_height / 2 - matrix_world = break_obj.matrix_world - for polygon in break_obj.data.polygons: - points = [break_obj.data.vertices[v] for v in polygon.vertices] + classes = self.get_attribute_classes(obj) + matrix_world = obj.matrix_world + for edge in obj.data.edges: + points = [obj.data.vertices[v] for v in edge.vertices] projected_points = [self.project_point_onto_camera(matrix_world @ p.co.xyz) for p in points] + projected_points = [ + projected_points[0], + (projected_points[0] + projected_points[1]) / 2, + projected_points[1], + ] d = " ".join( [ - "L {} {}".format((x_offset + p.x) * self.scale, (y_offset - p.y) * self.scale) + "L {} {}".format((x_offset + p.x) * self.svg_scale, (y_offset - p.y) * self.svg_scale) for p in projected_points ] ) d = "M{}".format(d[1:]) - path = self.svg.add(self.svg.path(d=d, class_=" ".join(["break"]))) - - break_points = [ - projected_points[0], - ((projected_points[1] - projected_points[0]) / 2) + projected_points[0], - projected_points[1], - ] - d = " ".join( - ["L {} {}".format((x_offset + p.x) * self.scale, (y_offset - p.y) * self.scale) for p in break_points] - ) - d = "M{}".format(d[1:]) - path = self.svg.add(self.svg.path(d=d, class_=" ".join(["breakline"]))) + path = self.svg.add(self.svg.path(d=d, class_=" ".join(classes))) def draw_plan_level_annotation(self, obj): x_offset = self.raw_width / 2 @@ -639,7 +573,7 @@ class SvgWriter: projected_points = [self.project_point_onto_camera(matrix_world @ p.co.xyz) for p in points] d = " ".join( [ - "L {} {}".format((x_offset + p.x) * self.scale, (y_offset - p.y) * self.scale) + "L {} {}".format((x_offset + p.x) * self.svg_scale, (y_offset - p.y) * self.svg_scale) for p in projected_points ] ) @@ -647,8 +581,8 @@ class SvgWriter: path = self.svg.add(self.svg.path(d=d, class_=" ".join(classes))) text_position = Vector( ( - (x_offset + projected_points[0].x) * self.scale, - ((y_offset - projected_points[0].y) * self.scale) - 2.5, + (x_offset + projected_points[0].x) * self.svg_scale, + ((y_offset - projected_points[0].y) * self.svg_scale) - 2.5, ) ) # TODO: allow metric to be configurable @@ -675,10 +609,180 @@ class SvgWriter: ) ) - def draw_dimension_annotations(self, dimension_obj, text_override=None): - classes = self.get_attribute_classes(dimension_obj) - matrix_world = dimension_obj.matrix_world - for spline in dimension_obj.data.splines: + def draw_angle_annotations(self, obj): + # This implementation uses an SVG arc, which means that it can only draw + # arcs that are orthogonal to the view (e.g. not arcs in 3D). + # Gosh this is bad code :( + x_offset = self.raw_width / 2 + y_offset = self.raw_height / 2 + classes = self.get_attribute_classes(obj) + matrix_world = obj.matrix_world + + points = [v.co for v in obj.data.vertices][:3] + center = tool.Cad.get_center_of_arc(points, obj) + + bm = bmesh.new() + bm.from_mesh(obj.data) + bm.verts.ensure_lookup_table() + arc_end_verts = [v for v in bm.verts if len(v.link_edges) == 1] + arc_end_pts = [matrix_world @ v.co for v in arc_end_verts] + + # Probably need this when rewriting to use an SVG polyline instead of an arc + # arc_path = [arc_end_verts[0]] + # while True: + # last_point = arc_end_verts[0] + # found_another_point = False + # for edge in last_point.link_edges: + # v = edge.other_vert(last_point) + # if v not in arc_path: + # found_another_point = True + # arc_path.append(v) + # if not found_another_point: + # break + + distance_between_end_verts = (arc_end_verts[0].co - arc_end_verts[1].co).length + arc_mid_vert = arc_end_verts[0].link_edges[0].other_vert(arc_end_verts[0]) + is_reflex = 0 if (arc_mid_vert.co - arc_end_verts[1].co).length < distance_between_end_verts else 1 + + bm.free() + + # Calculate the angle + # This is the true normal in 3D, whereas the camera projection we use is the drawing direction. + # This assumes (because we use SVG arcs) that the radius is always orthogonal to our view. + # When rewriting to use polylines, we should use this normal instead. + # normal = mathutils.geometry.normal([arc_end_pts[0], arc_end_pts[1], center]) + normal = Vector(self.camera_projection) + dir1 = (arc_end_pts[0] - center).normalized() + dir2 = (arc_end_pts[1] - center).normalized() + + # Let's get the matrix that represents the coordinate system of the arc. + # This matrix allows us to get 2D vectors for calculating the signed arc angle. + z = normal + x = (arc_end_pts[0] - center).normalized() + y = z.cross(x) + arc_matrix = mathutils.Matrix([x, y, z]).transposed().to_4x4() + + dir1 = ((arc_matrix.inverted() @ arc_end_pts[0]) - (arc_matrix.inverted() @ center)).normalized() + dir2 = ((arc_matrix.inverted() @ arc_end_pts[1]) - (arc_matrix.inverted() @ center)).normalized() + angle = -dir1.xy.angle_signed(dir2.xy) + + #if is_reflex: + # angle = angle % (math.pi * 2) + + # Center of gravity of all vertices, used to help position the text + cog = Vector((0, 0, 0)) + for vert in obj.data.vertices: + cog += vert.co + cog = matrix_world @ (cog / len(obj.data.vertices)) + + radius = ((matrix_world @ obj.data.vertices[0].co) - center).length + + arc_midpoint = center + ((cog - center).normalized() * radius) + + text_position = self.project_point_onto_camera(arc_midpoint) + text_position = Vector(((x_offset + text_position.x) * self.svg_scale, (y_offset - text_position.y) * self.svg_scale)) + + center_projected = self.project_point_onto_camera(center) + center_position = Vector( + ((x_offset + center_projected.x) * self.svg_scale, (y_offset - center_projected.y) * self.svg_scale) + ) + text_offset = (text_position - center_position).xy.normalized() * 5 + text_position += text_offset + + text_style = { + "font-size": annotation.Annotator.get_svg_text_size(2.5), + "font-family": "OpenGost Type B TT", + "text-anchor": "middle", + "alignment-baseline": "middle", + "dominant-baseline": "middle", + } + + angle_text = abs(round(math.degrees(angle), 3)) + if is_reflex: + angle_text = 360 - angle_text + self.svg.add(self.svg.text(f"{angle_text}deg", insert=tuple(text_position), **text_style)) + + # Draw SVG arc, see for details: http://xahlee.info/js/svg_circle_arc.html + arc_proj_end_pts = [self.project_point_onto_camera(v) for v in arc_end_pts] + p1 = Vector(((x_offset + arc_proj_end_pts[0].x) * self.svg_scale, (y_offset - arc_proj_end_pts[0].y) * self.svg_scale)) + p2 = Vector(((x_offset + arc_proj_end_pts[1].x) * self.svg_scale, (y_offset - arc_proj_end_pts[1].y) * self.svg_scale)) + r = radius * self.svg_scale + # reflex = 1 if angle > math.pi else 0 + reflex = is_reflex + if reflex: + sense = 0 if angle > 0 else 1 + else: + sense = 1 if angle > 0 else 0 + d = f"M {p1.x} {p1.y} A {r} {r} 0 {reflex} {sense} {p2.x} {p2.y}" + path = self.svg.add(self.svg.path(d=d, class_=" ".join(classes))) + + def draw_radius_annotations(self, obj): + x_offset = self.raw_width / 2 + y_offset = self.raw_height / 2 + classes = self.get_attribute_classes(obj) + element = tool.Ifc.get_entity(obj) + matrix_world = obj.matrix_world + for spline in obj.data.splines: + points = self.get_spline_points(spline) + projected_points = [self.project_point_onto_camera(matrix_world @ p.co.xyz) for p in points] + d = " ".join( + [ + "L {} {}".format((x_offset + p.x) * self.svg_scale, (y_offset - p.y) * self.svg_scale) + for p in projected_points + ] + ) + d = "M{}".format(d[1:]) + path = self.svg.add(self.svg.path(d=d, class_=" ".join(classes))) + + p0 = Vector( + ((x_offset + projected_points[0].x) * self.svg_scale, (y_offset - projected_points[0].y) * self.svg_scale) + ) + p1 = Vector( + ((x_offset + projected_points[1].x) * self.svg_scale, (y_offset - projected_points[1].y) * self.svg_scale) + ) + text_offset = (p0 - p1).xy.normalized() * 5 + text_position = projected_points[0] + text_position = Vector( + ((x_offset + text_position.x) * self.svg_scale, (y_offset - text_position.y) * self.svg_scale) + ) + text_position += text_offset + + text_style = { + "font-size": annotation.Annotator.get_svg_text_size(2.5), + "font-family": "OpenGost Type B TT", + "text-anchor": "middle", + "alignment-baseline": "middle", + "dominant-baseline": "middle", + } + + radius = ((matrix_world @ points[-1].co) - (matrix_world @ points[-2].co)).length + radius = helper.format_distance(radius) + tag = element.Description or f"R{radius}" + + self.svg.add(self.svg.text(tag, insert=tuple(text_position), **text_style)) + + def draw_diameter_annotations(self, obj): + classes = self.get_attribute_classes(obj) + matrix_world = obj.matrix_world + element = tool.Ifc.get_entity(obj) + text_override = element.Description + for spline in obj.data.splines: + points = self.get_spline_points(spline) + for i, p in enumerate(points): + if i + 1 >= len(points): + continue + v0_global = matrix_world @ points[i].co.xyz + v1_global = matrix_world @ points[i + 1].co.xyz + self.draw_dimension_annotation( + v0_global, v1_global, classes, text_override, text_format=lambda x: "D" + x + ) + + def draw_dimension_annotations(self, obj): + classes = self.get_attribute_classes(obj) + matrix_world = obj.matrix_world + element = tool.Ifc.get_entity(obj) + text_override = element.Description + for spline in obj.data.splines: points = self.get_spline_points(spline) for i, p in enumerate(points): if i + 1 >= len(points): @@ -699,7 +803,7 @@ class SvgWriter: Vector(coord[0]), Vector(coord[1]), ["IfcAnnotation", "PredefinedType-DIMENSION"] ) - def draw_dimension_annotation(self, v0_global, v1_global, classes, text_override=None): + def draw_dimension_annotation(self, v0_global, v1_global, classes, text_override=None, text_format=lambda x: x): x_offset = self.raw_width / 2 y_offset = self.raw_height / 2 v0 = self.project_point_onto_camera(v0_global) @@ -711,20 +815,21 @@ class SvgWriter: perpendicular = Vector((vector.y, -vector.x)).normalized() dimension = (v1_global - v0_global).length dimension = helper.format_distance(dimension) - sheet_dimension = ((end * self.scale) - (start * self.scale)).length + sheet_dimension = ((end * self.svg_scale) - (start * self.svg_scale)).length if sheet_dimension < 5: # annotation can't fit # offset text to right of marker - text_position = (end * self.scale) + perpendicular + (3 * vector.normalized()) + text_position = (end * self.svg_scale) + perpendicular + (3 * vector.normalized()) else: - text_position = (mid * self.scale) + perpendicular + text_position = (mid * self.svg_scale) + perpendicular rotation = math.degrees(vector.angle_signed(Vector((1, 0)))) line = self.svg.add( - self.svg.line(start=tuple(start * self.scale), end=tuple(end * self.scale), class_=" ".join(classes)) + self.svg.line(start=tuple(start * self.svg_scale), end=tuple(end * self.svg_scale), class_=" ".join(classes)) ) if text_override is not None: text = text_override else: text = str(dimension) + text = text_format(text) self.svg.add( self.svg.text( text, @@ -750,35 +855,8 @@ class SvgWriter: def get_spline_points(self, spline): return spline.bezier_points if spline.bezier_points else spline.points - def draw_cut_polygons(self): - return # deprecate? - for polygon in self.ifc_cutter.cut_polygons: - self.draw_polygon(polygon, "cut") - - def draw_polyline(self, element, position): - load_occ() - classes = self.get_classes(element["raw"], position) - exp = BRepTools.BRepTools_WireExplorer(element["geometry"]) - points = [] - while exp.More(): - point = BRep.BRep_Tool.Pnt(exp.CurrentVertex()) - points.append((point.X() * self.scale, -point.Y() * self.scale)) - exp.Next() - self.svg.add(self.svg.polyline(points=points, class_=" ".join(classes))) - - def draw_line(self, element, position): - load_occ() - classes = self.get_classes(element["raw"], position) - exp = TopExp.TopExp_Explorer(element["geometry"], TopAbs.TopAbs_VERTEX) - points = [] - while exp.More(): - point = BRep.BRep_Tool.Pnt(topods.Vertex(exp.Current())) - points.append((point.X() * self.scale, -point.Y() * self.scale)) - exp.Next() - self.svg.add(self.svg.line(start=points[0], end=points[1], class_=" ".join(classes))) - def draw_polygon(self, polygon, position): - points = [(p[0] * self.scale, p[1] * self.scale) for p in polygon["points"]] + points = [(p[0] * self.svg_scale, p[1] * self.svg_scale) for p in polygon["points"]] if "classes" in polygon["metadata"]: classes = " ".join(polygon["metadata"]["classes"]) else: diff --git a/src/blenderbim/blenderbim/bim/module/drawing/ui.py b/src/blenderbim/blenderbim/bim/module/drawing/ui.py index e21b9d6006..0b8f719a1b 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/ui.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/ui.py @@ -20,7 +20,7 @@ import bpy import blenderbim.bim.helper import blenderbim.tool as tool from bpy.types import Panel -from blenderbim.bim.module.drawing.data import TextData, SheetsData, DrawingsData +from blenderbim.bim.module.drawing.data import ProductAssignmentsData, TextData, SheetsData, SchedulesData, DrawingsData class BIM_PT_camera(Panel): @@ -62,17 +62,9 @@ class BIM_PT_camera(Panel): row = layout.row() row.prop(props, "is_nts") - row = layout.row() - row.operator("bim.generate_references") row = layout.row() row.operator("bim.resize_text") - row = layout.row() - row.prop(props, "cut_objects") - if props.cut_objects == "CUSTOM": - row = layout.row() - row.prop(props, "cut_objects_custom") - row = layout.row() row.prop(props, "raster_x") row = layout.row() @@ -152,6 +144,10 @@ class BIM_PT_drawings(Panel): bl_region_type = "UI" bl_category = "BIM Documentation" + @classmethod + def poll(cls, context): + return tool.Ifc.get() + def draw(self, context): if not DrawingsData.is_loaded: DrawingsData.load() @@ -203,23 +199,40 @@ class BIM_PT_schedules(Panel): bl_region_type = "UI" bl_category = "BIM Documentation" + @classmethod + def poll(cls, context): + return tool.Ifc.get() + def draw(self, context): - layout = self.layout - layout.use_property_split = True - props = context.scene.DocProperties + if not SchedulesData.is_loaded: + SchedulesData.load() - row = layout.row(align=True) - row.operator("bim.add_schedule") + self.props = context.scene.DocProperties - if props.schedules: - row.operator("bim.build_schedule", icon="LINENUMBERS_ON", text="") - row.operator("bim.remove_schedule", icon="X", text="").index = props.active_schedule_index + if not self.props.is_editing_schedules: + row = self.layout.row(align=True) + row.label(text=f"{SchedulesData.data['total_schedules']} Schedules Found", icon="LONGDISPLAY") + row.operator("bim.load_schedules", text="", icon="IMPORT") + return - layout.template_list("BIM_UL_generic", "", props, "schedules", props, "active_schedule_index") + row = self.layout.row(align=True) + row.operator("bim.add_schedule", icon="ADD") + row.operator("bim.disable_editing_schedules", text="", icon="CANCEL") - row = layout.row() - row.prop(props.active_schedule, "file") - row.operator("bim.select_schedule_file", icon="FILE_FOLDER", text="") + if self.props.schedules: + if self.props.active_schedule_index < len(self.props.schedules): + active_schedule = self.props.schedules[self.props.active_schedule_index] + row = self.layout.row(align=True) + row.alignment = "RIGHT" + row.operator("bim.open_schedule", icon="URL", text="").schedule = active_schedule.ifc_definition_id + row.operator( + "bim.build_schedule", icon="LINENUMBERS_ON", text="" + ).schedule = active_schedule.ifc_definition_id + row.operator("bim.remove_schedule", icon="X", text="").schedule = active_schedule.ifc_definition_id + + self.layout.template_list( + "BIM_UL_generic", "", self.props, "schedules", self.props, "active_schedule_index" + ) class BIM_PT_sheets(Panel): @@ -229,6 +242,10 @@ class BIM_PT_sheets(Panel): bl_region_type = "UI" bl_category = "BIM Documentation" + @classmethod + def poll(cls, context): + return tool.Ifc.get() + def draw(self, context): if not SheetsData.is_loaded: SheetsData.load() @@ -263,6 +280,39 @@ class BIM_PT_sheets(Panel): self.layout.template_list("BIM_UL_sheets", "", self.props, "sheets", self.props, "active_sheet_index") +class BIM_PT_product_assignments(Panel): + bl_label = "IFC Product Assignments" + bl_idname = "BIM_PT_product_assignments" + bl_space_type = "PROPERTIES" + bl_region_type = "WINDOW" + bl_context = "object" + + @classmethod + def poll(cls, context): + if not tool.Ifc.get() or not context.active_object: + return + element = tool.Ifc.get_entity(context.active_object) + if not element: + return + return element.is_a("IfcAnnotation") + + def draw(self, context): + if not ProductAssignmentsData.is_loaded: + ProductAssignmentsData.load() + + props = context.active_object.BIMAssignedProductProperties + + if props.is_editing_product: + row = self.layout.row(align=True) + row.prop(props, "relating_product", text="") + row.operator("bim.edit_assigned_product", icon="CHECKMARK", text="") + row.operator("bim.disable_editing_assigned_product", icon="CANCEL", text="") + else: + row = self.layout.row(align=True) + row.label(text=ProductAssignmentsData.data["relating_product"] or "No Relating Product", icon="OBJECT_DATA") + row.operator("bim.enable_editing_assigned_product", icon="GREASEPENCIL", text="") + + class BIM_PT_text(Panel): bl_label = "IFC Text" bl_idname = "BIM_PT_text" @@ -299,16 +349,6 @@ class BIM_PT_text(Panel): row.label(text=attribute["name"]) row.label(text=attribute["value"]) - if props.is_editing_product: - row = self.layout.row(align=True) - row.prop(props, "relating_product", text="") - row.operator("bim.edit_text_product", icon="CHECKMARK", text="") - row.operator("bim.disable_editing_text_product", icon="CANCEL", text="") - else: - row = self.layout.row(align=True) - row.label(text=TextData.data["relating_product"] or "No Relating Product", icon="OBJECT_DATA") - row.operator("bim.enable_editing_text_product", icon="GREASEPENCIL", text="") - row = self.layout.row() row.prop(props, "font_size") row = self.layout.row() @@ -328,11 +368,19 @@ class BIM_PT_annotation_utilities(Panel): self.props = context.scene.DocProperties row = layout.row(align=True) - op = row.operator("bim.add_annotation", text="Dim", icon="ARROW_LEFTRIGHT") + op = row.operator("bim.add_annotation", text="Dimension", icon="FIXED_SIZE") op.object_type = "DIMENSION" op.data_type = "curve" - op = row.operator("bim.add_annotation", text="Dim (Eq)", icon="ARROW_LEFTRIGHT") - op.object_type = "EQUAL_DIMENSION" + op = row.operator("bim.add_annotation", text="Angle", icon="DRIVER_ROTATIONAL_DIFFERENCE") + op.object_type = "ANGLE" + op.data_type = "mesh" + + row = layout.row(align=True) + op = row.operator("bim.add_annotation", text="Radius", icon="FORWARD") + op.object_type = "RADIUS" + op.data_type = "curve" + op = row.operator("bim.add_annotation", text="Diameter", icon="ARROW_LEFTRIGHT") + op.object_type = "DIAMETER" op.data_type = "curve" row = layout.row(align=True) @@ -363,10 +411,14 @@ class BIM_PT_annotation_utilities(Panel): op = row.operator("bim.add_annotation", text="Breakline", icon="FCURVE") op.object_type = "BREAKLINE" op.data_type = "mesh" - op = row.operator("bim.add_annotation", text="Misc", icon="MESH_MONKEY") - op.object_type = "MISC" + op = row.operator("bim.add_annotation", text="Line", icon="MESH_MONKEY") + op.object_type = "LINEWORK" op.data_type = "mesh" + row = layout.row(align=True) + op = row.operator("bim.add_annotation", text="Fill Area", icon="NODE_TEXTURE") + op.object_type = "FILL_AREA" + row = layout.row(align=True) row.prop(self.props, "should_draw_decorations", text="Viewport Annotations") @@ -407,6 +459,8 @@ class BIM_UL_sheets(bpy.types.UIList): row.label(text="", icon="BLANK1") if item.reference_type == "DRAWING": row.label(text="", icon="IMAGE_DATA") + elif item.reference_type == "SCHEDULE": + row.label(text="", icon="LONGDISPLAY") name = "{} - {}".format(item.identification or "X", item.name or "Unnamed") row.label(text=name) diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index 8f8c301913..541cb0a92d 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -206,25 +206,14 @@ class UpdateRepresentation(bpy.types.Operator): new_representation = ifcopenshell.api.run("geometry.add_representation", self.file, **representation_data) - [ - blenderbim.core.style.add_style(tool.Ifc, tool.Style, obj=s.material) - for s in obj.material_slots - if s.material and not s.material.BIMMaterialProperties.ifc_style_id - ] - - if isinstance(obj.data, bpy.types.Mesh) and len(obj.data.polygons): + if tool.Geometry.is_body_representation(new_representation): + [tool.Geometry.run_style_add_style(obj=mat) for mat in tool.Geometry.get_object_materials_without_styles(obj)] ifcopenshell.api.run( "style.assign_representation_styles", self.file, - **{ - "shape_representation": new_representation, - "styles": [ - self.file.by_id(s.material.BIMMaterialProperties.ifc_style_id) - for s in obj.material_slots - if s.material - ], - "should_use_presentation_style_assignment": context.scene.BIMGeometryProperties.should_use_presentation_style_assignment, - }, + shape_representation=new_representation, + styles=tool.Geometry.get_styles(obj), + should_use_presentation_style_assignment=context.scene.BIMGeometryProperties.should_use_presentation_style_assignment, ) tool.Geometry.record_object_materials(obj) @@ -332,8 +321,8 @@ class CopyRepresentation(bpy.types.Operator, Operator): class OverrideDeleteTrait: def delete_ifc_object(self, obj): - if obj.BIMObjectProperties.ifc_definition_id: - element = IfcStore.get_file().by_id(obj.BIMObjectProperties.ifc_definition_id) + element = tool.Ifc.get_entity(obj) + if element: IfcStore.delete_element(element) if getattr(element, "FillsVoids", None): self.remove_filling(element) @@ -342,9 +331,12 @@ class OverrideDeleteTrait: self.remove_filling(rel.RelatedBuildingElement) if element.VoidsElements: self.delete_opening_element(element) - elif getattr(element, "HasOpenings", None): - for rel in element.HasOpenings: - self.delete_opening_element(rel.RelatedOpeningElement) + else: + if getattr(element, "HasOpenings", None): + for rel in element.HasOpenings: + self.delete_opening_element(rel.RelatedOpeningElement) + for port in ifcopenshell.util.system.get_ports(element): + self.remove_port(port) def delete_opening_element(self, element): obj = IfcStore.get_element(element.VoidsElements[0].RelatingBuildingElement.id()) @@ -354,6 +346,9 @@ class OverrideDeleteTrait: obj = IfcStore.get_element(element.id()) bpy.ops.bim.remove_filling(obj=obj.name) + def remove_port(self, port): + blenderbim.core.system.remove_port(tool.Ifc, tool.System, port=port) + class OverrideDelete(bpy.types.Operator, OverrideDeleteTrait): bl_idname = "object.delete" diff --git a/src/blenderbim/blenderbim/bim/module/georeference/data.py b/src/blenderbim/blenderbim/bim/module/georeference/data.py new file mode 100644 index 0000000000..66df12b93b --- /dev/null +++ b/src/blenderbim/blenderbim/bim/module/georeference/data.py @@ -0,0 +1,123 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2022 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + + +import bpy +import ifcopenshell.util.geolocation +import blenderbim.tool as tool + + +def refresh(): + GeoreferenceData.is_loaded = False + + +class GeoreferenceData: + data = {} + is_loaded = False + + @classmethod + def load(cls): + cls.data["blender_derived_angle"] = cls.blender_derived_angle() + cls.data["map_conversion"] = cls.map_conversion() + cls.data["map_derived_angle"] = cls.map_derived_angle() + cls.data["projected_crs"] = cls.projected_crs() + cls.data["true_north"] = cls.true_north() + cls.data["true_derived_angle"] = cls.true_derived_angle() + cls.is_loaded = True + + @classmethod + def blender_derived_angle(cls): + props = bpy.context.scene.BIMGeoreferenceProperties + if props.has_blender_offset: + return str( + round( + ifcopenshell.util.geolocation.xaxis2angle( + float(props.blender_x_axis_abscissa), float(props.blender_x_axis_ordinate) + ), + 3, + ) + ) + + @classmethod + def map_conversion(cls): + if tool.Ifc.get_schema() == "IFC2X3": + return {} + + for context in tool.Ifc.get().by_type("IfcGeometricRepresentationContext", include_subtypes=False): + if context.HasCoordinateOperation: + map_conversion = context.HasCoordinateOperation[0].get_info() + del map_conversion["id"] + del map_conversion["type"] + del map_conversion["SourceCRS"] + del map_conversion["TargetCRS"] + return map_conversion + return {} + + @classmethod + def map_derived_angle(cls): + if ( + cls.data["map_conversion"] + and cls.data["map_conversion"]["XAxisAbscissa"] is not None + and cls.data["map_conversion"]["XAxisOrdinate"] is not None + ): + return str( + round( + ifcopenshell.util.geolocation.xaxis2angle( + cls.data["map_conversion"]["XAxisAbscissa"], cls.data["map_conversion"]["XAxisOrdinate"] + ), + 3, + ) + ) + return "" + + @classmethod + def projected_crs(cls): + if tool.Ifc.get_schema() == "IFC2X3": + return {} + + for context in tool.Ifc.get().by_type("IfcGeometricRepresentationContext", include_subtypes=False): + if context.HasCoordinateOperation: + projected_crs = context.HasCoordinateOperation[0].TargetCRS.get_info() + del projected_crs["id"] + del projected_crs["type"] + if projected_crs["MapUnit"]: + unit = projected_crs["MapUnit"] + projected_crs["MapUnit"] = (getattr(unit, "Prefix", "") or "") + unit.Name + return projected_crs + return {} + + @classmethod + def true_north(cls): + ifc = tool.Ifc.get() + true_north = {} + + if ifc.schema == "IFC2X3": + return + + for context in ifc.by_type("IfcGeometricRepresentationContext", include_subtypes=False): + if not context.TrueNorth: + continue + true_north = context.TrueNorth.DirectionRatios + break + + return true_north + + @classmethod + def true_derived_angle(cls): + if cls.data["true_north"]: + return str(round(ifcopenshell.util.geolocation.yaxis2angle(*cls.data["true_north"][0:2]), 3)) diff --git a/src/blenderbim/blenderbim/bim/module/georeference/operator.py b/src/blenderbim/blenderbim/bim/module/georeference/operator.py index 5b3e09037d..71bde91ba8 100644 --- a/src/blenderbim/blenderbim/bim/module/georeference/operator.py +++ b/src/blenderbim/blenderbim/bim/module/georeference/operator.py @@ -17,345 +17,157 @@ # along with BlenderBIM Add-on. If not, see . import bpy -import json -import ifcopenshell -import ifcopenshell.util.unit -import ifcopenshell.util.attribute -import ifcopenshell.api -import blenderbim.bim.helper -from blenderbim.bim.ifc import IfcStore -from ifcopenshell.api.georeference.data import Data -from ifcopenshell.api.unit.data import Data as UnitData -from math import radians, degrees, atan, tan, cos, sin + +import blenderbim.tool as tool +import blenderbim.core.georeference as core -class EnableEditingGeoreferencing(bpy.types.Operator): - bl_idname = "bim.enable_editing_georeferencing" - bl_label = "Enable Editing Georeferencing" - bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - self.file = IfcStore.get_file() - props = context.scene.BIMGeoreferenceProperties - self.props = props - - props.projected_crs.clear() - - blenderbim.bim.helper.import_attributes( - "IfcProjectedCRS", props.projected_crs, Data.projected_crs, self.import_projected_crs_attributes - ) - - props.map_conversion.clear() - blenderbim.bim.helper.import_attributes( - "IfcMapConversion", props.map_conversion, Data.map_conversion, self.import_map_conversion_attributes - ) - - props.has_true_north = bool(Data.true_north) - if Data.true_north: - props.true_north_abscissa = str(Data.true_north[0]) - props.true_north_ordinate = str(Data.true_north[1]) - - props.is_editing = True - return {"FINISHED"} - - def import_projected_crs_attributes(self, name, prop, data): - if name == "MapUnit": - new = self.props.projected_crs.add() - new.name = name - new.data_type = "enum" - new.is_null = data[name] is None - new.is_optional = True - new.enum_items = json.dumps( - {u["id"]: u["Name"] for u in UnitData.units.values() if u["UnitType"] == "LENGTHUNIT"} - ) - if data["MapUnit"]: - new.enum_value = str(data["MapUnit"]["id"]) - return True - - def import_map_conversion_attributes(self, name, prop, data): - if name not in ["SourceCRS", "TargetCRS"]: - # Enforce a string data type to prevent data loss in single-precision Blender props - prop.data_type = "string" - prop.string_value = "" if prop.is_null else str(data[name]) - return True - - -class DisableEditingGeoreferencing(bpy.types.Operator): - bl_idname = "bim.disable_editing_georeferencing" - bl_label = "Disable Editing Georeferencing" - bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - props = context.scene.BIMGeoreferenceProperties - props.is_editing = False - return {"FINISHED"} - - -class EditGeoreferencing(bpy.types.Operator): - bl_idname = "bim.edit_georeferencing" - bl_label = "Edit Georeferencing" - bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - return IfcStore.execute_ifc_operator(self, context) - - def _execute(self, context): - self.file = IfcStore.get_file() - props = context.scene.BIMGeoreferenceProperties - - projected_crs = blenderbim.bim.helper.export_attributes(props.projected_crs, self.export_crs_attributes) - map_conversion = blenderbim.bim.helper.export_attributes(props.map_conversion, self.export_map_attributes) - - true_north = None - if props.has_true_north: - try: - true_north = [float(props.true_north_abscissa), float(props.true_north_ordinate)] - except ValueError: - self.report({"ERROR"}, "True North Abscissa and Ordinate expect a number") - - ifcopenshell.api.run( - "georeference.edit_georeferencing", - self.file, - **{ - "map_conversion": map_conversion, - "projected_crs": projected_crs, - "true_north": true_north, - } - ) - Data.load(self.file) - bpy.ops.bim.disable_editing_georeferencing() - return {"FINISHED"} - - def export_map_attributes(self, attributes, prop): - if not prop.is_null and prop.data_type == "string": - # We store our floats as string to prevent single precision data loss - attributes[prop.name] = float(prop.string_value) - return True - - def export_crs_attributes(self, attributes, prop): - if not prop.is_null and prop.name == "MapUnit": - attributes[prop.name] = self.file.by_id(int(prop.enum_value)) - return True - - -class SetBlenderGridNorth(bpy.types.Operator): - bl_idname = "bim.set_blender_grid_north" - bl_label = "Set Blender Grid North" - bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - context.scene.sun_pos_properties.north_offset = -radians( - ifcopenshell.util.geolocation.xaxis2angle( - float(context.scene.BIMGeoreferenceProperties.map_conversion.get("XAxisAbscissa").string_value), - float(context.scene.BIMGeoreferenceProperties.map_conversion.get("XAxisOrdinate").string_value), - ) - ) - return {"FINISHED"} - - -class SetIfcGridNorth(bpy.types.Operator): - bl_idname = "bim.set_ifc_grid_north" - bl_label = "Set IFC Grid North" - bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - x_angle = -context.scene.sun_pos_properties.north_offset - context.scene.BIMGeoreferenceProperties.map_conversion.get("XAxisAbscissa").string_value = str(cos(x_angle)) - context.scene.BIMGeoreferenceProperties.map_conversion.get("XAxisOrdinate").string_value = str(sin(x_angle)) - return {"FINISHED"} - - -class SetBlenderTrueNorth(bpy.types.Operator): - bl_idname = "bim.set_blender_true_north" - bl_label = "Set Blender True North" - bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - context.scene.sun_pos_properties.north_offset = -radians( - ifcopenshell.util.geolocation.yaxis2angle( - float(context.scene.BIMGeoreferenceProperties.true_north_abscissa), - float(context.scene.BIMGeoreferenceProperties.true_north_ordinate), - ) - ) - return {"FINISHED"} - - -class SetIfcTrueNorth(bpy.types.Operator): - bl_idname = "bim.set_ifc_true_north" - bl_label = "Set IFC True North" - bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - y_angle = -context.scene.sun_pos_properties.north_offset + radians(90) - context.scene.BIMGeoreferenceProperties.true_north_abscissa = str(cos(y_angle)) - context.scene.BIMGeoreferenceProperties.true_north_ordinate = str(sin(y_angle)) - return {"FINISHED"} - - -class RemoveGeoreferencing(bpy.types.Operator): - bl_idname = "bim.remove_georeferencing" - bl_label = "Remove Georeferencing" - bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - return IfcStore.execute_ifc_operator(self, context) - - def _execute(self, context): - ifcopenshell.api.run("georeference.remove_georeferencing", IfcStore.get_file()) - Data.load(IfcStore.get_file()) - return {"FINISHED"} - - -class AddGeoreferencing(bpy.types.Operator): +class AddGeoreferencing(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.add_georeferencing" bl_label = "Add Georeferencing" bl_options = {"REGISTER", "UNDO"} - - def execute(self, context): - return IfcStore.execute_ifc_operator(self, context) + bl_description = "Add a new georeference" def _execute(self, context): - ifcopenshell.api.run("georeference.add_georeferencing", IfcStore.get_file()) - Data.load(IfcStore.get_file()) - return {"FINISHED"} + core.add_georeferencing(tool.Ifc) -class ConvertLocalToGlobal(bpy.types.Operator): - bl_idname = "bim.convert_local_to_global" - bl_label = "Convert Local To Global" +class EnableEditingGeoreferencing(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.enable_editing_georeferencing" + bl_label = "Enable Editing Georeferencing" bl_options = {"REGISTER", "UNDO"} + bl_description = "Enable editing georeferencing" - @classmethod - def poll(cls, context): - file = IfcStore.get_file() - props = context.scene.BIMGeoreferenceProperties - return file and props.coordinate_input.count(",") == 2 - - def execute(self, context): - if not Data.is_loaded: - Data.load(IfcStore.get_file()) - props = context.scene.BIMGeoreferenceProperties - x, y, z = [float(co) for co in props.coordinate_input.split(",")] - - if props.has_blender_offset: - results = ifcopenshell.util.geolocation.xyz2enh( - x, - y, - z, - float(props.blender_eastings), - float(props.blender_northings), - float(props.blender_orthogonal_height), - float(props.blender_x_axis_abscissa), - float(props.blender_x_axis_ordinate), - 1.0, - ) - x, y, z = results - - # TODO: what if the project CRS units and the project units are different? - - if Data.map_conversion: - results = ifcopenshell.util.geolocation.xyz2enh( - x, - y, - z, - Data.map_conversion["Eastings"], - Data.map_conversion["Northings"], - Data.map_conversion["OrthogonalHeight"], - Data.map_conversion.get("XAxisAbscissa", 1.0), - Data.map_conversion.get("XAxisOrdinate", 0.0), - Data.map_conversion.get("Scale", 1.0), - ) - else: - results = (x, y, z) - - props.coordinate_output = ",".join([str(r) for r in results]) - context.scene.cursor.location = results - return {"FINISHED"} + def _execute(self, context): + core.enable_editing_georeferencing(tool.Georeference) -class ConvertGlobalToLocal(bpy.types.Operator): - bl_idname = "bim.convert_global_to_local" - bl_label = "Convert Global To Local" +class RemoveGeoreferencing(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.remove_georeferencing" + bl_label = "Remove Georeferencing" bl_options = {"REGISTER", "UNDO"} + bl_description = "Remove the georeferencing" - @classmethod - def poll(cls, context): - file = IfcStore.get_file() - props = context.scene.BIMGeoreferenceProperties - return file and file.by_type("IfcUnitAssignment") and props.coordinate_input.count(",") == 2 - - def execute(self, context): - if not Data.is_loaded: - Data.load(IfcStore.get_file()) - props = context.scene.BIMGeoreferenceProperties - x, y, z = [float(co) for co in props.coordinate_input.split(",")] - - if Data.map_conversion: - results = ifcopenshell.util.geolocation.enh2xyz( - x, - y, - z, - Data.map_conversion["Eastings"], - Data.map_conversion["Northings"], - Data.map_conversion["OrthogonalHeight"], - Data.map_conversion.get("XAxisAbscissa", 1.0), - Data.map_conversion.get("XAxisOrdinate", 0.0), - Data.map_conversion.get("Scale", 1.0), - ) - else: - results = (x, y, z) - - if props.has_blender_offset: - results = ifcopenshell.util.geolocation.enh2xyz( - results[0], - results[1], - results[2], - float(props.blender_eastings), - float(props.blender_northings), - float(props.blender_orthogonal_height), - float(props.blender_x_axis_abscissa), - float(props.blender_x_axis_ordinate), - 1.0, - ) - - props.coordinate_output = ",".join([str(r) for r in results]) - - scale = ifcopenshell.util.unit.calculate_unit_scale(IfcStore.get_file()) - context.scene.cursor.location = [o * scale for o in results] - return {"FINISHED"} + def _execute(self, context): + core.remove_georeferencing(tool.Ifc) -class GetCursorLocation(bpy.types.Operator): +class EditGeoreferencing(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.edit_georeferencing" + bl_label = "Edit Georeferencing" + bl_options = {"REGISTER", "UNDO"} + bl_description = "Edit the georeferencing" + + def _execute(self, context): + core.edit_georeferencing(tool.Ifc, tool.Georeference) + + +class DisableEditingGeoreferencing(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.disable_editing_georeferencing" + bl_label = "Disable Editing Georeferencing" + bl_options = {"REGISTER", "UNDO"} + bl_description = "Close editing panel" + + def _execute(self, context): + core.disable_editing_georeferencing(tool.Georeference) + + +class SetIfcGridNorth(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.set_ifc_grid_north" + bl_label = "Set IFC Grid North" + bl_options = {"REGISTER", "UNDO"} + bl_description = "Set IFC grid north" + + def _execute(self, context): + core.set_ifc_grid_north(tool.Georeference) + + +class SetBlenderGridNorth(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.set_blender_grid_north" + bl_label = "Set Blender Grid North" + bl_options = {"REGISTER", "UNDO"} + bl_description = "Set Blender grid north" + + def _execute(self, context): + core.set_blender_grid_north(tool.Georeference) + + +class GetCursorLocation(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.get_cursor_location" bl_label = "Get Cursor Location" bl_options = {"REGISTER", "UNDO"} + bl_description = "Insert the current cursor coordinates" @classmethod def poll(cls, context): - file = IfcStore.get_file() - return file and file.by_type("IfcUnitAssignment") + return tool.Ifc.get() - def execute(self, context): - props = context.scene.BIMGeoreferenceProperties - scale = ifcopenshell.util.unit.calculate_unit_scale(IfcStore.get_file()) - project_coordinates = [o / scale for o in context.scene.cursor.location] - props.coordinate_input = ",".join([str(o) for o in project_coordinates]) - return {"FINISHED"} + def _execute(self, context): + core.get_cursor_location(tool.Georeference) -class SetCursorLocation(bpy.types.Operator): +class SetCursorLocation(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.set_cursor_location" bl_label = "Set Cursor Location" bl_options = {"REGISTER", "UNDO"} + bl_description = "Move curson location to the specified coordinates" @classmethod def poll(cls, context): - file = IfcStore.get_file() props = context.scene.BIMGeoreferenceProperties - return file and file.by_type("IfcUnitAssignment") and props.coordinate_output.count(",") == 2 + return tool.Ifc.get() and props.coordinate_output.count(",") == 2 - def execute(self, context): + def _execute(self, context): + core.set_cursor_location(tool.Georeference) + + +class SetIfcTrueNorth(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.set_ifc_true_north" + bl_label = "Set IFC True North" + bl_options = {"REGISTER", "UNDO"} + bl_description = "Set IFC True north" + + def _execute(self, context): + core.set_ifc_true_north(tool.Georeference) + + +class SetBlenderTrueNorth(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.set_blender_true_north" + bl_label = "Set Blender True North" + bl_options = {"REGISTER", "UNDO"} + bl_description = "Set Blender true north" + + def _execute(self, context): + core.set_blender_true_north(tool.Georeference) + + +class ConvertLocalToGlobal(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.convert_local_to_global" + bl_label = "Convert Local To Global" + bl_options = {"REGISTER", "UNDO"} + bl_description = "Convert local coordinate to global coordinate" + + @classmethod + def poll(cls, context): + file = tool.Ifc.get() props = context.scene.BIMGeoreferenceProperties - scale = ifcopenshell.util.unit.calculate_unit_scale(IfcStore.get_file()) - context.scene.cursor.location = [float(co) * scale for co in props.coordinate_output.split(",")] - return {"FINISHED"} + return file and props.coordinate_input.count(",") == 2 + + def _execute(self, context): + core.convert_local_to_global(tool.Georeference) + + +class ConvertGlobalToLocal(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.convert_global_to_local" + bl_label = "Convert Global To Local" + bl_options = {"REGISTER", "UNDO"} + bl_description = "Convert global coordinate to local coordinate" + + @classmethod + def poll(cls, context): + file = tool.Ifc.get() + props = context.scene.BIMGeoreferenceProperties + return file and file.by_type("IfcUnitAssignment") and props.coordinate_input.count(",") == 2 + + def _execute(self, context): + core.convert_global_to_local(tool.Georeference) diff --git a/src/blenderbim/blenderbim/bim/module/georeference/ui.py b/src/blenderbim/blenderbim/bim/module/georeference/ui.py index 062b229bab..15c28e3467 100644 --- a/src/blenderbim/blenderbim/bim/module/georeference/ui.py +++ b/src/blenderbim/blenderbim/bim/module/georeference/ui.py @@ -16,11 +16,10 @@ # You should have received a copy of the GNU General Public License # along with BlenderBIM Add-on. If not, see . -import ifcopenshell.util.geolocation +import blenderbim.tool as tool from bpy.types import Panel -from ifcopenshell.api.georeference.data import Data -from blenderbim.bim.ifc import IfcStore from blenderbim.bim.helper import draw_attributes, draw_attribute +from blenderbim.bim.module.georeference.data import GeoreferenceData class BIM_PT_gis(Panel): @@ -32,16 +31,13 @@ class BIM_PT_gis(Panel): bl_context = "scene" bl_parent_id = "BIM_PT_geometry" - @classmethod - def poll(cls, context): - return IfcStore.get_file() - def draw(self, context): self.layout.use_property_split = True self.layout.use_property_decorate = False props = context.scene.BIMGeoreferenceProperties - if not Data.is_loaded: - Data.load(IfcStore.get_file()) + + if not GeoreferenceData.is_loaded: + GeoreferenceData.load() if props.is_editing: return self.draw_editable_ui(context) @@ -82,10 +78,10 @@ class BIM_PT_gis(Panel): def draw_ui(self, context): props = context.scene.BIMGeoreferenceProperties - if not Data.projected_crs: + if not GeoreferenceData.data["projected_crs"]: row = self.layout.row(align=True) row.label(text="Not Georeferenced") - if IfcStore.get_file().schema != "IFC2X3": + if tool.Ifc.get_schema != "IFC2X3": row.operator("bim.add_georeferencing", icon="ADD", text="") if props.has_blender_offset: @@ -109,43 +105,27 @@ class BIM_PT_gis(Panel): row.label(text=props.blender_x_axis_ordinate) row = self.layout.row(align=True) row.label(text="Derived Grid North") - row.label( - text=str( - round( - ifcopenshell.util.geolocation.xaxis2angle( - float(props.blender_x_axis_abscissa), float(props.blender_x_axis_ordinate) - ), - 3, - ) - ) - ) - elif IfcStore.get_file().schema == "IFC2X3": - row = self.layout.row() - row.label(text="Not Georeferenced") + row.label(text=GeoreferenceData.data["blender_derived_angle"]) - if Data.projected_crs: + if GeoreferenceData.data["projected_crs"]: row = self.layout.row(align=True) row.label(text="Projected CRS", icon="WORLD") row.operator("bim.enable_editing_georeferencing", icon="GREASEPENCIL", text="") row.operator("bim.remove_georeferencing", icon="X", text="") - for key, value in Data.projected_crs.items(): - if key == "id" or key == "type" or not value: + for key, value in GeoreferenceData.data["projected_crs"].items(): + if not value: continue - if key == "MapUnit": - unit_value = value.get("Prefix", "") or "" - unit_value += value["Name"] - value = unit_value row = self.layout.row(align=True) row.label(text=key) row.label(text=str(value)) - if Data.map_conversion: + if GeoreferenceData.data["map_conversion"]: row = self.layout.row(align=True) row.label(text="Map Conversion", icon="GRID") - for key, value in Data.map_conversion.items(): - if key == "id" or key == "type" or key == "SourceCRS" or key == "TargetCRS" or value is None: + for key, value in GeoreferenceData.data["map_conversion"].items(): + if value is None: continue row = self.layout.row(align=True) row.label(text=key) @@ -153,26 +133,17 @@ class BIM_PT_gis(Panel): if key == "XAxisOrdinate": row = self.layout.row(align=True) row.label(text="Derived Angle") - row.label( - text=str( - round( - ifcopenshell.util.geolocation.xaxis2angle( - Data.map_conversion["XAxisAbscissa"], Data.map_conversion["XAxisOrdinate"] - ), - 3, - ) - ) - ) + row.label(text=GeoreferenceData.data["map_derived_angle"]) - if Data.true_north: + if GeoreferenceData.data["true_north"]: row = self.layout.row() row.label(text="True North", icon="LIGHT_SUN") row = self.layout.row(align=True) row.label(text="Vector") - row.label(text=str(Data.true_north[0:2])[1:-1]) + row.label(text=str(GeoreferenceData.data["true_north"][0:2])[1:-1]) row = self.layout.row(align=True) row.label(text="Derived Angle") - row.label(text=str(round(ifcopenshell.util.geolocation.yaxis2angle(*Data.true_north[0:2]), 3))) + row.label(text=GeoreferenceData.data["true_derived_angle"]) class BIM_PT_gis_utilities(Panel): diff --git a/src/blenderbim/blenderbim/bim/module/material/__init__.py b/src/blenderbim/blenderbim/bim/module/material/__init__.py index 8ba682ae5c..818cd76977 100644 --- a/src/blenderbim/blenderbim/bim/module/material/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/material/__init__.py @@ -28,6 +28,7 @@ classes = ( operator.AddProfile, operator.AssignMaterial, operator.AssignParameterizedProfile, + operator.ContractMaterialCategory, operator.CopyMaterial, operator.DisableEditingAssignedMaterial, operator.DisableEditingMaterialSetItem, @@ -36,6 +37,7 @@ classes = ( operator.EditMaterialSetItem, operator.EnableEditingAssignedMaterial, operator.EnableEditingMaterialSetItem, + operator.ExpandMaterialCategory, operator.LoadMaterials, operator.RemoveConstituent, operator.RemoveLayer, diff --git a/src/blenderbim/blenderbim/bim/module/material/data.py b/src/blenderbim/blenderbim/bim/module/material/data.py index a327e31ab8..4d90a29408 100644 --- a/src/blenderbim/blenderbim/bim/module/material/data.py +++ b/src/blenderbim/blenderbim/bim/module/material/data.py @@ -78,9 +78,24 @@ class ObjectMaterialData: def load(cls): cls.data = { "materials": cls.materials(), + "type_material": cls.type_material(), } cls.is_loaded = True @classmethod def materials(cls): return sorted([(str(m.id()), m.Name or "Unnamed", "") for m in tool.Ifc.get().by_type("IfcMaterial")], key=lambda x: x[1]) + + @classmethod + def type_material(cls): + element = tool.Ifc.get_entity(bpy.context.active_object) + element_type = ifcopenshell.util.element.get_type(element) + if element_type and element_type != element: + material = ifcopenshell.util.element.get_material(element_type) + if not material: + return + if material.is_a() in ("IfcMaterialLayerSetUsage", "IfcMaterialLayerSet"): + name_attr = "LayerSetName" + else: + name_attr = "Name" + return getattr(material, name_attr, "Unnamed") or "Unnamed" diff --git a/src/blenderbim/blenderbim/bim/module/material/operator.py b/src/blenderbim/blenderbim/bim/module/material/operator.py index 37e4781581..b635f13fa6 100644 --- a/src/blenderbim/blenderbim/bim/module/material/operator.py +++ b/src/blenderbim/blenderbim/bim/module/material/operator.py @@ -778,3 +778,31 @@ class CopyMaterial(bpy.types.Operator): if material.id() in object_material_ids: return obj.data.materials.append(IfcStore.get_element(material.id())) + + +class ExpandMaterialCategory(bpy.types.Operator): + bl_idname = "bim.expand_material_category" + bl_label = "Expand Material Category" + bl_options = {"REGISTER", "UNDO"} + category: bpy.props.StringProperty() + + def execute(self, context): + props = context.scene.BIMMaterialProperties + for category in [c for c in props.materials if c.is_category and c.name == self.category]: + category.is_expanded = True + core.load_materials(tool.Material, props.material_type) + return {"FINISHED"} + + +class ContractMaterialCategory(bpy.types.Operator): + bl_idname = "bim.contract_material_category" + bl_label = "Contract Material Category" + bl_options = {"REGISTER", "UNDO"} + category: bpy.props.StringProperty() + + def execute(self, context): + props = context.scene.BIMMaterialProperties + for category in [c for c in props.materials if c.is_category and c.name == self.category]: + category.is_expanded = False + core.load_materials(tool.Material, props.material_type) + return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/material/prop.py b/src/blenderbim/blenderbim/bim/module/material/prop.py index 349d132452..8f400ab07f 100644 --- a/src/blenderbim/blenderbim/bim/module/material/prop.py +++ b/src/blenderbim/blenderbim/bim/module/material/prop.py @@ -109,6 +109,8 @@ def get_material_types(self, context): class Material(PropertyGroup): name: StringProperty(name="Name") ifc_definition_id: IntProperty(name="IFC Definition ID") + is_category: BoolProperty(name="Is Category", default=False) + is_expanded: BoolProperty(name="Is Expanded", default=True) total_elements: IntProperty(name="Total Elements") diff --git a/src/blenderbim/blenderbim/bim/module/material/ui.py b/src/blenderbim/blenderbim/bim/module/material/ui.py index 818d59cedb..d0048f5633 100644 --- a/src/blenderbim/blenderbim/bim/module/material/ui.py +++ b/src/blenderbim/blenderbim/bim/module/material/ui.py @@ -61,16 +61,18 @@ class BIM_PT_materials(Panel): row.operator("bim.add_material", text="", icon="ADD") if self.props.materials and self.props.active_material_index < len(self.props.materials): material = self.props.materials[self.props.active_material_index] - op = row.operator("bim.select_by_material", text="", icon="RESTRICT_SELECT_OFF") - op.material = material.ifc_definition_id - row.operator("bim.remove_material", text="", icon="X").material = material.ifc_definition_id + if material.ifc_definition_id: + op = row.operator("bim.select_by_material", text="", icon="RESTRICT_SELECT_OFF") + op.material = material.ifc_definition_id + row.operator("bim.remove_material", text="", icon="X").material = material.ifc_definition_id else: row.operator("bim.add_material_set", text="", icon="ADD").set_type = self.props.material_type if self.props.materials and self.props.active_material_index < len(self.props.materials): material = self.props.materials[self.props.active_material_index] - op = row.operator("bim.select_by_material", text="", icon="RESTRICT_SELECT_OFF") - op.material = material.ifc_definition_id - row.operator("bim.remove_material_set", text="", icon="X").material = material.ifc_definition_id + if material.ifc_definition_id: + op = row.operator("bim.select_by_material", text="", icon="RESTRICT_SELECT_OFF") + op.material = material.ifc_definition_id + row.operator("bim.remove_material_set", text="", icon="X").material = material.ifc_definition_id self.layout.template_list("BIM_UL_materials", "", self.props, "materials", self.props, "active_material_index") @@ -139,6 +141,10 @@ class BIM_PT_object_material(Panel): row.operator("bim.add_material", icon="ADD", text="").obj = "" return + if ObjectMaterialData.data["type_material"]: + row = self.layout.row(align=True) + row.label(text="Inherited Material: " + ObjectMaterialData.data["type_material"], icon="FILE_PARENT") + if self.product_data: if self.product_data["type"] == "IfcMaterialConstituentSet": self.material_set_id = self.product_data["id"] @@ -395,7 +401,21 @@ class BIM_UL_materials(UIList): def draw_item(self, context, layout, data, item, icon, active_data, active_propname): if item: row = layout.row(align=True) - row.label(text=item.name) - row2 = row.row() - row2.alignment = "RIGHT" - row2.label(text=str(item.total_elements)) + + if item.is_category: + if item.is_expanded: + row.operator( + "bim.contract_material_category", text="", emboss=False, icon="DISCLOSURE_TRI_DOWN" + ).category = item.name + else: + row.operator( + "bim.expand_material_category", text="", emboss=False, icon="DISCLOSURE_TRI_RIGHT" + ).category = item.name + row.label(text=item.name or "Uncategorised") + else: + row.label(text="", icon="BLANK1") + row.label(text=item.name, icon="MATERIAL") + + row2 = row.row() + row2.alignment = "RIGHT" + row2.label(text=str(item.total_elements)) diff --git a/src/blenderbim/blenderbim/bim/module/model/data.py b/src/blenderbim/blenderbim/bim/module/model/data.py index 1ee9a3f7be..393fe73273 100644 --- a/src/blenderbim/blenderbim/bim/module/model/data.py +++ b/src/blenderbim/blenderbim/bim/module/model/data.py @@ -58,7 +58,7 @@ class AuthoringData: if not ifc_class and ifc_classes: ifc_class = ifc_classes[0][0] if ifc_class: - elements = [(str(e.id()), e.Name, "") for e in tool.Ifc.get().by_type(ifc_class)] + elements = [(str(e.id()), e.Name, e.Description or "") for e in tool.Ifc.get().by_type(ifc_class)] results.extend(sorted(elements, key=lambda s: s[1])) return results return [] diff --git a/src/blenderbim/blenderbim/bim/module/model/mep.py b/src/blenderbim/blenderbim/bim/module/model/mep.py index e971318d78..3fe07c3fe8 100644 --- a/src/blenderbim/blenderbim/bim/module/model/mep.py +++ b/src/blenderbim/blenderbim/bim/module/model/mep.py @@ -54,7 +54,6 @@ class MepGenerator: self.width = dimensions.get("NominalDiameterOrWidth") self.height = dimensions.get("NominalHeight") self.length = 1 - self.rotation = 0 return self.derive_from_cursor() elif self.relating_type.is_a("IfcPipeSegmentType"): @@ -66,14 +65,14 @@ class MepGenerator: def create_rectangle_segment(self): verts = [ - Vector((0, self.width, 0)), - Vector((0, 0, 0)), - Vector((0, self.width, self.height)), - Vector((0, 0, self.height)), - Vector((self.length, self.width, 0)), - Vector((self.length, 0, 0)), - Vector((self.length, self.width, self.height)), - Vector((self.length, 0, self.height)), + Vector((- self.width / 2, self.height / 2, 0)), + Vector((- self.width / 2, - self.height / 2, 0)), + Vector((- self.width / 2, self.height / 2, self.length)), + Vector((- self.width / 2, - self.height / 2, self.length)), + Vector((self.width / 2, self.height / 2, 0)), + Vector((self.width / 2, - self.height / 2, 0)), + Vector((self.width / 2, self.height / 2, self.length)), + Vector((self.width / 2, - self.height / 2, self.length)), ] faces = [ [1, 3, 2, 0], @@ -91,7 +90,8 @@ class MepGenerator: obj = bpy.data.objects.new(tool.Model.generate_occurrence_name(self.relating_type, ifc_class), mesh) obj.location = self.location - obj.rotation_euler[2] = self.rotation + obj.rotation_euler[0] = math.pi / 2 + obj.rotation_euler[2] = math.pi / 2 self.collection.objects.link(obj) bpy.ops.bim.assign_class( @@ -100,9 +100,19 @@ class MepGenerator: ifc_representation_class="IfcExtrudedAreaSolid/IfcRectangleProfileDef", ) - blenderbim.core.type.assign_type(tool.Ifc, tool.Type, element=tool.Ifc.get_entity(obj), type=self.relating_type) - element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) + element = tool.Ifc.get_entity(obj) + + blenderbim.core.type.assign_type(tool.Ifc, tool.Type, element=element, type=self.relating_type) pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="EPset_Parametric") ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"Engine": "BlenderBIM.Mep"}) + + start_port_matrix = Matrix() + end_port_matrix = Matrix.Translation((0, 0, self.length)) + + for mat in [start_port_matrix, end_port_matrix]: + port = tool.Ifc.run("root.create_entity", ifc_class="IfcDistributionPort") + tool.Ifc.run("system.assign_port", element=element, port=port) + tool.Ifc.run("geometry.edit_object_placement", product=port, matrix=obj.matrix_world @ mat, is_si=True) + obj.select_set(True) return obj diff --git a/src/blenderbim/blenderbim/bim/module/model/product.py b/src/blenderbim/blenderbim/bim/module/model/product.py index ab47a6866c..b56712216d 100644 --- a/src/blenderbim/blenderbim/bim/module/model/product.py +++ b/src/blenderbim/blenderbim/bim/module/model/product.py @@ -20,7 +20,9 @@ import bpy import mathutils import ifcopenshell import ifcopenshell.api +import ifcopenshell.util.system import ifcopenshell.util.element +import ifcopenshell.util.placement import ifcopenshell.util.representation import blenderbim.tool as tool import blenderbim.core.type @@ -81,7 +83,7 @@ class AddTypeInstance(bpy.types.Operator): elif material and material.is_a("IfcMaterialLayerSet"): if self.generate_layered_element(ifc_class, relating_type): return {"FINISHED"} - if relating_type.is_a("IfcFlowSegmentType"): + if relating_type.is_a("IfcFlowSegmentType") and not relating_type.RepresentationMaps: if mep.MepGenerator(relating_type).generate(): return {"FINISHED"} @@ -117,11 +119,9 @@ class AddTypeInstance(bpy.types.Operator): collection.objects.link(obj) collection_obj = bpy.data.objects.get(collection.name) bpy.ops.bim.assign_class(obj=obj.name, ifc_class=instance_class) + element = tool.Ifc.get_entity(obj) blenderbim.core.type.assign_type( - tool.Ifc, - tool.Type, - element=tool.Ifc.get_entity(obj), - type=tool.Ifc.get().by_id(int(props.relating_type)), + tool.Ifc, tool.Type, element=element, type=relating_type ) if building_obj: @@ -136,6 +136,17 @@ class AddTypeInstance(bpy.types.Operator): if collection_obj and collection_obj.BIMObjectProperties.ifc_definition_id: obj.location[2] = collection_obj.location[2] - min([v[2] for v in obj.bound_box]) + unit_scale = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) + for port in ifcopenshell.util.system.get_ports(relating_type): + mat = ifcopenshell.util.placement.get_local_placement(port.ObjectPlacement) + mat[0][3] *= unit_scale + mat[1][3] *= unit_scale + mat[2][3] *= unit_scale + mat = obj.matrix_world @ mathutils.Matrix(mat) + new_port = tool.Ifc.run("root.create_entity", ifc_class="IfcDistributionPort") + tool.Ifc.run("system.assign_port", element=element, port=new_port) + tool.Ifc.run("geometry.edit_object_placement", product=new_port, matrix=mat, is_si=True) + bpy.ops.object.select_all(action="DESELECT") obj.select_set(True) context.view_layer.objects.active = obj diff --git a/src/blenderbim/blenderbim/bim/module/model/wall.py b/src/blenderbim/blenderbim/bim/module/model/wall.py index d41f8d5e11..368c907350 100644 --- a/src/blenderbim/blenderbim/bim/module/model/wall.py +++ b/src/blenderbim/blenderbim/bim/module/model/wall.py @@ -688,23 +688,10 @@ class DumbWallGenerator: for stroke in layer.active_frame.strokes: if len(stroke.points) == 1: continue - coords = (stroke.points[0].co, stroke.points[-1].co) - direction = coords[1] - coords[0] - length = direction.length - if length < 0.1: - continue - data = {"coords": coords} - - # Round to nearest 50mm (yes, metric for now) - self.length = 0.05 * round(length / 0.05) - self.rotation = math.atan2(direction[1], direction[0]) - # Round to nearest 5 degrees - nearest_degree = (math.pi / 180) * 5 - self.rotation = nearest_degree * round(self.rotation / nearest_degree) - self.location = coords[0] - data["obj"] = self.create_wall() - strokes.append(data) - objs.append(data["obj"]) + data = self.create_wall_from_2_points((stroke.points[0].co, stroke.points[-1].co)) + if data: + strokes.append(data) + objs.append(data["obj"]) if len(objs) < 2: return objs @@ -726,6 +713,23 @@ class DumbWallGenerator: bpy.context.scene.grease_pencil.layers.remove(layer) return objs + def create_wall_from_2_points(self, coords): + direction = coords[1] - coords[0] + length = direction.length + if length < 0.1: + return + data = {"coords": coords} + + # Round to nearest 50mm (yes, metric for now) + self.length = 0.05 * round(length / 0.05) + self.rotation = math.atan2(direction[1], direction[0]) + # Round to nearest 5 degrees + nearest_degree = (math.pi / 180) * 5 + self.rotation = nearest_degree * round(self.rotation / nearest_degree) + self.location = coords[0] + data["obj"] = self.create_wall() + return data + def has_end_near_stroke(self, stroke, stroke2): point, distance = mathutils.geometry.intersect_point_line(stroke["coords"][0], *stroke2["coords"]) if distance > 0 and distance < 1 and self.is_near(point, stroke["coords"][0]): diff --git a/src/blenderbim/blenderbim/bim/module/owner/__init__.py b/src/blenderbim/blenderbim/bim/module/owner/__init__.py index 9b676a586d..3c9ba9de47 100644 --- a/src/blenderbim/blenderbim/bim/module/owner/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/owner/__init__.py @@ -28,6 +28,7 @@ classes = ( operator.AddPersonAndOrganisation, operator.AddPersonAttribute, operator.AddRole, + operator.AssignActor, operator.ClearUser, operator.DisableEditingActor, operator.DisableEditingAddress, @@ -53,11 +54,13 @@ classes = ( operator.RemovePersonAttribute, operator.RemoveRole, operator.SetUser, + operator.UnassignActor, prop.BIMOwnerProperties, ui.BIM_PT_people, ui.BIM_PT_organisations, ui.BIM_PT_owner, ui.BIM_PT_actor, + ui.BIM_PT_object_actor, ) diff --git a/src/blenderbim/blenderbim/bim/module/owner/data.py b/src/blenderbim/blenderbim/bim/module/owner/data.py index 3eae8fc574..be1cae0192 100644 --- a/src/blenderbim/blenderbim/bim/module/owner/data.py +++ b/src/blenderbim/blenderbim/bim/module/owner/data.py @@ -25,6 +25,7 @@ def refresh(): OrganisationsData.is_loaded = False OwnerData.is_loaded = False ActorData.is_loaded = False + ObjectActorData.is_loaded = False class RolesAddressesData: @@ -93,15 +94,17 @@ class PeopleData(RolesAddressesData): def get_people(cls): people = [] for person in tool.Ifc.get().by_type("IfcPerson"): + roles = cls.get_roles(person) people.append( { "id": person.id(), "props": bpy.context.scene.BIMOwnerProperties.person_attributes, "name": cls.get_person_name(person), + "roles_label": ", ".join([r["label"] for r in roles]), "is_editing": cls.get_person_is_editing(person), "is_engaged": bool(person.EngagedIn), "list_attributes": cls.get_person_list_attributes(person), - "roles": cls.get_roles(person), + "roles": roles, "addresses": cls.get_addresses(person), } ) @@ -151,14 +154,16 @@ class OrganisationsData(RolesAddressesData): def get_organisations(cls): organisations = [] for organisation in tool.Ifc.get().by_type("IfcOrganization"): + roles = cls.get_roles(organisation) organisations.append( { "id": organisation.id(), "props": bpy.context.scene.BIMOwnerProperties.organisation_attributes, "name": organisation.Name, + "roles_label": ", ".join([r["label"] for r in roles]), "is_editing": bpy.context.scene.BIMOwnerProperties.active_organisation_id == organisation.id(), "is_engaged": bool(organisation.Engages), - "roles": cls.get_roles(organisation), + "roles": roles, "addresses": cls.get_addresses(organisation), } ) @@ -212,13 +217,13 @@ class ActorData: @classmethod def load(cls): cls.data = { - "actor": cls.actor(), + "the_actor": cls.the_actor(), "actors": cls.actors(), } cls.is_loaded = True @classmethod - def actor(cls): + def the_actor(cls): ifc_class = bpy.context.scene.BIMOwnerProperties.actor_type return [(str(p.id()), p[0] or "Unnamed", "") for p in tool.Ifc.get().by_type(ifc_class)] @@ -228,5 +233,57 @@ class ActorData: props = bpy.context.scene.BIMOwnerProperties for actor in tool.Ifc.get().by_type(props.actor_class, include_subtypes=False): is_editing = props.active_actor_id == actor.id() - actors.append({"id": actor.id(), "name": actor.Name or "Unnamed", "is_editing": is_editing}) + if actor.TheActor.is_a("IfcPerson"): + the_actor = actor.TheActor.Identification or "N/A" + elif actor.TheActor.is_a("IfcOrganization"): + the_actor = actor.TheActor.Identification or "N/A" + elif actor.TheActor.is_a("IfcPersonAndOrganization"): + the_actor = actor.TheActor.ThePerson.Identification or "N/A" + the_actor += "-" + actor.TheActor.TheOrganization.Identification or "N/A" + actors.append( + {"id": actor.id(), "name": actor.Name or "Unnamed", "the_actor": the_actor, "is_editing": is_editing} + ) return actors + + +class ObjectActorData: + data = {} + is_loaded = False + + @classmethod + def load(cls): + cls.is_loaded = True + cls.data = { + "actor": cls.actor(), + "actors": cls.actors() + } + + @classmethod + def actor(cls): + return [(str(p.id()), p.Name or "Unnamed", "") for p in tool.Ifc.get().by_type("IfcActor")] + + @classmethod + def actors(cls): + results = [] + element = tool.Ifc.get_entity(bpy.context.active_object) + if not element: + return results + for rel in getattr(element, "HasAssignments", []): + if rel.is_a("IfcRelAssignsToActor"): + actor = rel.RelatingActor + if actor.TheActor.is_a("IfcPerson"): + roles = cls.get_roles(actor.TheActor) + elif actor.TheActor.is_a("IfcOrganization"): + roles = cls.get_roles(actor.TheActor) + elif actor.TheActor.is_a("IfcPersonAndOrganization"): + roles = cls.get_roles(actor.TheActor.ThePerson) + roles.extend(cls.get_roles(actor.TheActor.TheOrganization)) + role = ", ".join(roles) + results.append({ + "id": actor.id(), "name": actor.Name or "Unnamed", "role": role, "ifc_class": actor.is_a() + }) + return results + + @classmethod + def get_roles(cls, parent): + return [r.UserDefinedRole or r.Role for r in parent.Roles or []] diff --git a/src/blenderbim/blenderbim/bim/module/owner/operator.py b/src/blenderbim/blenderbim/bim/module/owner/operator.py index d678369ac2..38709184b5 100644 --- a/src/blenderbim/blenderbim/bim/module/owner/operator.py +++ b/src/blenderbim/blenderbim/bim/module/owner/operator.py @@ -315,8 +315,8 @@ class AddActor(bpy.types.Operator, Operator): def _execute(self, context): props = bpy.context.scene.BIMOwnerProperties - if props.actor: - core.add_actor(tool.Ifc, ifc_class=props.actor_class, actor=tool.Ifc.get().by_id(int(props.actor))) + if props.the_actor: + core.add_actor(tool.Ifc, ifc_class=props.actor_class, actor=tool.Ifc.get().by_id(int(props.the_actor))) class EnableEditingActor(bpy.types.Operator, Operator): @@ -355,3 +355,27 @@ class RemoveActor(bpy.types.Operator, Operator): def _execute(self, context): core.remove_actor(tool.Ifc, actor=tool.Ifc.get().by_id(self.actor)) + + +class AssignActor(bpy.types.Operator, Operator): + bl_idname = "bim.assign_actor" + bl_label = "Assign Actor" + bl_options = {"REGISTER", "UNDO"} + actor: bpy.props.IntProperty() + + def _execute(self, context): + core.assign_actor( + tool.Ifc, actor=tool.Ifc.get().by_id(self.actor), element=tool.Ifc.get_entity(context.active_object) + ) + + +class UnassignActor(bpy.types.Operator, Operator): + bl_idname = "bim.unassign_actor" + bl_label = "Unassign Actor" + bl_options = {"REGISTER", "UNDO"} + actor: bpy.props.IntProperty() + + def _execute(self, context): + core.unassign_actor( + tool.Ifc, actor=tool.Ifc.get().by_id(self.actor), element=tool.Ifc.get_entity(context.active_object) + ) diff --git a/src/blenderbim/blenderbim/bim/module/owner/prop.py b/src/blenderbim/blenderbim/bim/module/owner/prop.py index 49759be4bc..c1a2e65915 100644 --- a/src/blenderbim/blenderbim/bim/module/owner/prop.py +++ b/src/blenderbim/blenderbim/bim/module/owner/prop.py @@ -18,7 +18,7 @@ import bpy from blenderbim.bim.prop import StrProperty, Attribute -from blenderbim.bim.module.owner.data import OwnerData, ActorData +from blenderbim.bim.module.owner.data import OwnerData, ActorData, ObjectActorData from bpy.types import PropertyGroup from bpy.props import ( PointerProperty, @@ -44,14 +44,20 @@ def get_user_organisation(self, context): return OwnerData.data["user_organisation"] -def get_actor(self, context): +def get_the_actor(self, context): if not ActorData.is_loaded: ActorData.load() - return ActorData.data["actor"] + return ActorData.data["the_actor"] + + +def get_actor(self, context): + if not ObjectActorData.is_loaded: + ObjectActorData.load() + return ObjectActorData.data["actor"] def update_actor_type(self, context): - ActorData.data["actor"] = ActorData.actor() + ActorData.data["the_actor"] = ActorData.the_actor() def update_actor_class(self, context): @@ -94,4 +100,5 @@ class BIMOwnerProperties(PropertyGroup): name="Actor Type", update=update_actor_type, ) + the_actor: EnumProperty(items=get_the_actor, name="Actor") actor: EnumProperty(items=get_actor, name="Actor") diff --git a/src/blenderbim/blenderbim/bim/module/owner/ui.py b/src/blenderbim/blenderbim/bim/module/owner/ui.py index e3902775c8..2cf26457c0 100644 --- a/src/blenderbim/blenderbim/bim/module/owner/ui.py +++ b/src/blenderbim/blenderbim/bim/module/owner/ui.py @@ -19,7 +19,7 @@ import bpy import blenderbim.bim.helper import blenderbim.tool as tool -from blenderbim.bim.module.owner.data import PeopleData, OrganisationsData, OwnerData, ActorData +from blenderbim.bim.module.owner.data import PeopleData, OrganisationsData, OwnerData, ActorData, ObjectActorData def draw_roles(box, parent): @@ -127,7 +127,9 @@ class BIM_PT_people(bpy.types.Panel): draw_addresses(box, person) else: row = self.layout.row(align=True) - row.label(text=person["name"]) + row.label(text=person["name"], icon="OUTLINER_OB_ARMATURE") + if person["roles_label"]: + row.label(text=person["roles_label"]) row.operator("bim.enable_editing_person", icon="GREASEPENCIL", text="").person = person["id"] if not person["is_engaged"]: row.operator("bim.remove_person", icon="X", text="").person = person["id"] @@ -171,7 +173,9 @@ class BIM_PT_organisations(bpy.types.Panel): draw_addresses(box, organisation) else: row = self.layout.row(align=True) - row.label(text=organisation["name"]) + row.label(text=organisation["name"], icon="COMMUNITY") + if organisation["roles_label"]: + row.label(text=organisation["roles_label"]) op = row.operator("bim.enable_editing_organisation", icon="GREASEPENCIL", text="") op.organisation = organisation["id"] if not organisation["is_engaged"]: @@ -254,9 +258,9 @@ class BIM_PT_actor(bpy.types.Panel): row = self.layout.row(align=True) row.prop(self.props, "actor_class", text="") row.prop(self.props, "actor_type", text="") - if ActorData.data["actor"]: + if ActorData.data["the_actor"]: row = self.layout.row(align=True) - row.prop(self.props, "actor", text="") + row.prop(self.props, "the_actor", text="") row.operator("bim.add_actor", icon="ADD", text="") else: self.layout.label(text="No users found.") @@ -273,6 +277,42 @@ class BIM_PT_actor(bpy.types.Panel): blenderbim.bim.helper.draw_attributes(self.props.actor_attributes, box) else: row = self.layout.row(align=True) - row.label(text=actor["name"]) + row.label(text=actor["name"], icon="USER") + row.label(text=actor["the_actor"]) row.operator("bim.enable_editing_actor", icon="GREASEPENCIL", text="").actor = actor["id"] row.operator("bim.remove_actor", icon="X", text="").actor = actor["id"] + + +class BIM_PT_object_actor(bpy.types.Panel): + bl_label = "IFC Actor" + bl_idname = "BIM_PT_object_actor" + bl_options = {"DEFAULT_CLOSED"} + bl_space_type = "PROPERTIES" + bl_region_type = "WINDOW" + bl_context = "object" + bl_parent_id = "BIM_PT_misc_object" + + @classmethod + def poll(cls, context): + return tool.Ifc.get() + + def draw(self, context): + if not ObjectActorData.is_loaded: + ObjectActorData.load() + + self.props = context.scene.BIMOwnerProperties + + if not ObjectActorData.data["actor"]: + row = self.layout.row(align=True) + row.label(text="No Actors Found", icon="USER") + return + + row = self.layout.row(align=True) + row.prop(self.props, "actor", text="") + row.operator("bim.assign_actor", icon="ADD", text="").actor = int(self.props.actor) + + for actor in ObjectActorData.data["actors"]: + row = self.layout.row(align=True) + row.label(text=actor["name"], icon="USER") + row.label(text=actor["role"]) + row.operator("bim.unassign_actor", icon="X", text="").actor = actor["id"] diff --git a/src/blenderbim/blenderbim/bim/module/project/__init__.py b/src/blenderbim/blenderbim/bim/module/project/__init__.py index 7898d1ddf0..a2929523cd 100644 --- a/src/blenderbim/blenderbim/bim/module/project/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/project/__init__.py @@ -20,28 +20,29 @@ import bpy from . import ui, prop, operator classes = ( - operator.CreateProject, - operator.LoadProject, - operator.UnloadProject, - operator.LoadProjectElements, - operator.LinkIfc, - operator.UnlinkIfc, - operator.UnloadLink, - operator.LoadLink, - operator.ToggleLinkVisibility, - operator.SelectLibraryFile, - operator.ChangeLibraryElement, - operator.RefreshLibrary, - operator.RewindLibrary, - operator.AssignLibraryDeclaration, - operator.UnassignLibraryDeclaration, - operator.SaveLibraryFile, operator.AppendLibraryElement, - operator.EnableEditingHeader, + operator.AssignLibraryDeclaration, + operator.ChangeLibraryElement, + operator.CreateProject, operator.DisableEditingHeader, operator.EditHeader, + operator.EnableEditingHeader, operator.ExportIFC, operator.ImportIFC, + operator.LinkIfc, + operator.LoadLink, + operator.LoadProject, + operator.LoadProjectElements, + operator.RefreshLibrary, + operator.RewindLibrary, + operator.SaveLibraryFile, + operator.SelectLibraryFile, + operator.ToggleFilterCategories, + operator.ToggleLinkVisibility, + operator.UnassignLibraryDeclaration, + operator.UnlinkIfc, + operator.UnloadLink, + operator.UnloadProject, prop.LibraryElement, prop.FilterCategory, prop.Link, @@ -57,7 +58,7 @@ classes = ( def menu_func_export(self, context): op = self.layout.operator(operator.ExportIFC.bl_idname, text="Industry Foundation Classes (.ifc/.ifczip/.ifcjson)") - op.should_save_as = False + op.should_save_as = True def menu_func_import(self, context): diff --git a/src/blenderbim/blenderbim/bim/module/project/operator.py b/src/blenderbim/blenderbim/bim/module/project/operator.py index 17ddfdc7bc..f311ff50d5 100644 --- a/src/blenderbim/blenderbim/bim/module/project/operator.py +++ b/src/blenderbim/blenderbim/bim/module/project/operator.py @@ -495,6 +495,7 @@ class LoadProject(bpy.types.Operator, IFCFileSelector): return {"FINISHED"} context.scene.BIMProperties.ifc_file = self.filepath context.scene.BIMProjectProperties.is_loading = True + context.scene.BIMProjectProperties.total_elements = len(tool.Ifc.get().by_type("IfcElement")) if not self.is_advanced: bpy.ops.bim.load_project_elements() return {"FINISHED"} @@ -545,6 +546,8 @@ class LoadProjectElements(bpy.types.Operator): settings.elements = self.get_decomposition_elements() elif self.props.filter_mode == "IFC_CLASS": settings.elements = self.get_ifc_class_elements() + elif self.props.filter_mode == "IFC_TYPE": + settings.elements = self.get_ifc_type_elements() elif self.props.filter_mode == "WHITELIST": settings.elements = self.get_whitelist_elements() elif self.props.filter_mode == "BLACKLIST": @@ -595,6 +598,14 @@ class LoadProjectElements(bpy.types.Operator): elements.update(self.file.by_type(filter_category.name, include_subtypes=False)) return elements + def get_ifc_type_elements(self): + elements = set() + for filter_category in self.props.filter_categories: + if not filter_category.is_selected: + continue + elements.update(ifcopenshell.util.element.get_types(self.file.by_id(filter_category.ifc_definition_id))) + return elements + def get_whitelist_elements(self): selector = ifcopenshell.util.selector.Selector() return set(selector.parse(self.file, self.props.filter_query)) @@ -604,6 +615,18 @@ class LoadProjectElements(bpy.types.Operator): return set(self.file.by_type("IfcElement")) - set(selector.parse(self.file, self.props.filter_query)) +class ToggleFilterCategories(bpy.types.Operator): + bl_idname = "bim.toggle_filter_categories" + bl_label = "Toggle Filter Categories" + bl_options = {"REGISTER", "UNDO"} + should_select: bpy.props.BoolProperty(name="Should Select", default=True) + + def execute(self, context): + for filter_category in context.scene.BIMProjectProperties.filter_categories: + filter_category.is_selected = self.should_select + return {"FINISHED"} + + class LinkIfc(bpy.types.Operator): bl_idname = "bim.link_ifc" bl_label = "Link IFC" @@ -685,7 +708,7 @@ class LoadLink(bpy.types.Operator): continue bpy.data.scenes[0].collection.children.link(child) link = context.scene.BIMProjectProperties.links.get(filepath) - link.collection_name = child.name + link.collection = child link.is_loaded = True return {"FINISHED"} @@ -695,11 +718,20 @@ class ToggleLinkVisibility(bpy.types.Operator): bl_label = "Toggle Link Visibility" bl_options = {"REGISTER", "UNDO"} bl_description = "Toggle visibility between SOLID and WIREFRAME" - collection_name: bpy.props.StringProperty() + link: bpy.props.StringProperty() + mode: bpy.props.StringProperty() def execute(self, context): - collection_name = self.collection_name - objs = filter(lambda obj: "IfcOpeningElement" not in obj.name, bpy.data.collections[collection_name].all_objects) + props = context.scene.BIMProjectProperties + link = props.links.get(self.link) + if self.mode == "WIREFRAME": + self.toggle_wireframe(link) + elif self.mode == "VISIBLE": + self.toggle_visibility(link) + return {"FINISHED"} + + def toggle_wireframe(self, link): + objs = filter(lambda obj: "IfcOpeningElement" not in obj.name, link.collection.all_objects) for i,obj in enumerate(objs): if i == 0: if obj.display_type == "WIRE": @@ -707,7 +739,22 @@ class ToggleLinkVisibility(bpy.types.Operator): else: display_type = "WIRE" obj.display_type = display_type - return {"FINISHED"} + link.is_wireframe = display_type == "WIRE" + + def toggle_visibility(self, link): + queue = [bpy.context.view_layer.layer_collection] + layer_collection = None + + while queue: + layer = queue.pop() + if layer.collection == link.collection: + layer_collection = layer + break + queue.extend(list(layer.children)) + + if layer_collection: + layer_collection.exclude = not layer_collection.exclude + link.is_hidden = layer_collection.exclude class ExportIFC(bpy.types.Operator): diff --git a/src/blenderbim/blenderbim/bim/module/project/prop.py b/src/blenderbim/blenderbim/bim/module/project/prop.py index fe49738432..3fe5e5077f 100644 --- a/src/blenderbim/blenderbim/bim/module/project/prop.py +++ b/src/blenderbim/blenderbim/bim/module/project/prop.py @@ -23,6 +23,7 @@ from blenderbim.bim.ifc import IfcStore from blenderbim.bim.prop import StrProperty from bpy.types import PropertyGroup from bpy.props import ( + PointerProperty, BoolProperty, CollectionProperty, EnumProperty, @@ -63,10 +64,16 @@ def update_filter_mode(self, context): new.ifc_definition_id = element.id() new.total_elements = sum([len(r.RelatedElements) for r in element.ContainsElements]) elif self.filter_mode == "IFC_CLASS": - for ifc_class in sorted(list(set([e.is_a() for e in file.by_type("IfcElement")]))): + for ifc_class in sorted(list({e.is_a() for e in file.by_type("IfcElement")})): new = self.filter_categories.add() new.name = ifc_class new.total_elements = len(file.by_type(ifc_class, include_subtypes=False)) + elif self.filter_mode == "IFC_TYPE": + for ifc_type in sorted(file.by_type("IfcElementType"), key=lambda e: e.Name or "Unnamed"): + new = self.filter_categories.add() + new.name = ifc_type.is_a() + "/" + (ifc_type.Name or "Unnamed") + new.ifc_definition_id = ifc_type.id() + new.total_elements = len(ifcopenshell.util.element.get_types(ifc_type)) class LibraryElement(PropertyGroup): @@ -85,8 +92,10 @@ class FilterCategory(PropertyGroup): class Link(PropertyGroup): name: StringProperty(name="Name") - collection_name: StringProperty(name="Collection Name") + collection: PointerProperty(name="Collection", type=bpy.types.Collection) is_loaded: BoolProperty(name="Is Loaded", default=False) + is_wireframe: BoolProperty(name="Is Wireframe", default=False) + is_hidden: BoolProperty(name="Is Hidden", default=False) class BIMProjectProperties(PropertyGroup): @@ -117,25 +126,40 @@ class BIMProjectProperties(PropertyGroup): ("NONE", "None", "No filtering is performed"), ("DECOMPOSITION", "Decomposition", "Filter objects by decomposition"), ("IFC_CLASS", "IFC Class", "Filter objects by class"), + ("IFC_TYPE", "IFC Type", "Filter objects by type"), ("WHITELIST", "Whitelist", "Filter objects using a custom whitelist query"), ("BLACKLIST", "Blacklist", "Filter objects using a custom blacklist query"), ], name="Filter Mode", update=update_filter_mode, ) + total_elements: IntProperty(name="Total Elements", default=0) filter_categories: CollectionProperty(name="Filter Categories", type=FilterCategory) active_filter_category_index: IntProperty(name="Active Filter Category Index") filter_query: StringProperty(name="Filter Query") should_filter_spatial_elements: BoolProperty(name="Filter Spatial Elements", default=False) - should_use_cpu_multiprocessing: BoolProperty(name="Import with CPU Multiprocessing", default=True) - should_merge_by_class: BoolProperty(name="Import and Merge by Class", default=False) - should_merge_by_material: BoolProperty(name="Import and Merge by Material", default=False) - should_merge_materials_by_colour: BoolProperty(name="Import and Merge Materials by Colour", default=False) - should_clean_mesh: BoolProperty(name="Import and Clean Mesh", default=True) - deflection_tolerance: FloatProperty(name="Import Deflection Tolerance", default=0.001) - angular_tolerance: FloatProperty(name="Import Angular Tolerance", default=0.5) - should_offset_model: BoolProperty(name="Import and Offset Model", default=False) - model_offset_coordinates: StringProperty(name="Model Offset Coordinates", default="0,0,0") + should_use_cpu_multiprocessing: BoolProperty(name="CPU Multiprocessing", default=True) + merge_mode: bpy.props.EnumProperty( + items=[ + ("NONE", "None", "No objects are merged"), + ("IFC_CLASS", "IFC Class", "One object per IFC class"), + ("IFC_TYPE", "IFC Type", "One object per IFC construction type"), + ("MATERIAL", "Material", "One object per material"), + ], + name="Merge Mode", + default="NONE", + ) + should_merge_materials_by_colour: BoolProperty(name="Merge Materials by Colour", default=False) + should_use_native_meshes: BoolProperty(name="Native Meshes", default=False) + should_clean_mesh: BoolProperty(name="Clean Meshes", default=True) + should_cache: BoolProperty(name="Cache", default=False) + is_coordinating: BoolProperty(name="For Coordination Only", default=False) + deflection_tolerance: FloatProperty(name="Deflection Tolerance", default=0.001) + angular_tolerance: FloatProperty(name="Angular Tolerance", default=0.5) + distance_limit: FloatProperty(name="Distance Limit", default=1000) + false_origin: StringProperty(name="False Origin", default="0,0,0") + element_offset: IntProperty(name="Element Offset", default=0) + element_limit: IntProperty(name="Element Offset", default=30000) links: CollectionProperty(name="Links", type=Link) active_link_index: IntProperty(name="Active Link Index") export_schema: EnumProperty(items=get_export_schema, name="IFC Schema") diff --git a/src/blenderbim/blenderbim/bim/module/project/ui.py b/src/blenderbim/blenderbim/bim/module/project/ui.py index e90c818113..c8be2f2933 100644 --- a/src/blenderbim/blenderbim/bim/module/project/ui.py +++ b/src/blenderbim/blenderbim/bim/module/project/ui.py @@ -52,7 +52,11 @@ class BIM_PT_project(Panel): row.prop(pprops, "collection_mode") row = self.layout.row() row.prop(pprops, "filter_mode") - if pprops.filter_mode in ["DECOMPOSITION", "IFC_CLASS"]: + if pprops.filter_mode in ["DECOMPOSITION", "IFC_CLASS", "IFC_TYPE"]: + row = self.layout.row(align=True) + row.label(text=f"Total: {pprops.total_elements}") + row.operator("bim.toggle_filter_categories", text="", icon="CHECKBOX_HLT").should_select = True + row.operator("bim.toggle_filter_categories", text="", icon="CHECKBOX_DEHLT").should_select = False self.layout.template_list( "BIM_UL_filter_categories", "", @@ -70,21 +74,32 @@ class BIM_PT_project(Panel): row = self.layout.row() row.prop(pprops, "should_use_cpu_multiprocessing") row = self.layout.row() - row.prop(pprops, "should_merge_by_class") + row.prop(pprops, "should_clean_mesh") row = self.layout.row() - row.prop(pprops, "should_merge_by_material") + row.prop(pprops, "should_cache") + row = self.layout.row() + row.prop(pprops, "should_use_native_meshes") row = self.layout.row() row.prop(pprops, "should_merge_materials_by_colour") row = self.layout.row() - row.prop(pprops, "should_clean_mesh") + row.prop(pprops, "is_coordinating") + if pprops.is_coordinating: + row = self.layout.row() + row.prop(pprops, "merge_mode") row = self.layout.row() row.prop(pprops, "deflection_tolerance") row = self.layout.row() row.prop(pprops, "angular_tolerance") row = self.layout.row() - row.prop(pprops, "should_offset_model") + row.prop(pprops, "distance_limit") row = self.layout.row() - row.prop(pprops, "model_offset_coordinates") + row.prop(pprops, "false_origin") + + row = self.layout.row() + row.label(text="Element Range") + row = self.layout.row(align=True) + row.prop(pprops, "element_offset", text="") + row.prop(pprops, "element_limit", text="") row = self.layout.row(align=True) row.operator("bim.load_project_elements") @@ -150,6 +165,7 @@ class BIM_PT_project(Panel): op.should_save_as = False op = row.operator("export_ifc.bim", icon="FILE_TICK", text="Save As") op.should_save_as = True + row.operator("bim.unload_project", text="", icon="X") def draw_create_project_ui(self, context): props = context.scene.BIMProperties @@ -286,8 +302,22 @@ class BIM_UL_links(UIList): row = layout.row(align=True) if item.is_loaded: row.label(text=item.name) - op = row.operator("bim.toggle_link_visibility", text="", icon="HIDE_OFF") - op.collection_name = item.collection_name + op = row.operator( + "bim.toggle_link_visibility", + text="", + icon="CUBE" if item.is_wireframe else "MESH_CUBE", + emboss=False, + ) + op.link = item.name + op.mode = "WIREFRAME" + op = row.operator( + "bim.toggle_link_visibility", + text="", + icon="HIDE_ON" if item.is_hidden else "HIDE_OFF", + emboss=False, + ) + op.link = item.name + op.mode = "VISIBLE" op = row.operator("bim.unload_link", text="", icon="UNLINKED") op.filepath = item.name else: diff --git a/src/blenderbim/blenderbim/bim/module/pset/data.py b/src/blenderbim/blenderbim/bim/module/pset/data.py index 06ce5d638a..78e6350e7a 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/data.py +++ b/src/blenderbim/blenderbim/bim/module/pset/data.py @@ -41,7 +41,9 @@ class Data: @classmethod def psetqtos(cls, element, psets_only=False, qtos_only=False): results = [] - psetqtos = ifcopenshell.util.element.get_psets(element, psets_only=psets_only, qtos_only=qtos_only) + psetqtos = ifcopenshell.util.element.get_psets( + element, psets_only=psets_only, qtos_only=qtos_only, should_inherit=False + ) for name, data in psetqtos.items(): results.append( { diff --git a/src/blenderbim/blenderbim/bim/module/pset/operator.py b/src/blenderbim/blenderbim/bim/module/pset/operator.py index a5520d3815..15cb559978 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/operator.py +++ b/src/blenderbim/blenderbim/bim/module/pset/operator.py @@ -148,6 +148,7 @@ class EnablePsetEditing(bpy.types.Operator): new.is_null = data.get(prop_template.Name, None) is None new.is_optional = True new.data_type = data_type + new.is_uri = prop_template.PrimaryMeasureType == "IfcURIReference" if data_type == "string": new.string_value = "" if new.is_null else data[prop_template.Name] diff --git a/src/blenderbim/blenderbim/bim/module/pset/ui.py b/src/blenderbim/blenderbim/bim/module/pset/ui.py index 9cfca725c7..15d9937d24 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/ui.py +++ b/src/blenderbim/blenderbim/bim/module/pset/ui.py @@ -147,7 +147,7 @@ class BIM_PT_object_psets(Panel): draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "Object") if ObjectPsetsData.data["inherited_psets"]: - self.layout.label(text="Inherited Psets:") + self.layout.label(text="Inherited Psets:", icon="FILE_PARENT") for pset in ObjectPsetsData.data["inherited_psets"]: draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "Object") diff --git a/src/blenderbim/blenderbim/bim/module/root/ui.py b/src/blenderbim/blenderbim/bim/module/root/ui.py index 3cfd87fb97..369f0b50e8 100644 --- a/src/blenderbim/blenderbim/bim/module/root/ui.py +++ b/src/blenderbim/blenderbim/bim/module/root/ui.py @@ -54,7 +54,7 @@ class BIM_PT_class(Panel): self.draw_class_dropdowns( context, root_prop.getIfcPredefinedTypes(context.scene.BIMRootProperties, context), - should_draw_product=False, + is_reassigning_class=True, ) else: row = self.layout.row(align=True) @@ -74,9 +74,9 @@ class BIM_PT_class(Panel): op.predefined_type = context.scene.BIMRootProperties.ifc_predefined_type if ifc_predefined_types else "" op.userdefined_type = context.scene.BIMRootProperties.ifc_userdefined_type - def draw_class_dropdowns(self, context, ifc_predefined_types, should_draw_product=True): + def draw_class_dropdowns(self, context, ifc_predefined_types, is_reassigning_class=False): props = context.scene.BIMRootProperties - if should_draw_product: + if not is_reassigning_class: row = self.layout.row() row.prop(props, "ifc_product") row = self.layout.row() @@ -87,5 +87,6 @@ class BIM_PT_class(Panel): if ifc_predefined_types == "USERDEFINED": row = self.layout.row() row.prop(props, "ifc_userdefined_type") - row = self.layout.row() - row.prop(context.scene.BIMRootProperties, "contexts") + if not is_reassigning_class: + row = self.layout.row() + row.prop(context.scene.BIMRootProperties, "contexts") diff --git a/src/blenderbim/blenderbim/bim/module/search/operator.py b/src/blenderbim/blenderbim/bim/module/search/operator.py index cd4365289e..5004f5c7fa 100644 --- a/src/blenderbim/blenderbim/bim/module/search/operator.py +++ b/src/blenderbim/blenderbim/bim/module/search/operator.py @@ -84,7 +84,7 @@ class SelectIfcClass(bpy.types.Operator): def execute(self, context): self.file = IfcStore.get_file() for obj in context.visible_objects: - if not obj.BIMObjectProperties.ifc_definition_id: + if not obj.BIMObjectProperties.ifc_definition_id or obj.is_library_indirect: continue element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) if does_keyword_exist(self.ifc_class, element.is_a(), context): diff --git a/src/blenderbim/blenderbim/bim/module/style/__init__.py b/src/blenderbim/blenderbim/bim/module/style/__init__.py index c7ecdab9e3..d8d6b7f344 100644 --- a/src/blenderbim/blenderbim/bim/module/style/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/style/__init__.py @@ -27,6 +27,7 @@ classes = ( operator.EnableEditingStyle, operator.LoadStyles, operator.RemoveStyle, + operator.SelectByStyle, operator.UnlinkStyle, operator.UpdateStyleColours, operator.UpdateStyleTextures, diff --git a/src/blenderbim/blenderbim/bim/module/style/operator.py b/src/blenderbim/blenderbim/bim/module/style/operator.py index 0e352ed138..09e1215b1f 100644 --- a/src/blenderbim/blenderbim/bim/module/style/operator.py +++ b/src/blenderbim/blenderbim/bim/module/style/operator.py @@ -24,14 +24,7 @@ import ifcopenshell.util.representation from blenderbim.bim.ifc import IfcStore -class Operator: - def execute(self, context): - IfcStore.execute_ifc_operator(self, context) - blenderbim.bim.handler.refresh_ui_data() - return {"FINISHED"} - - -class UpdateStyleColours(bpy.types.Operator, Operator): +class UpdateStyleColours(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.update_style_colours" bl_label = "Update Style Colours" bl_options = {"REGISTER", "UNDO"} @@ -40,7 +33,7 @@ class UpdateStyleColours(bpy.types.Operator, Operator): core.update_style_colours(tool.Ifc, tool.Style, obj=context.active_object.active_material) -class UpdateStyleTextures(bpy.types.Operator, Operator): +class UpdateStyleTextures(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.update_style_textures" bl_label = "Update Style Textures" bl_options = {"REGISTER", "UNDO"} @@ -55,7 +48,7 @@ class UpdateStyleTextures(bpy.types.Operator, Operator): ) -class RemoveStyle(bpy.types.Operator, Operator): +class RemoveStyle(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.remove_style" bl_label = "Remove Style" bl_options = {"REGISTER", "UNDO"} @@ -65,7 +58,7 @@ class RemoveStyle(bpy.types.Operator, Operator): core.remove_style(tool.Ifc, tool.Material, tool.Style, style=tool.Ifc.get().by_id(self.style)) -class AddStyle(bpy.types.Operator, Operator): +class AddStyle(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.add_style" bl_label = "Add Style" bl_options = {"REGISTER", "UNDO"} @@ -74,7 +67,7 @@ class AddStyle(bpy.types.Operator, Operator): core.add_style(tool.Ifc, tool.Style, obj=context.active_object.active_material) -class UnlinkStyle(bpy.types.Operator, Operator): +class UnlinkStyle(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.unlink_style" bl_label = "Unlink Style" bl_options = {"REGISTER", "UNDO"} @@ -83,7 +76,7 @@ class UnlinkStyle(bpy.types.Operator, Operator): core.unlink_style(tool.Ifc, tool.Style, obj=context.active_object.active_material) -class EnableEditingStyle(bpy.types.Operator, Operator): +class EnableEditingStyle(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.enable_editing_style" bl_label = "Enable Editing Style" bl_options = {"REGISTER", "UNDO"} @@ -92,7 +85,7 @@ class EnableEditingStyle(bpy.types.Operator, Operator): core.enable_editing_style(tool.Style, obj=context.active_object.active_material) -class DisableEditingStyle(bpy.types.Operator, Operator): +class DisableEditingStyle(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.disable_editing_style" bl_options = {"REGISTER", "UNDO"} bl_label = "Disable Editing Style" @@ -101,7 +94,7 @@ class DisableEditingStyle(bpy.types.Operator, Operator): core.disable_editing_style(tool.Style, obj=context.active_object.active_material) -class EditStyle(bpy.types.Operator, Operator): +class EditStyle(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.edit_style" bl_label = "Edit Style" bl_options = {"REGISTER", "UNDO"} @@ -110,7 +103,7 @@ class EditStyle(bpy.types.Operator, Operator): core.edit_style(tool.Ifc, tool.Style, obj=context.active_object.active_material) -class DisableEditingStyles(bpy.types.Operator, Operator): +class DisableEditingStyles(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.disable_editing_styles" bl_options = {"REGISTER", "UNDO"} bl_label = "Disable Editing Styles" @@ -119,7 +112,7 @@ class DisableEditingStyles(bpy.types.Operator, Operator): core.disable_editing_styles(tool.Style) -class LoadStyles(bpy.types.Operator, Operator): +class LoadStyles(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.load_styles" bl_label = "Load Styles" bl_options = {"REGISTER", "UNDO"} @@ -127,3 +120,13 @@ class LoadStyles(bpy.types.Operator, Operator): def _execute(self, context): core.load_styles(tool.Style, style_type=self.style_type) + + +class SelectByStyle(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.select_by_style" + bl_label = "Select By Material" + bl_options = {"REGISTER", "UNDO"} + style: bpy.props.IntProperty() + + def _execute(self, context): + core.select_by_style(tool.Style, style=tool.Ifc.get().by_id(self.style)) diff --git a/src/blenderbim/blenderbim/bim/module/style/ui.py b/src/blenderbim/blenderbim/bim/module/style/ui.py index d41a3ad46f..86f4261866 100644 --- a/src/blenderbim/blenderbim/bim/module/style/ui.py +++ b/src/blenderbim/blenderbim/bim/module/style/ui.py @@ -57,8 +57,8 @@ class BIM_PT_styles(Panel): #row.operator("bim.add_presentation_style", text="", icon="ADD") if self.props.styles and self.props.active_style_index < len(self.props.styles): style = self.props.styles[self.props.active_style_index] - # op = row.operator("bim.select_by_style", text="", icon="RESTRICT_SELECT_OFF") - # op.style = style.ifc_definition_id + op = row.operator("bim.select_by_style", text="", icon="RESTRICT_SELECT_OFF") + op.style = style.ifc_definition_id row.operator("bim.remove_style", text="", icon="X").style = style.ifc_definition_id self.layout.template_list("BIM_UL_styles", "", self.props, "styles", self.props, "active_style_index") @@ -138,6 +138,6 @@ class BIM_UL_styles(UIList): if item: row = layout.row(align=True) row.label(text=item.name) - #row2 = row.row() - #row2.alignment = "RIGHT" - #row2.label(text=str(item.total_elements)) + row2 = row.row() + row2.alignment = "RIGHT" + row2.label(text=str(item.total_elements)) diff --git a/src/blenderbim/blenderbim/bim/module/system/__init__.py b/src/blenderbim/blenderbim/bim/module/system/__init__.py index f87f83740d..6cc772e135 100644 --- a/src/blenderbim/blenderbim/bim/module/system/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/system/__init__.py @@ -31,6 +31,7 @@ classes = ( operator.EnableEditingSystem, operator.HidePorts, operator.LoadSystems, + operator.RemovePort, operator.RemoveSystem, operator.SelectSystemProducts, operator.SetFlowDirection, diff --git a/src/blenderbim/blenderbim/bim/module/system/operator.py b/src/blenderbim/blenderbim/bim/module/system/operator.py index 290654884e..9b9165e97d 100644 --- a/src/blenderbim/blenderbim/bim/module/system/operator.py +++ b/src/blenderbim/blenderbim/bim/module/system/operator.py @@ -140,7 +140,7 @@ class ShowPorts(bpy.types.Operator, Operator): bl_options = {"REGISTER", "UNDO"} def _execute(self, context): - core.show_ports(tool.System, element=tool.Ifc.get_entity(context.active_object)) + core.show_ports(tool.Ifc, tool.System, element=tool.Ifc.get_entity(context.active_object)) class HidePorts(bpy.types.Operator, Operator): @@ -149,18 +149,27 @@ class HidePorts(bpy.types.Operator, Operator): bl_options = {"REGISTER", "UNDO"} def _execute(self, context): - core.hide_ports(tool.System, element=tool.Ifc.get_entity(context.active_object)) + core.hide_ports(tool.Ifc, tool.System, element=tool.Ifc.get_entity(context.active_object)) class AddPort(bpy.types.Operator, Operator): bl_idname = "bim.add_port" - bl_label = "Add Ports" + bl_label = "Add Port" bl_options = {"REGISTER", "UNDO"} def _execute(self, context): core.add_port(tool.Ifc, tool.System, element=tool.Ifc.get_entity(context.active_object)) +class RemovePort(bpy.types.Operator, Operator): + bl_idname = "bim.remove_port" + bl_label = "Remove Port" + bl_options = {"REGISTER", "UNDO"} + + def _execute(self, context): + core.remove_port(tool.Ifc, tool.System, port=tool.Ifc.get_entity(context.active_object)) + + class ConnectPort(bpy.types.Operator, Operator): bl_idname = "bim.connect_port" bl_label = "Connect Ports" diff --git a/src/blenderbim/blenderbim/bim/module/system/ui.py b/src/blenderbim/blenderbim/bim/module/system/ui.py index 33a0e975f6..e65e90f87f 100644 --- a/src/blenderbim/blenderbim/bim/module/system/ui.py +++ b/src/blenderbim/blenderbim/bim/module/system/ui.py @@ -140,7 +140,9 @@ class BIM_PT_ports(Panel): if not context.active_object: return False element = tool.Ifc.get_entity(context.active_object) - if not element or not element.is_a("IfcDistributionElement"): + if not element: + return False + if not element.is_a("IfcDistributionElement") and not element.is_a("IfcDistributionElementType"): return False return True @@ -183,6 +185,7 @@ class BIM_PT_port(Panel): row.operator("bim.set_flow_direction", icon="BACK", text="").direction = "SINK" row.operator("bim.set_flow_direction", icon="ARROW_LEFTRIGHT", text="").direction = "SOURCEANDSINK" row.operator("bim.set_flow_direction", icon="RESTRICT_INSTANCED_ON", text="").direction = "NOTDEFINED" + row.operator("bim.remove_port", icon="X", text="") class BIM_UL_systems(UIList): diff --git a/src/blenderbim/blenderbim/bim/module/unit/ui.py b/src/blenderbim/blenderbim/bim/module/unit/ui.py index 8f053d108b..a6d13447f5 100644 --- a/src/blenderbim/blenderbim/bim/module/unit/ui.py +++ b/src/blenderbim/blenderbim/bim/module/unit/ui.py @@ -111,7 +111,7 @@ class BIM_UL_units(UIList): op.unit = item.ifc_definition_id if props.active_unit_id == item.ifc_definition_id: - row.operator("bim.edit_unit", text="", icon="CHECKMARK") + row.operator("bim.edit_unit", text="", icon="CHECKMARK").unit = item.ifc_definition_id row.operator("bim.disable_editing_unit", text="", icon="CANCEL") elif props.active_unit_id: row.operator("bim.remove_unit", text="", icon="X").unit = item.ifc_definition_id diff --git a/src/blenderbim/blenderbim/bim/ui.py b/src/blenderbim/blenderbim/bim/ui.py index 000ceac13c..2457cd99bf 100644 --- a/src/blenderbim/blenderbim/bim/ui.py +++ b/src/blenderbim/blenderbim/bim/ui.py @@ -106,8 +106,9 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences): name="SVG to DXF Command", description="E.g. [['inkscape', svg, '-o', eps], ['pstoedit', '-dt', '-f', 'dxf:-polyaslines -mm', eps, dxf, '-psarg', '-dNOSAFER']]", ) - svg_command: StringProperty(name="SVG Command", description="E.g. [['firefox-bin', path]]") - pdf_command: StringProperty(name="PDF Command", description="E.g. [['firefox-bin', path]]") + svg_command: StringProperty(name="SVG Command", description="E.g. [['firefox', path]]") + pdf_command: StringProperty(name="PDF Command", description="E.g. [['firefox', path]]") + spreadsheet_command: StringProperty(name="Spreadsheet Command", description="E.g. [['libreoffice', path]]") openlca_port: IntProperty(name="OpenLCA IPC Port", default=8080) should_hide_empty_props: BoolProperty(name="Should Hide Empty Properties", default=True) should_play_chaching_sound: BoolProperty( @@ -141,6 +142,8 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences): row = layout.row() row.prop(self, "pdf_command") row = layout.row() + row.prop(self, "spreadsheet_command") + row = layout.row() row.prop(self, "openlca_port") row = layout.row() row.prop(self, "should_hide_empty_props") diff --git a/src/blenderbim/blenderbim/core/drawing.py b/src/blenderbim/blenderbim/core/drawing.py index 845d35ed89..6bad766d63 100644 --- a/src/blenderbim/blenderbim/core/drawing.py +++ b/src/blenderbim/blenderbim/core/drawing.py @@ -36,18 +36,18 @@ def edit_text(ifc, drawing, obj=None): drawing.disable_editing_text(obj) -def enable_editing_text_product(drawing, obj=None): - drawing.enable_editing_text_product(obj) - drawing.import_text_product(obj) +def enable_editing_assigned_product(drawing, obj=None): + drawing.enable_editing_assigned_product(obj) + drawing.import_assigned_product(obj) -def disable_editing_text_product(drawing, obj=None): - drawing.disable_editing_text_product(obj) +def disable_editing_assigned_product(drawing, obj=None): + drawing.disable_editing_assigned_product(obj) -def edit_text_product(ifc, drawing, obj=None, product=None): +def edit_assigned_product(ifc, drawing, obj=None, product=None): element = ifc.get_entity(obj) - existing_product = drawing.get_text_product(element) + existing_product = drawing.get_assigned_product(element) if existing_product == product: return if existing_product: @@ -55,7 +55,7 @@ def edit_text_product(ifc, drawing, obj=None, product=None): if product: ifc.run("drawing.assign_product", relating_product=product, related_object=element) drawing.update_text_value(obj) - drawing.disable_editing_text_product(obj) + drawing.disable_editing_assigned_product(obj) def load_sheets(drawing): @@ -81,7 +81,7 @@ def add_sheet(ifc, drawing, titleblock=None): def open_sheet(drawing, sheet=None): - drawing.open_svg(drawing.get_sheet_filename(sheet)) + drawing.open_svg(drawing.get_document_uri(sheet)) def remove_sheet(ifc, drawing, sheet=None): @@ -89,6 +89,42 @@ def remove_sheet(ifc, drawing, sheet=None): drawing.import_sheets() +def load_schedules(drawing): + drawing.import_schedules() + drawing.enable_editing_schedules() + + +def disable_editing_schedules(drawing): + drawing.disable_editing_schedules() + + +def add_schedule(ifc, drawing, uri=None): + schedule = ifc.run("document.add_information") + reference = ifc.run("document.add_reference", information=schedule) + if ifc.get_schema() == "IFC2X3": + attributes = {"DocumentId": "X", "Name": "UNTITLED", "Scope": "SCHEDULE"} + ifc.run("document.edit_information", information=schedule, attributes=attributes) + ifc.run("document.edit_reference", reference=reference, attributes={"Location": uri}) + else: + attributes = {"Identification": "X", "Name": "UNTITLED", "Scope": "SCHEDULE", "Location": uri} + ifc.run("document.edit_information", information=schedule, attributes=attributes) + drawing.import_schedules() + + +def remove_schedule(ifc, drawing, schedule=None): + ifc.run("document.remove_information", information=schedule) + drawing.import_schedules() + + +def open_schedule(drawing, schedule=None): + drawing.open_spreadsheet(drawing.get_schedule_location(schedule)) + + +def update_schedule_name(ifc, drawing, schedule=None, name=None): + if drawing.get_name(schedule) != name: + ifc.run("document.edit_information", information=schedule, attributes={"Name": name}) + + def load_drawings(drawing): drawing.import_drawings() drawing.enable_editing_drawings() @@ -115,7 +151,19 @@ def add_drawing(ifc, collector, drawing, target_view=None, location_hint=None): ifc.run("group.assign_group", group=group, product=element) collector.assign(camera) pset = ifc.run("pset.add_pset", product=element, name="EPset_Drawing") - ifc.run("pset.edit_pset", pset=pset, properties={"TargetView": target_view, "Scale": "1/100", "HumanScale": "1:100"}) + ifc.run( + "pset.edit_pset", + pset=pset, + properties={ + "TargetView": target_view, + "Scale": "1/100", + "HumanScale": "1:100", + "HasUnderlay": False, + "HasLinework": True, + "HasAnnotation": True, + "GlobalReferencing": True, + }, + ) drawing.import_drawings() @@ -144,7 +192,7 @@ def add_annotation(ifc, collector, drawing_tool, drawing=None, object_type=None) if not context: return drawing_tool.show_decorations() - obj = drawing_tool.create_annotation_object(object_type) + obj = drawing_tool.create_annotation_object(drawing, object_type) element = ifc.get_entity(obj) if not element: element = drawing_tool.run_root_assign_class( @@ -160,7 +208,15 @@ def add_annotation(ifc, collector, drawing_tool, drawing=None, object_type=None) drawing_tool.enable_editing(obj) +def build_schedule(drawing, schedule=None): + drawing.create_svg_schedule(schedule) + drawing.open_svg(drawing.get_document_uri(schedule)) + + def sync_references(ifc, collector, drawing_tool, drawing=None): + if not drawing_tool.has_linework(drawing): + return + context = drawing_tool.get_annotation_context(drawing_tool.get_drawing_target_view(drawing)) if not context: return diff --git a/src/blenderbim/blenderbim/core/geometry.py b/src/blenderbim/blenderbim/core/geometry.py index c2329e44dd..65742a684e 100644 --- a/src/blenderbim/blenderbim/core/geometry.py +++ b/src/blenderbim/blenderbim/core/geometry.py @@ -21,11 +21,12 @@ import blenderbim.core.style def edit_object_placement(ifc, geometry, surveyor, obj=None): element = ifc.get_entity(obj) - if element: - geometry.clear_cache(element) - geometry.clear_scale(obj) - ifc.run("geometry.edit_object_placement", product=element, matrix=surveyor.get_absolute_matrix(obj)) - geometry.record_object_position(obj) + if not element: + return + geometry.clear_cache(element) + geometry.clear_scale(obj) + ifc.run("geometry.edit_object_placement", product=element, matrix=surveyor.get_absolute_matrix(obj)) + geometry.record_object_position(obj) def add_representation( @@ -55,7 +56,7 @@ def add_representation( profile_set_usage=profile_set_usage, ) - if geometry.does_object_have_mesh_with_faces(obj): + if geometry.is_body_representation(representation): [geometry.run_style_add_style(obj=mat) for mat in geometry.get_object_materials_without_styles(obj)] ifc.run( "style.assign_representation_styles", diff --git a/src/blenderbim/blenderbim/core/georeference.py b/src/blenderbim/blenderbim/core/georeference.py new file mode 100644 index 0000000000..8cde5d9b20 --- /dev/null +++ b/src/blenderbim/blenderbim/core/georeference.py @@ -0,0 +1,82 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2022 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + + +def add_georeferencing(ifc): + ifc.run("georeference.add_georeferencing") + + +def enable_editing_georeferencing(georeference): + georeference.import_projected_crs() + georeference.import_map_conversion() + georeference.import_true_north() + georeference.enable_editing() + + +def remove_georeferencing(ifc): + ifc.run("georeference.remove_georeferencing") + + +def disable_editing_georeferencing(georeference): + georeference.disable_editing() + + +def edit_georeferencing(ifc, georeference): + ifc.run( + "georeference.edit_georeferencing", + projected_crs=georeference.get_projected_crs_attributes(), + map_conversion=georeference.get_map_conversion_attributes(), + true_north=georeference.get_true_north_attributes(), + ) + georeference.disable_editing() + + +def set_ifc_grid_north(georeference): + georeference.set_ifc_grid_north() + + +def set_blender_grid_north(georeference): + georeference.set_blender_grid_north() + + +def set_ifc_true_north(georeference): + georeference.set_ifc_true_north() + + +def set_blender_true_north(georeference): + georeference.set_blender_true_north() + + +def get_cursor_location(georeference): + georeference.set_coordinates("input", georeference.get_cursor_location()) + + +def set_cursor_location(georeference): + georeference.set_cursor_location(georeference.get_coordinates("output")) + + +def convert_local_to_global(georeference): + coordinates = georeference.xyz2enh(georeference.get_coordinates("input"), georeference.get_map_conversion()) + georeference.set_coordinates("output", coordinates) + georeference.set_cursor_location(coordinates) + + +def convert_global_to_local(georeference): + coordinates = georeference.enh2xyz(georeference.get_coordinates("input"), georeference.get_map_conversion()) + georeference.set_coordinates("output", coordinates) + georeference.set_cursor_location(coordinates) diff --git a/src/blenderbim/blenderbim/core/owner.py b/src/blenderbim/blenderbim/core/owner.py index 65b28cac39..dfeec08970 100644 --- a/src/blenderbim/blenderbim/core/owner.py +++ b/src/blenderbim/blenderbim/core/owner.py @@ -165,3 +165,11 @@ def disable_editing_actor(owner): def edit_actor(ifc, owner): ifc.run("owner.edit_actor", actor=owner.get_actor(), attributes=owner.export_actor_attributes()) disable_editing_actor(owner) + + +def assign_actor(ifc, actor=None, element=None): + ifc.run("owner.assign_actor", relating_actor=actor, related_object=element) + + +def unassign_actor(ifc, actor=None, element=None): + ifc.run("owner.unassign_actor", relating_actor=actor, related_object=element) diff --git a/src/blenderbim/blenderbim/core/root.py b/src/blenderbim/blenderbim/core/root.py index 534ba9ab15..bb3ede124c 100644 --- a/src/blenderbim/blenderbim/core/root.py +++ b/src/blenderbim/blenderbim/core/root.py @@ -21,6 +21,7 @@ def copy_class(ifc, collector, geometry, root, obj=None): element = ifc.get_entity(obj) if not element: return + representation = root.get_object_representation(obj) element = ifc.run("root.copy_class", product=element) ifc.link(element, obj) relating_type = root.get_element_type(element) @@ -28,7 +29,6 @@ def copy_class(ifc, collector, geometry, root, obj=None): ifc.run("type.map_type_representations", related_object=element, relating_type=relating_type) root.link_object_data(ifc.get_object(relating_type), obj) else: - representation = root.get_object_representation(obj) if representation: root.run_geometry_add_representation( obj=obj, diff --git a/src/blenderbim/blenderbim/core/style.py b/src/blenderbim/blenderbim/core/style.py index 4cc8e32a01..e56f7dcc32 100644 --- a/src/blenderbim/blenderbim/core/style.py +++ b/src/blenderbim/blenderbim/core/style.py @@ -110,3 +110,7 @@ def load_styles(style, style_type=None): def disable_editing_styles(style): style.disable_editing_styles() + + +def select_by_style(style_tool, style=None): + style_tool.select_elements(style_tool.get_elements_by_style(style)) diff --git a/src/blenderbim/blenderbim/core/system.py b/src/blenderbim/blenderbim/core/system.py index cde210638f..b635521222 100644 --- a/src/blenderbim/blenderbim/core/system.py +++ b/src/blenderbim/blenderbim/core/system.py @@ -66,23 +66,42 @@ def select_system_products(system_tool, system=None): system_tool.select_system_products(system) -def show_ports(system, element=None): +def show_ports(ifc, system, element=None): + obj = ifc.get_object(element) + if obj and ifc.is_moved(obj): + system.run_geometry_edit_object_placement(obj=obj) + ports = system.get_ports(element) - system.load_ports(ports) + system.load_ports(element, ports) system.select_elements(ports) -def hide_ports(system, element=None): - system.delete_element_objects(system.get_ports(element)) +def hide_ports(ifc, system, element=None): + obj = ifc.get_object(element) + if obj and ifc.is_moved(obj): + system.run_geometry_edit_object_placement(obj=obj) + + ports = system.get_ports(element) + for port in ports: + obj = ifc.get_object(port) + if obj and ifc.is_moved(obj): + system.run_geometry_edit_object_placement(obj=obj) + + system.delete_element_objects(ports) def add_port(ifc, system, element=None): - system.load_ports(system.get_ports(element)) + system.load_ports(element, system.get_ports(element)) obj = system.create_empty_at_cursor_with_element_orientation(element) port = system.run_root_assign_class(obj=obj, ifc_class="IfcDistributionPort") ifc.run("system.assign_port", element=element, port=port) +def remove_port(ifc, system, port=None): + system.delete_element_objects([port]) + ifc.run("root.remove_product", product=port) + + def connect_port(ifc, port1=None, port2=None): ifc.run("system.connect_port", port1=port1, port2=port2) diff --git a/src/blenderbim/blenderbim/core/tool.py b/src/blenderbim/blenderbim/core/tool.py index a77f6cb006..3fa9c6808b 100644 --- a/src/blenderbim/blenderbim/core/tool.py +++ b/src/blenderbim/blenderbim/core/tool.py @@ -154,21 +154,24 @@ class Document: @interface class Drawing: - def create_annotation_object(cls, object_type): pass + def create_annotation_object(cls, drawing, object_type): pass def create_camera(cls, name, matrix): pass + def create_svg_schedule(cls, schedule): pass def create_svg_sheet(cls, document, titleblock): pass def delete_collection(cls, collection): pass def delete_drawing_elements(cls, elements): pass def delete_object(cls, obj): pass + def disable_editing_assigned_product(cls, obj): pass def disable_editing_drawings(cls): pass + def disable_editing_schedules(cls): pass def disable_editing_sheets(cls): pass def disable_editing_text(cls, obj): pass - def disable_editing_text_product(cls, obj): pass def enable_editing(cls, obj): pass + def enable_editing_assigned_product(cls, obj): pass def enable_editing_drawings(cls): pass + def enable_editing_schedules(cls): pass def enable_editing_sheets(cls): pass def enable_editing_text(cls, obj): pass - def enable_editing_text_product(cls, obj): pass def ensure_unique_drawing_name(cls, name): pass def ensure_unique_identification(cls, identification): pass def export_text_literal_attributes(cls, obj): pass @@ -176,20 +179,23 @@ class Drawing: def generate_drawing_name(cls, target_view, location_hint): pass def generate_sheet_identification(cls): pass def get_annotation_context(cls, target_view): pass + def get_assigned_product(cls, element): pass def get_body_context(cls): pass + def get_document_uri(cls, document): pass def get_drawing_collection(cls, drawing): pass def get_drawing_group(cls, drawing): pass def get_drawing_target_view(cls, drawing): pass def get_group_elements(cls, group): pass def get_ifc_representation_class(cls, object_type): pass def get_name(cls, element): pass - def get_sheet_filename(cls, document): pass + def get_schedule_location(cls, schedule): pass def get_text_literal(cls, obj): pass - def get_text_product(cls, element): pass + def import_assigned_product(cls, obj): pass def import_drawings(cls): pass + def import_schedules(cls): pass def import_sheets(cls): pass def import_text_attributes(cls, obj): pass - def import_text_product(cls, obj): pass + def open_spreadsheet(cls, uri): pass def open_svg(cls, filepath): pass def run_root_assign_class(cls, obj=None, ifc_class=None, predefined_type=None, should_add_representation=True, context=None, ifc_representation_class=None): pass def set_drawing_collection_name(cls, group, collection): pass @@ -206,7 +212,6 @@ class Geometry: def clear_scale(cls, obj): pass def create_dynamic_voids(cls, obj): pass def delete_data(cls, data): pass - def does_object_have_mesh_with_faces(cls, obj): pass def does_representation_id_exist(cls, representation_id): pass def duplicate_object_data(cls, obj): pass def get_cartesian_point_coordinate_offset(cls, obj): pass @@ -243,6 +248,29 @@ class Geometry: def should_use_presentation_style_assignment(cls): pass +@interface +class Georeference: + def disable_editing(cls): pass + def enable_editing(cls): pass + def enh2xyz(cls, map_conversion, coordinates): pass + def get_coordinates(cls, io): pass + def get_cursor_location(cls): pass + def get_map_conversion(cls): pass + def get_map_conversion_attributes(cls): pass + def get_projected_crs_attributes(cls): pass + def get_true_north_attributes(cls): pass + def import_map_conversion(cls): pass + def import_projected_crs(cls): pass + def import_true_north(cls): pass + def set_blender_grid_north(cls): pass + def set_blender_true_north(cls): pass + def set_coordinates(cls, io, coordinates): pass + def set_cursor_location(cls, coordinates): pass + def set_ifc_grid_north(cls): pass + def set_ifc_true_north(cls): pass + def xyz2enh(cls, map_conversion, coordinates): pass + + @interface class Ifc: def get(cls): pass @@ -438,6 +466,7 @@ class Style: def export_surface_attributes(cls, obj): pass def get_active_style_type(cls): pass def get_context(cls, obj): pass + def get_elements_by_style(cls, style): pass def get_name(cls, obj): pass def get_style(cls, obj): pass def get_surface_rendering_attributes(cls, obj): pass @@ -449,6 +478,7 @@ class Style: def import_presentation_styles(cls, style_type): pass def import_surface_attributes(cls, style, obj): pass def is_editing_styles(cls): pass + def select_elements(cls, elements): pass @interface @@ -468,7 +498,8 @@ class System: def get_ports(cls, element): pass def import_system_attributes(cls, system): pass def import_systems(cls): pass - def load_ports(cls, port): pass + def load_ports(cls, element, ports): pass + def run_geometry_edit_object_placement(cls, obj=None): pass def run_root_assign_class(cls, obj=None, ifc_class=None, predefined_type=None, should_add_representation=True, context=None, ifc_representation_class=None): pass def select_elements(cls, elements): pass def select_system_products(cls, system): pass @@ -500,10 +531,10 @@ class Unit: def get_scene_unit_name(cls, unit_type): pass def get_scene_unit_si_prefix(cls): pass def get_si_name_from_unit_type(cls, unit_type): pass - def get_unit_class(cls, unit): pass def import_unit_attributes(cls, unit): pass def import_units(cls): pass def is_scene_unit_metric(cls): pass + def is_unit_class(cls, unit, ifc_class): pass def set_active_unit(cls, unit): pass diff --git a/src/blenderbim/blenderbim/core/unit.py b/src/blenderbim/blenderbim/core/unit.py index f5fd274a66..e21ea62816 100644 --- a/src/blenderbim/blenderbim/core/unit.py +++ b/src/blenderbim/blenderbim/core/unit.py @@ -96,12 +96,11 @@ def disable_editing_unit(unit): def edit_unit(ifc, unit_tool, unit=None): attributes = unit_tool.export_unit_attributes() - unit_class = unit_tool.get_unit_class(unit) - if unit_class == "IfcMonetaryUnit": + if unit_tool.is_unit_class(unit, "IfcMonetaryUnit"): ifc.run("unit.edit_monetary_unit", unit=unit, attributes=attributes) - elif unit_class == "IfcDerivedUnit": + elif unit_tool.is_unit_class(unit, "IfcDerivedUnit"): ifc.run("unit.edit_derived_unit", unit=unit, attributes=attributes) - elif unit_class == "IfcNamedUnit": + elif unit_tool.is_unit_class(unit, "IfcNamedUnit"): ifc.run("unit.edit_named_unit", unit=unit, attributes=attributes) unit_tool.import_units() unit_tool.clear_active_unit() diff --git a/src/blenderbim/blenderbim/tool/__init__.py b/src/blenderbim/blenderbim/tool/__init__.py index 7ae4c6fbea..705120b4b6 100644 --- a/src/blenderbim/blenderbim/tool/__init__.py +++ b/src/blenderbim/blenderbim/tool/__init__.py @@ -20,6 +20,7 @@ from blenderbim.tool.aggregate import Aggregate from blenderbim.tool.blender import Blender from blenderbim.tool.boundary import Boundary from blenderbim.tool.brick import Brick +from blenderbim.tool.cad import Cad from blenderbim.tool.collector import Collector from blenderbim.tool.context import Context from blenderbim.tool.debug import Debug @@ -27,6 +28,7 @@ from blenderbim.tool.demo import Demo from blenderbim.tool.document import Document from blenderbim.tool.drawing import Drawing from blenderbim.tool.geometry import Geometry +from blenderbim.tool.georeference import Georeference from blenderbim.tool.ifc import Ifc from blenderbim.tool.library import Library from blenderbim.tool.material import Material diff --git a/src/blenderbim/blenderbim/tool/cad.py b/src/blenderbim/blenderbim/tool/cad.py new file mode 100644 index 0000000000..e367e93810 --- /dev/null +++ b/src/blenderbim/blenderbim/tool/cad.py @@ -0,0 +1,329 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2022 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + +# This code was originally taken from https://github.com/zeffii/mesh_tiny_cad +# which is typically bundled with Blender, licensed under GPL v2-or-later. +# Modifications are made to make the behaviour more in line with how intuitively +# CAD drafters use these tools. + +# Changes include: +# +# - Instead of AutoVTX, user explicitly chooses V, T, or X mode +# - Instead of adding edges, existing edges are extended +# - An arc is reconstructed from 3 points instead of a full circle +# - You can now derive the center from an arc without generating geometry + + +import sys +import bpy +import math +import bmesh +from mathutils import Vector, Matrix, geometry +from mathutils.geometry import intersect_line_line as LineIntersect +from mathutils.geometry import intersect_point_line as PtLineIntersect + + +class CAD_prefs: + VTX_PRECISION = 1.0e-5 + VTX_DOUBLES_THRSHLD = 0.0001 + + +class Cad: + @classmethod + def point_on_edge(cls, p, edge): + """ + > p: vector + > edge: tuple of 2 vectors + < returns: True / False if a point happens to lie on an edge + """ + pt, _percent = PtLineIntersect(p, *edge) + on_line = (pt - p).length < CAD_prefs.VTX_PRECISION + return on_line and (0.0 <= _percent <= 1.0) + + @classmethod + def line_from_edge_intersect(cls, edge1, edge2): + """ + > takes 2 tuples, each tuple contains 2 vectors + - prepares input for sending to intersect_line_line + < returns output of intersect_line_line + """ + [p1, p2], [p3, p4] = edge1, edge2 + return LineIntersect(p1, p2, p3, p4) + + @classmethod + def get_intersection(cls, edge1, edge2): + """ + > takes 2 tuples, each tuple contains 2 vectors + < returns the point halfway on line. See intersect_line_line + """ + line = cls.line_from_edge_intersect(edge1, edge2) + if line: + return (line[0] + line[1]) / 2 + + @classmethod + def test_coplanar(cls, edge1, edge2): + """ + the line that describes the shortest line between the two edges + would be short if the lines intersect mathematically. If this + line is longer than the VTX_PRECISION then they are either + coplanar or parallel. + """ + line = cls.line_from_edge_intersect(edge1, edge2) + if line: + return (line[0] - line[1]).length < CAD_prefs.VTX_PRECISION + + @classmethod + def closest_idx(cls, pt, e): + """ + > pt: vector + > e: bmesh edge + < returns: returns index of vertex closest to pt. + + if both points in e are equally far from pt, then v1 is returned. + """ + if isinstance(e, bmesh.types.BMEdge): + ev = e.verts + v1 = ev[0].co + v2 = ev[1].co + distance_test = (v1 - pt).length <= (v2 - pt).length + return ev[0].index if distance_test else ev[1].index + + print("received {0}, check expected input in docstring ".format(e)) + + @classmethod + def closest_vector(cls, pt, e): + """ + > pt: vector + > e: 2 vector tuple + < returns: + pt, 2 vector tuple: returns closest vector to pt + + if both points in e are equally far from pt, then v1 is returned. + """ + if isinstance(e, tuple) and all([isinstance(co, Vector) for co in e]): + v1, v2 = e + distance_test = (v1 - pt).length <= (v2 - pt).length + return v1 if distance_test else v2 + + print("received {0}, check expected input in docstring ".format(e)) + + @classmethod + def coords_tuple_from_edge_idx(cls, bm, idx): + """bm is a bmesh representation""" + return tuple(v.co for v in bm.edges[idx].verts) + + @classmethod + def vectors_from_indices(cls, bm, raw_vert_indices): + """bm is a bmesh representation""" + return [bm.verts[i].co for i in raw_vert_indices] + + @classmethod + def vertex_indices_from_edges_tuple(cls, bm, edge_tuple): + """ + > bm: is a bmesh representation + > edge_tuple: contains two edge indices. + < returns the vertex indices of edge_tuple + """ + + def k(v, w): + return bm.edges[edge_tuple[v]].verts[w].index + + return [k(i >> 1, i % 2) for i in range(4)] + + @classmethod + def get_vert_indices_from_bmedges(cls, edges): + """ + > bmedges: a list of two bm edges + < returns the vertex indices of edge_tuple as a flat list. + """ + temp_edges = [] + print(edges) + for e in edges: + for v in e.verts: + temp_edges.append(v.index) + return temp_edges + + @classmethod + def num_edges_point_lies_on(cls, pt, edges): + """returns the number of edges that a point lies on.""" + res = [point_on_edge(pt, edge) for edge in [edges[:2], edges[2:]]] + return len([i for i in res if i]) + + @classmethod + def find_intersecting_edges(cls, bm, pt, idx1, idx2): + """ + > pt: Vector + > idx1, ix2: edge indices + < returns the list of edge indices where pt is on those edges + """ + if not pt: + return [] + idxs = [idx1, idx2] + edges = [cls.coords_tuple_from_edge_idx(bm, idx) for idx in idxs] + return [idx for edge, idx in zip(edges, idxs) if cls.point_on_edge(pt, edge)] + + @classmethod + def duplicates(cls, indices): + return len(set(indices)) < 4 + + @classmethod + def vert_idxs_from_edge_idx(cls, bm, idx): + edge = bm.edges[idx] + return edge.verts[0].index, edge.verts[1].index + + @classmethod + def add_edges(cls, bm, pt, idxs, fdp): + """ + this function is a disaster -- + index updates and ensure_lookup_table() are called before this function + and after, and i've tried doing this less verbose but results tend to be + less predictable. I'm obviously a terrible coder, but can only spend so + much time figuring out this stuff. + """ + + v1 = bm.verts.new(pt) + + bm.verts.ensure_lookup_table() + bm.edges.ensure_lookup_table() + bm.verts.index_update() + + try: + for e in idxs: + bm.edges.index_update() + v2 = bm.verts[e] + bm.edges.new((v1, v2)) + + bm.edges.index_update() + bm.verts.ensure_lookup_table() + bm.edges.ensure_lookup_table() + + except Exception as err: + print("some failure: details") + for l in fdp: + print(l) + + sys.stderr.write("ERROR: %s\n" % str(err)) + print(sys.exc_info()[-1].tb_frame.f_code) + print("Error on line {}".format(sys.exc_info()[-1].tb_lineno)) + + @classmethod + def remove_earmarked_edges(cls, bm, earmarked): + edges_select = [e for e in bm.edges if e.index in earmarked] + bmesh.ops.delete(bm, geom=edges_select, context="EDGES") + + @classmethod + def perform_vtx(cls, bm, pt, edges, pts, vertex_indices): + idx1, idx2 = edges[0].index, edges[1].index + fdp = pt, edges, pts, vertex_indices + + # this list will hold those edges that pt lies on + edges_indices = cls.find_intersecting_edges(bm, pt, idx1, idx2) + mode = "VTX"[len(edges_indices)] + + if mode == "V": + cl_vert1 = cls.closest_idx(pt, edges[0]) + cl_vert2 = cls.closest_idx(pt, edges[1]) + cls.add_edges(bm, pt, [cl_vert1, cl_vert2], fdp) + + elif mode == "T": + to_edge_idx = edges_indices[0] + from_edge_idx = idx1 if to_edge_idx == idx2 else idx2 + + cl_vert = cls.closest_idx(pt, bm.edges[from_edge_idx]) + to_vert1, to_vert2 = cls.vert_idxs_from_edge_idx(bm, to_edge_idx) + cls.add_edges(bm, pt, [cl_vert, to_vert1, to_vert2], fdp) + + elif mode == "X": + cls.add_edges(bm, pt, vertex_indices, fdp) + + # final refresh before returning to user. + if edges_indices: + cls.remove_earmarked_edges(bm, edges_indices) + + bm.edges.index_update() + return bm + + @classmethod + def perform_t(cls, bm, pt, target, edge, pts, vertex_indices): + cl_vert = cls.closest_idx(pt, bm.edges[edge.index]) + bm.verts[cl_vert].co = pt + bm.edges.index_update() + return bm + + @classmethod + def perform_v(cls, bm, pt, target, edge, pts, vertex_indices): + bm = cls.perform_t(bm, pt, target, edge, pts, vertex_indices) + bm = cls.perform_t(bm, pt, edge, target, pts, vertex_indices) + return bm + + @classmethod + def prioritise_active_edge(cls, bm, edges): + return [edges[0], edges[1]] if bm.select_history.active == edges[0] else [edges[1], edges[0]] + + @classmethod + def do_vtx_if_appropriate(cls, bm, edges, mode): + vertex_indices = cls.get_vert_indices_from_bmedges(edges) + + # test 1, are there shared vers? if so return non-viable + if not len(set(vertex_indices)) == 4: + return {"SHARED_VERTEX"} + + # test 2, is parallel? + p1, p2, p3, p4 = [bm.verts[i].co for i in vertex_indices] + point = cls.get_intersection([p1, p2], [p3, p4]) + if not point: + return {"PARALLEL_EDGES"} + + # test 3, coplanar edges? + coplanar = cls.test_coplanar([p1, p2], [p3, p4]) + if not coplanar: + return {"NON_PLANAR_EDGES"} + + edges = cls.prioritise_active_edge(bm, edges) + # point must lie on an edge or the virtual extension of an edge + if mode == "T": + bm = cls.perform_t(bm, point, edges[0], edges[1], (p1, p2, p3, p4), vertex_indices) + elif mode == "V": + bm = cls.perform_v(bm, point, edges[0], edges[1], (p1, p2, p3, p4), vertex_indices) + return bm + + @classmethod + def get_center_of_arc(cls, pts, obj): + mw = obj.matrix_world + V = Vector + + # construction + v1, v2, v3, v4 = V(pts[0]), V(pts[1]), V(pts[1]), V(pts[2]) + edge1_mid = v1.lerp(v2, 0.5) + edge2_mid = v3.lerp(v4, 0.5) + axis = geometry.normal(v1, v2, v4) + mat_rot = Matrix.Rotation(math.radians(90.0), 4, axis) + + # triangle edges + v1_ = ((v1 - edge1_mid) @ mat_rot) + edge1_mid + v2_ = ((v2 - edge1_mid) @ mat_rot) + edge1_mid + v3_ = ((v3 - edge2_mid) @ mat_rot) + edge2_mid + v4_ = ((v4 - edge2_mid) @ mat_rot) + edge2_mid + + r = geometry.intersect_line_line(v1_, v2_, v3_, v4_) + if r: + p1, _ = r + cp = mw @ p1 + return cp + else: + print("not on a circle") diff --git a/src/blenderbim/blenderbim/tool/drawing.py b/src/blenderbim/blenderbim/tool/drawing.py index 8926ae9b39..34d9a153bf 100644 --- a/src/blenderbim/blenderbim/tool/drawing.py +++ b/src/blenderbim/blenderbim/tool/drawing.py @@ -29,27 +29,31 @@ import blenderbim.core.geometry import blenderbim.tool as tool import ifcopenshell.util.representation import blenderbim.bim.module.drawing.sheeter as sheeter +import blenderbim.bim.module.drawing.scheduler as scheduler import blenderbim.bim.module.drawing.annotation as annotation import blenderbim.bim.module.drawing.helper as helper class Drawing(blenderbim.core.tool.Drawing): @classmethod - def create_annotation_object(cls, object_type): + def create_annotation_object(cls, drawing, object_type): data_type = { + "ANGLE": "mesh", + "BREAKLINE": "mesh", + "DIAMETER": "curve", "DIMENSION": "curve", - "EQUAL_DIMENSION": "curve", + "FILL_AREA": "mesh", + "HIDDEN_LINE": "mesh", + "LINEWORK": "mesh", + "PLAN_LEVEL": "curve", + "RADIUS": "curve", + "SECTION_LEVEL": "curve", + "STAIR_ARROW": "curve", "TEXT": "empty", "TEXT_LEADER": "curve", - "STAIR_ARROW": "curve", - "HIDDEN_LINE": "mesh", - "PLAN_LEVEL": "curve", - "SECTION_LEVEL": "curve", - "BREAKLINE": "mesh", - "MISC": "mesh", }[object_type] - obj = annotation.Annotator.get_annotation_obj(object_type, data_type) - if object_type == "BREAKLINE": + obj = annotation.Annotator.get_annotation_obj(drawing, object_type, data_type) + if object_type == "FILL_AREA": obj = annotation.Annotator.add_plane_to_annotation(obj) elif object_type != "TEXT": obj = annotation.Annotator.add_line_to_annotation(obj) @@ -70,11 +74,16 @@ class Drawing(blenderbim.core.tool.Drawing): bpy.context.scene.collection.objects.link(camera) return camera + @classmethod + def create_svg_schedule(cls, schedule): + schedule_creator = scheduler.Scheduler() + schedule_creator.schedule(cls.get_schedule_location(schedule), cls.get_document_uri(schedule)) + @classmethod def create_svg_sheet(cls, document, titleblock): sheet_builder = sheeter.SheetBuilder() sheet_builder.data_dir = bpy.context.scene.BIMProperties.data_dir - sheet_builder.create(cls.get_sheet_filename(document), titleblock) + sheet_builder.create(cls.get_document_uri(document), titleblock) @classmethod def delete_collection(cls, collection): @@ -96,6 +105,10 @@ class Drawing(blenderbim.core.tool.Drawing): def disable_editing_drawings(cls): bpy.context.scene.DocProperties.is_editing_drawings = False + @classmethod + def disable_editing_schedules(cls): + bpy.context.scene.DocProperties.is_editing_schedules = False + @classmethod def disable_editing_sheets(cls): bpy.context.scene.DocProperties.is_editing_sheets = False @@ -105,8 +118,8 @@ class Drawing(blenderbim.core.tool.Drawing): obj.BIMTextProperties.is_editing = False @classmethod - def disable_editing_text_product(cls, obj): - obj.BIMTextProperties.is_editing_product = False + def disable_editing_assigned_product(cls, obj): + obj.BIMAssignedProductProperties.is_editing_product = False @classmethod def enable_editing(cls, obj): @@ -120,6 +133,10 @@ class Drawing(blenderbim.core.tool.Drawing): def enable_editing_drawings(cls): bpy.context.scene.DocProperties.is_editing_drawings = True + @classmethod + def enable_editing_schedules(cls): + bpy.context.scene.DocProperties.is_editing_schedules = True + @classmethod def enable_editing_sheets(cls): bpy.context.scene.DocProperties.is_editing_sheets = True @@ -129,8 +146,8 @@ class Drawing(blenderbim.core.tool.Drawing): obj.BIMTextProperties.is_editing = True @classmethod - def enable_editing_text_product(cls, obj): - obj.BIMTextProperties.is_editing_product = True + def enable_editing_assigned_product(cls, obj): + obj.BIMAssignedProductProperties.is_editing_product = True @classmethod def ensure_unique_drawing_name(cls, name): @@ -163,6 +180,18 @@ class Drawing(blenderbim.core.tool.Drawing): def get_body_context(cls): return ifcopenshell.util.representation.get_context(tool.Ifc.get(), "Model", "Body", "MODEL_VIEW") + @classmethod + def get_document_uri(cls, document): + if hasattr(document, "Identification"): + name = document.Identification or "X" + else: + name = document.DocumentId or "X" + name += " - " + (document.Name or "Unnamed") + if document.Scope == "DOCUMENTATION": + return os.path.join(bpy.context.scene.BIMProperties.data_dir, "sheets", name + ".svg") + elif document.Scope == "SCHEDULE": + return os.path.join(bpy.context.scene.BIMProperties.data_dir, "schedules", name + ".svg") + @classmethod def get_drawing_collection(cls, drawing): obj = tool.Ifc.get_object(drawing) @@ -176,7 +205,7 @@ class Drawing(blenderbim.core.tool.Drawing): @classmethod def get_drawing_target_view(cls, drawing): - return ifcopenshell.util.element.get_psets(drawing)["EPset_Drawing"]["TargetView"] + return ifcopenshell.util.element.get_psets(drawing)["EPset_Drawing"].get("TargetView", "MODEL_VIEW") @classmethod def get_group_elements(cls, group): @@ -196,13 +225,10 @@ class Drawing(blenderbim.core.tool.Drawing): return element.Name @classmethod - def get_sheet_filename(cls, document): - if hasattr(document, "Identification"): - name = document.Identification or "X" - else: - name = document.DocumentId or "X" - name += " - " + (document.Name or "Unnamed") - return name + def get_schedule_location(cls, schedule): + if tool.Ifc.get_schema() == "IFC2X3": + return schedule.DocumentReferences[0].Location + return schedule.Location @classmethod def generate_drawing_matrix(cls, target_view, location_hint): @@ -256,7 +282,7 @@ class Drawing(blenderbim.core.tool.Drawing): return items[0] @classmethod - def get_text_product(cls, element): + def get_assigned_product(cls, element): for rel in element.HasAssignments: if rel.is_a("IfcRelAssignsToProduct"): return rel.RelatingProduct @@ -271,6 +297,19 @@ class Drawing(blenderbim.core.tool.Drawing): new.name = drawing.Name or "Unnamed" new.target_view = cls.get_drawing_target_view(drawing) + @classmethod + def import_schedules(cls): + bpy.context.scene.DocProperties.schedules.clear() + schedules = [d for d in tool.Ifc.get().by_type("IfcDocumentInformation") if d.Scope == "SCHEDULE"] + for schedule in schedules: + new = bpy.context.scene.DocProperties.schedules.add() + new.ifc_definition_id = schedule.id() + new.name = schedule.Name or "Unnamed" + if tool.Ifc.get_schema() == "IFC2X3": + new.identification = schedule.DocumentId + else: + new.identification = schedule.Identification + @classmethod def import_sheets(cls): props = bpy.context.scene.DocProperties @@ -302,9 +341,12 @@ class Drawing(blenderbim.core.tool.Drawing): new.identification = reference.Identification or "X" element = cls.get_reference_element(reference) - - new.name = element.Name - new.reference_type = "DRAWING" + if element: + new.name = element.Name + new.reference_type = "DRAWING" + else: + new.name = cls.get_reference_document(reference).Name or "Unnamed" + new.reference_type = "SCHEDULE" @classmethod def import_text_attributes(cls, obj): @@ -314,28 +356,33 @@ class Drawing(blenderbim.core.tool.Drawing): blenderbim.bim.helper.import_attributes2(text, props.attributes) @classmethod - def import_text_product(cls, obj): + def import_assigned_product(cls, obj): element = tool.Ifc.get_entity(obj) - product = cls.get_text_product(element) + product = cls.get_assigned_product(element) if product: - obj.BIMTextProperties.relating_product = tool.Ifc.get_object(product) + obj.BIMAssignedProductProperties.relating_product = tool.Ifc.get_object(product) else: - obj.BIMTextProperties.relating_product = None + obj.BIMAssignedProductProperties.relating_product = None @classmethod def open_with_user_command(cls, user_command, path): if user_command: commands = eval(user_command) for command in commands: - subprocess.run(command) + subprocess.Popen(command) else: webbrowser.open("file://" + path) @classmethod - def open_svg(cls, filename): + def open_spreadsheet(cls, uri): cls.open_with_user_command( - bpy.context.preferences.addons["blenderbim"].preferences.svg_command, - os.path.join(bpy.context.scene.BIMProperties.data_dir, "sheets", filename + ".svg"), + bpy.context.preferences.addons["blenderbim"].preferences.spreadsheet_command, uri + ) + + @classmethod + def open_svg(cls, uri): + cls.open_with_user_command( + bpy.context.preferences.addons["blenderbim"].preferences.svg_command, uri ) @classmethod @@ -374,7 +421,7 @@ class Drawing(blenderbim.core.tool.Drawing): if not element: return value = element.Literal - product = cls.get_text_product(tool.Ifc.get_entity(obj)) + product = cls.get_assigned_product(tool.Ifc.get_entity(obj)) if product: selector = ifcopenshell.util.selector.Selector() variables = {} @@ -403,11 +450,17 @@ class Drawing(blenderbim.core.tool.Drawing): if element in existing_references or element == drawing: continue if element.ObjectType == "DRAWING": - psets = ifcopenshell.util.element.get_psets(element) - if psets.get("EPset_Drawing", {}).get("TargetView", None) in ("SECTION_VIEW", "ELEVATION_VIEW"): + pset = ifcopenshell.util.element.get_psets(element).get("EPset_Drawing", {}) + if pset.get("TargetView", None) in ("SECTION_VIEW", "ELEVATION_VIEW") and pset.get( + "GlobalReferencing", False + ): elements.append(element) for element in tool.Ifc.get().by_type("IfcGridAxis"): elements.append(element) + target_view = tool.Drawing.get_drawing_target_view(drawing) + if target_view in ("SECTION_VIEW", "ELEVATION_VIEW"): + for element in tool.Ifc.get().by_type("IfcBuildingStorey"): + elements.append(element) return elements @classmethod @@ -437,6 +490,72 @@ class Drawing(blenderbim.core.tool.Drawing): return cls.generate_elevation_reference_annotation(drawing, reference_element, context) elif target_view == "SECTION_VIEW": return cls.generate_section_reference_annotation(drawing, reference_element, context) + elif reference_element.is_a("IfcBuildingStorey"): + return cls.generate_storey_annotation(drawing, reference_element, context) + + @classmethod + def generate_storey_annotation(cls, drawing, reference_element, context): + camera = tool.Ifc.get_object(drawing) + bounds = helper.ortho_view_frame(camera.data) if camera.data.type == "ORTHO" else None + reference_obj = tool.Ifc.get_object(reference_element) + + def to_camera_coords(camera, reference_obj): + mat = reference_obj.matrix_world.copy() + xyz = camera.matrix_world.inverted() @ reference_obj.matrix_world.translation + xyz[2] = 0 + xyz = camera.matrix_world @ xyz + mat[0][3] = xyz[0] + mat[1][3] = xyz[1] + mat[2][3] = xyz[2] + annotation_offset = mathutils.Vector((0, 0, -camera.data.clip_start - 0.05)) + annotation_offset = camera.matrix_world.to_quaternion() @ annotation_offset + mat[0][3] += annotation_offset[0] + mat[1][3] += annotation_offset[1] + mat[2][3] += annotation_offset[2] + return mat + + def project_point_onto_camera(point, camera): + projection = camera.matrix_world.to_quaternion() @ mathutils.Vector((0, 0, -1)) + return camera.matrix_world.inverted() @ mathutils.geometry.intersect_line_plane( + point.xyz, point.xyz - projection, camera.location, projection + ) + + obj_matrix = to_camera_coords(camera, reference_obj) + + if camera.data.BIMCameraProperties.raster_x > camera.data.BIMCameraProperties.raster_y: + width = camera.data.ortho_scale + height = width / camera.data.BIMCameraProperties.raster_x * camera.data.BIMCameraProperties.raster_y + else: + height = camera.data.ortho_scale + width = height / camera.data.BIMCameraProperties.raster_y * camera.data.BIMCameraProperties.raster_x + + projection = project_point_onto_camera(reference_obj.location, camera) + co1 = camera.matrix_world @ mathutils.Vector((width / 2, projection[1], -1)) + co2 = camera.matrix_world @ mathutils.Vector((-(width / 2), projection[1], -1)) + co1 = obj_matrix.inverted() @ co1 + co2 = obj_matrix.inverted() @ co2 + + data = bpy.data.curves.new("Annotation", type="CURVE") + data.dimensions = "3D" + data.resolution_u = 2 + + polyline = data.splines.new("POLY") + polyline.points.add(1) + polyline.points[-2].co = list(co1) + [1] + polyline.points[-1].co = list(co2) + [1] + + obj = bpy.data.objects.new(reference_obj.name, data) + obj.matrix_world = obj_matrix + + element = cls.run_root_assign_class( + obj=obj, + ifc_class="IfcAnnotation", + predefined_type="SECTION_LEVEL", + should_add_representation=True, + context=context, + ifc_representation_class=None, + ) + return element @classmethod def generate_section_reference_annotation(cls, drawing, reference_element, context): @@ -723,14 +842,48 @@ class Drawing(blenderbim.core.tool.Drawing): @classmethod def get_reference_element(cls, reference): if tool.Ifc.get_schema() == "IFC2X3": - return [ - r for r in tool.Ifc.by_type("IfcRelAssociatesDocument") if r.RelatingDocument == reference - ][0].RelatedObjects[0] - return reference.DocumentRefForObjects[0].RelatedObjects[0] + refs = [r for r in tool.Ifc.by_type("IfcRelAssociatesDocument") if r.RelatingDocument == reference] + else: + refs = reference.DocumentRefForObjects + if refs: + return refs[0].RelatedObjects[0] @classmethod def get_drawing_human_scale(cls, drawing): - return ifcopenshell.util.element.get_psets(drawing)["EPset_Drawing"]["HumanScale"] + return ifcopenshell.util.element.get_psets(drawing)["EPset_Drawing"].get("HumanScale", "NTS") + + @classmethod + def get_drawing_metadata(cls, drawing): + return [ + v.strip() + for v in ifcopenshell.util.element.get_psets(drawing)["EPset_Drawing"].get("Metadata", "").split(",") + ] + + @classmethod + def get_annotation_z_index(cls, drawing): + return ifcopenshell.util.element.get_psets(drawing).get("EPset_Annotation", {}).get("ZIndex", 0) + + @classmethod + def get_annotation_symbol(cls, drawing): + return ifcopenshell.util.element.get_psets(drawing).get("EPset_Annotation", {}).get("Symbol", None) + + @classmethod + def has_linework(cls, drawing): + return ifcopenshell.util.element.get_psets(drawing).get("EPset_Drawing", {}).get("HasLinework", False) + + @classmethod + def get_drawing_elements(cls, drawing): + pset = ifcopenshell.util.element.get_psets(drawing).get("EPset_Drawing", {}) + include = pset.get("Include", None) + if include: + elements = set(ifcopenshell.util.selector.Selector.parse(tool.Ifc.get(), include)) + else: + elements = set(tool.Ifc.get().by_type("IfcElement")) + exclude = pset.get("Exclude", None) + if exclude: + elements -= set(ifcopenshell.util.selector.Selector.parse(tool.Ifc.get(), exclude, elements=elements)) + elements -= set(tool.Ifc.get().by_type("IfcOpeningElement")) + return elements @classmethod def get_annotation_element(cls, element): @@ -745,7 +898,7 @@ class Drawing(blenderbim.core.tool.Drawing): return rel.RelatingDocument @classmethod - def get_reference_sheet(cls, reference): + def get_reference_document(cls, reference): if tool.Ifc.get_schema() == "IFC2X3": return reference.ReferenceToDocument[0] return reference.ReferencedDocument diff --git a/src/blenderbim/blenderbim/tool/geometry.py b/src/blenderbim/blenderbim/tool/geometry.py index ed146e454f..15be6ddef3 100644 --- a/src/blenderbim/blenderbim/tool/geometry.py +++ b/src/blenderbim/blenderbim/tool/geometry.py @@ -75,10 +75,6 @@ class Geometry(blenderbim.core.tool.Geometry): def delete_data(cls, data): bpy.data.meshes.remove(data) - @classmethod - def does_object_have_mesh_with_faces(cls, obj): - return bool(isinstance(obj.data, bpy.types.Mesh) and len(obj.data.polygons)) - @classmethod def does_representation_id_exist(cls, representation_id): try: @@ -202,9 +198,16 @@ class Geometry(blenderbim.core.tool.Geometry): ifc_importer = blenderbim.bim.import_ifc.IfcImporter(ifc_import_settings) ifc_importer.file = tool.Ifc.get() - mesh = ifc_importer.create_mesh(element, shape) - ifc_importer.material_creator.load_existing_materials() - ifc_importer.material_creator.create(element, obj, mesh) + + if element.is_a("IfcAnnotation") and element.ObjectType == "DRAWING": + mesh = ifc_importer.create_camera(element, shape) + if element.is_a("IfcAnnotation") and ifc_importer.is_curve_annotation(element): + mesh = ifc_importer.create_curve(element, shape) + elif shape: + mesh = ifc_importer.create_mesh(element, shape) + ifc_importer.material_creator.load_existing_materials() + ifc_importer.material_creator.create(element, obj, mesh) + return mesh @classmethod diff --git a/src/blenderbim/blenderbim/tool/georeference.py b/src/blenderbim/blenderbim/tool/georeference.py new file mode 100644 index 0000000000..2c92eb2729 --- /dev/null +++ b/src/blenderbim/blenderbim/tool/georeference.py @@ -0,0 +1,257 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2022 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + +import bpy +import json +import blenderbim.core.tool +import blenderbim.tool as tool +import ifcopenshell +import blenderbim.bim.helper +from math import radians, degrees, atan, tan, cos, sin + + +class Georeference(blenderbim.core.tool.Georeference): + @classmethod + def import_projected_crs(cls): + def callback(name, prop, data): + if name == "MapUnit": + new = bpy.context.scene.BIMGeoreferenceProperties.projected_crs.add() + new.name = name + new.data_type = "enum" + new.is_null = data[name] is None + new.is_optional = True + new.enum_items = json.dumps( + { + u.id(): (getattr(u, "Prefix", "") or "") + u.Name + for u in tool.Ifc.get().by_type("IfcNamedUnit") + if u.UnitType == "LENGTHUNIT" + } + ) + if data["MapUnit"]: + new.enum_value = str(data["MapUnit"].id()) + return True + + props = bpy.context.scene.BIMGeoreferenceProperties + props.projected_crs.clear() + + if tool.Ifc.get_schema() == "IFC2X3": + return + + for context in tool.Ifc.get().by_type("IfcGeometricRepresentationContext", include_subtypes=False): + if context.HasCoordinateOperation: + projected_crs = context.HasCoordinateOperation[0].TargetCRS + blenderbim.bim.helper.import_attributes2(projected_crs, props.projected_crs, callback=callback) + return + + @classmethod + def import_map_conversion(cls): + def callback(name, prop, data): + if name not in ["SourceCRS", "TargetCRS"]: + # Enforce a string data type to prevent data loss in single-precision Blender props + prop.data_type = "string" + prop.string_value = "" if prop.is_null else str(data[name]) + return True + + props = bpy.context.scene.BIMGeoreferenceProperties + props.map_conversion.clear() + + if tool.Ifc.get_schema() == "IFC2X3": + return + + for context in tool.Ifc.get().by_type("IfcGeometricRepresentationContext", include_subtypes=False): + if context.HasCoordinateOperation: + map_conversion = context.HasCoordinateOperation[0] + blenderbim.bim.helper.import_attributes2(map_conversion, props.map_conversion, callback=callback) + return + + @classmethod + def import_true_north(cls): + if tool.Ifc.get_schema() == "IFC2X3": + return + + props = bpy.context.scene.BIMGeoreferenceProperties + props.has_true_north = False + for context in tool.Ifc.get().by_type("IfcGeometricRepresentationContext", include_subtypes=False): + if context.TrueNorth: + true_north = context.TrueNorth.DirectionRatios + props.true_north_abscissa = str(true_north[0]) + props.true_north_ordinate = str(true_north[1]) + props.has_true_north = True + return + + @classmethod + def get_projected_crs_attributes(cls): + def callback(attributes, prop): + if not prop.is_null and prop.name == "MapUnit": + attributes[prop.name] = tool.Ifc.get().by_id(int(prop.enum_value)) + return True + + props = bpy.context.scene.BIMGeoreferenceProperties + return blenderbim.bim.helper.export_attributes(props.projected_crs, callback=callback) + + @classmethod + def get_map_conversion_attributes(cls): + def callback(attributes, prop): + if not prop.is_null and prop.data_type == "string": + # We store our floats as string to prevent single precision data loss + attributes[prop.name] = float(prop.string_value) + return True + + props = bpy.context.scene.BIMGeoreferenceProperties + return blenderbim.bim.helper.export_attributes(props.map_conversion, callback=callback) + + @classmethod + def get_true_north_attributes(cls): + props = bpy.context.scene.BIMGeoreferenceProperties + if props.has_true_north: + try: + return [float(props.true_north_abscissa), float(props.true_north_ordinate)] + except ValueError: + print("ERROR, True North Abscissa and Ordinate expect a number") + # self.report({"ERROR"}, "True North Abscissa and Ordinate expect a number") + + @classmethod + def enable_editing(cls): + bpy.context.scene.BIMGeoreferenceProperties.is_editing = True + + @classmethod + def disable_editing(cls): + bpy.context.scene.BIMGeoreferenceProperties.is_editing = False + + @classmethod + def set_coordinates(cls, io, coordinates): + if io == "input": + bpy.context.scene.BIMGeoreferenceProperties.coordinate_input = ",".join([str(o) for o in coordinates]) + elif io == "output": + bpy.context.scene.BIMGeoreferenceProperties.coordinate_output = ",".join([str(o) for o in coordinates]) + + @classmethod + def get_coordinates(cls, io): + if io == "input": + return [float(co) for co in bpy.context.scene.BIMGeoreferenceProperties.coordinate_input.split(",")] + elif io == "output": + return [float(co) for co in bpy.context.scene.BIMGeoreferenceProperties.coordinate_output.split(",")] + + @classmethod + def get_cursor_location(cls): + props = bpy.context.scene.BIMGeoreferenceProperties + scale = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) + return [o / scale for o in bpy.context.scene.cursor.location] + + @classmethod + def set_cursor_location(cls, coordinates): + scale = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) + bpy.context.scene.cursor.location = [co * scale for co in coordinates] + + @classmethod + def set_ifc_true_north(cls): + y_angle = -bpy.context.scene.sun_pos_properties.north_offset + radians(90) + bpy.context.scene.BIMGeoreferenceProperties.true_north_abscissa = str(cos(y_angle)) + bpy.context.scene.BIMGeoreferenceProperties.true_north_ordinate = str(sin(y_angle)) + + @classmethod + def set_blender_true_north(cls): + bpy.context.scene.sun_pos_properties.north_offset = -radians( + ifcopenshell.util.geolocation.yaxis2angle( + float(bpy.context.scene.BIMGeoreferenceProperties.true_north_abscissa), + float(bpy.context.scene.BIMGeoreferenceProperties.true_north_ordinate), + ) + ) + + @classmethod + def get_map_conversion(cls): + if tool.Ifc.get_schema() == "IFC2X3": + return + for context in tool.Ifc.get().by_type("IfcGeometricRepresentationContext", include_subtypes=False): + if context.HasCoordinateOperation: + return context.HasCoordinateOperation[0] + + @classmethod + def xyz2enh(cls, coordinates, map_conversion): + props = bpy.context.scene.BIMGeoreferenceProperties + if props.has_blender_offset: + coordinates = ifcopenshell.util.geolocation.xyz2enh( + coordinates[0], + coordinates[1], + coordinates[2], + float(props.blender_eastings), + float(props.blender_northings), + float(props.blender_orthogonal_height), + float(props.blender_x_axis_abscissa), + float(props.blender_x_axis_ordinate), + 1.0, + ) + # TODO: what if the project CRS units and the project units are different? + if map_conversion: + coordinates = ifcopenshell.util.geolocation.xyz2enh( + coordinates[0], + coordinates[1], + coordinates[2], + map_conversion.Eastings, + map_conversion.Northings, + map_conversion.OrthogonalHeight, + map_conversion.XAxisAbscissa or 1.0, + map_conversion.XAxisOrdinate or 0.0, + map_conversion.Scale or 1.0, + ) + return coordinates + + @classmethod + def enh2xyz(cls, coordinates, map_conversion): + props = bpy.context.scene.BIMGeoreferenceProperties + if map_conversion: + coordinates = ifcopenshell.util.geolocation.enh2xyz( + coordinates[0], + coordinates[1], + coordinates[2], + map_conversion.Eastings, + map_conversion.Northings, + map_conversion.OrthogonalHeight, + map_conversion.XAxisAbscissa or 1.0, + map_conversion.XAxisOrdinate or 0.0, + map_conversion.Scale or 1.0, + ) + if props.has_blender_offset: + coordinates = ifcopenshell.util.geolocation.enh2xyz( + coordinates[0], + coordinates[1], + coordinates[2], + float(props.blender_eastings), + float(props.blender_northings), + float(props.blender_orthogonal_height), + float(props.blender_x_axis_abscissa), + float(props.blender_x_axis_ordinate), + 1.0, + ) + return coordinates + + @classmethod + def set_ifc_grid_north(cls): + x_angle = bpy.context.scene.sun_pos_properties.north_offset + props = bpy.context.scene.BIMGeoreferenceProperties + props.map_conversion.get("XAxisAbscissa").string_value = str(cos(x_angle)) + props.map_conversion.get("XAxisOrdinate").string_value = str(sin(x_angle)) + + @classmethod + def set_blender_grid_north(cls): + props = bpy.context.scene.BIMGeoreferenceProperties + angle = ifcopenshell.util.geolocation.xaxis2angle( + float(props.map_conversion.get("XAxisAbscissa").string_value), + float(props.map_conversion.get("XAxisOrdinate").string_value), + ) + bpy.context.scene.sun_pos_properties.north_offset = -radians(angle) diff --git a/src/blenderbim/blenderbim/tool/ifc.py b/src/blenderbim/blenderbim/tool/ifc.py index d487aafbcb..efc7e09e35 100644 --- a/src/blenderbim/blenderbim/tool/ifc.py +++ b/src/blenderbim/blenderbim/tool/ifc.py @@ -16,6 +16,7 @@ # You should have received a copy of the GNU General Public License # along with BlenderBIM Add-on. If not, see . +import os import bpy import numpy as np import ifcopenshell.api @@ -91,6 +92,10 @@ class Ifc(blenderbim.core.tool.Ifc): def delete(cls, element): IfcStore.delete_element(element) + @classmethod + def resolve_uri(cls, uri): + return uri if not uri or os.path.isabs(uri) else os.path.join(os.path.dirname(cls.get_path()), uri) + @classmethod def unlink(cls, element=None, obj=None): IfcStore.unlink_element(element, obj) diff --git a/src/blenderbim/blenderbim/tool/material.py b/src/blenderbim/blenderbim/tool/material.py index 9ac4345587..0b3832ca24 100644 --- a/src/blenderbim/blenderbim/tool/material.py +++ b/src/blenderbim/blenderbim/tool/material.py @@ -46,7 +46,7 @@ class Material(blenderbim.core.tool.Material): @classmethod def get_elements_by_material(cls, material): - return set(ifcopenshell.util.element.get_elements_by_material(tool.Ifc.get(), material)) + return ifcopenshell.util.element.get_elements_by_material(tool.Ifc.get(), material) @classmethod def get_name(cls, obj): @@ -55,17 +55,33 @@ class Material(blenderbim.core.tool.Material): @classmethod def import_material_definitions(cls, material_type): props = bpy.context.scene.BIMMaterialProperties + expanded_categories = {m.name for m in props.materials if m.is_expanded} props.materials.clear() - for material in tool.Ifc.get().by_type(material_type): + get_name = lambda x: x.Name or "Unnamed" + if material_type == "IfcMaterialLayerSet": + get_name = lambda x: x.LayerSetName or "Unnamed" + elif material_type == "IfcMaterialList": + get_name = lambda x: "Unnamed" + materials = sorted(tool.Ifc.get().by_type(material_type), key=get_name) + categories = {} + if material_type == "IfcMaterial": + [categories.setdefault(m.Category, []).append(m) for m in materials] + for category, mats in categories.items(): + cat = props.materials.add() + cat.name = category or "" + cat.is_category = True + cat.is_expanded = cat.name in expanded_categories + for material in mats if cat.is_expanded else []: + new = props.materials.add() + new.ifc_definition_id = material.id() + new.name = get_name(material) + new.total_elements = len(ifcopenshell.util.element.get_elements_by_material(tool.Ifc.get(), material)) + return + for material in materials: new = props.materials.add() new.ifc_definition_id = material.id() - if material.is_a("IfcMaterialLayerSet"): - new.name = material.LayerSetName or "Unnamed" - elif material.is_a("IfcMaterialList"): - new.name = "Unnamed" - else: - new.name = material.Name or "Unnamed" - new.total_elements = len(set(ifcopenshell.util.element.get_elements_by_material(tool.Ifc.get(), material))) + new.name = get_name(material) + new.total_elements = len(ifcopenshell.util.element.get_elements_by_material(tool.Ifc.get(), material)) @classmethod def is_editing_materials(cls): diff --git a/src/blenderbim/blenderbim/tool/project.py b/src/blenderbim/blenderbim/tool/project.py index 0670af4d6c..850c7aab24 100644 --- a/src/blenderbim/blenderbim/tool/project.py +++ b/src/blenderbim/blenderbim/tool/project.py @@ -102,7 +102,7 @@ class Project(blenderbim.core.tool.Project): while queue: layer = queue.pop() - if layer.name == collection.name: + if layer.collection == collection: layer_collection = layer break queue.extend(list(layer.children)) diff --git a/src/blenderbim/blenderbim/tool/root.py b/src/blenderbim/blenderbim/tool/root.py index 3225907780..cf1fbecb20 100644 --- a/src/blenderbim/blenderbim/tool/root.py +++ b/src/blenderbim/blenderbim/tool/root.py @@ -58,6 +58,9 @@ class Root(blenderbim.core.tool.Root): def get_object_representation(cls, obj): if obj.data and obj.data.BIMMeshProperties.ifc_definition_id: return tool.Ifc.get().by_id(obj.data.BIMMeshProperties.ifc_definition_id) + element = tool.Ifc.get_entity(obj) + if not obj.data and getattr(element, "ObjectType", None) == "TEXT": + return element.Representation.Representations[0] @classmethod def get_representation_context(cls, representation): diff --git a/src/blenderbim/blenderbim/tool/style.py b/src/blenderbim/blenderbim/tool/style.py index caa87ff36c..a5031d5c60 100644 --- a/src/blenderbim/blenderbim/tool/style.py +++ b/src/blenderbim/blenderbim/tool/style.py @@ -56,6 +56,10 @@ class Style(blenderbim.core.tool.Style): def get_context(cls, obj): return ifcopenshell.util.representation.get_context(tool.Ifc.get(), "Model", "Body", "MODEL_VIEW") + @classmethod + def get_elements_by_style(cls, style): + return ifcopenshell.util.element.get_elements_by_style(tool.Ifc.get(), style) + @classmethod def get_name(cls, obj): return obj.name @@ -183,10 +187,12 @@ class Style(blenderbim.core.tool.Style): def import_presentation_styles(cls, style_type): props = bpy.context.scene.BIMStylesProperties props.styles.clear() - for style in tool.Ifc.get().by_type(style_type): + styles = sorted(tool.Ifc.get().by_type(style_type), key=lambda x: x.Name or "Unnamed") + for style in styles: new = props.styles.add() new.ifc_definition_id = style.id() new.name = style.Name or "Unnamed" + new.total_elements = len(ifcopenshell.util.element.get_elements_by_style(tool.Ifc.get(), style)) @classmethod def import_surface_attributes(cls, style, obj): @@ -196,3 +202,10 @@ class Style(blenderbim.core.tool.Style): @classmethod def is_editing_styles(cls): return bpy.context.scene.BIMStylesProperties.is_editing + + @classmethod + def select_elements(cls, elements): + for element in elements: + obj = tool.Ifc.get_object(element) + if obj: + obj.select_set(True) diff --git a/src/blenderbim/blenderbim/tool/system.py b/src/blenderbim/blenderbim/tool/system.py index b2109330a1..74ec903033 100644 --- a/src/blenderbim/blenderbim/tool/system.py +++ b/src/blenderbim/blenderbim/tool/system.py @@ -81,9 +81,10 @@ class System(blenderbim.core.tool.System): new.ifc_class = system.is_a() @classmethod - def load_ports(cls, ports): + def load_ports(cls, element, ports): if not ports: return + obj = tool.Ifc.get_object(element) ifc_import_settings = import_ifc.IfcImportSettings.factory() ifc_importer = import_ifc.IfcImporter(ifc_import_settings) ifc_importer.file = tool.Ifc.get() @@ -93,9 +94,16 @@ class System(blenderbim.core.tool.System): for port in ports or []: if tool.Ifc.get_object(port): continue - ifc_importer.create_product(port) + port_obj = ifc_importer.create_product(port) + if obj: + port_obj.parent = obj + port_obj.matrix_parent_inverse = obj.matrix_world.inverted() ifc_importer.place_objects_in_collections() + @classmethod + def run_geometry_edit_object_placement(cls, obj=None): + return blenderbim.core.geometry.edit_object_placement(tool.Ifc, tool.Geometry, tool.Surveyor, obj=obj) + @classmethod def run_root_assign_class( cls, diff --git a/src/blenderbim/blenderbim/tool/unit.py b/src/blenderbim/blenderbim/tool/unit.py index e377592028..ebd9f1c152 100644 --- a/src/blenderbim/blenderbim/tool/unit.py +++ b/src/blenderbim/blenderbim/tool/unit.py @@ -87,10 +87,6 @@ class Unit(blenderbim.core.tool.Unit): def get_si_name_from_unit_type(cls, unit_type): return ifcopenshell.util.unit.si_type_names.get(unit_type, None) - @classmethod - def get_unit_class(cls, unit): - return unit.is_a() - @classmethod def import_unit_attributes(cls, unit): def callback(name, prop, data): @@ -152,6 +148,10 @@ class Unit(blenderbim.core.tool.Unit): def is_scene_unit_metric(cls): return bpy.context.scene.unit_settings.system in ["METRIC", "NONE"] + @classmethod + def is_unit_class(cls, unit, ifc_class): + return unit.is_a(ifc_class) + @classmethod def set_active_unit(cls, unit): bpy.context.scene.BIMUnitProperties.active_unit_id = unit.id() diff --git a/src/blenderbim/docs/_static/custom.css b/src/blenderbim/docs/_static/custom.css new file mode 100644 index 0000000000..4ecfae2065 --- /dev/null +++ b/src/blenderbim/docs/_static/custom.css @@ -0,0 +1,17 @@ +.blockbutton { + border: 1px solid var(--color-admonition-title--seealso); + background-color: var(--color-admonition-title-background--seealso); + padding: 5px; + text-align: center; + border-radius: 5px; + max-width: 500px; + margin-left: auto; + margin-right: auto; +} +section img { + display: block; + margin-left: auto; + margin-right: auto; + box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px; + border-radius: 5px; +} diff --git a/src/blenderbim/docs/blenderbim.rst b/src/blenderbim/docs/blenderbim.rst deleted file mode 100644 index 3beb554aca..0000000000 --- a/src/blenderbim/docs/blenderbim.rst +++ /dev/null @@ -1,27 +0,0 @@ -BlenderBIM -========== - -BlenderBIM is an add-on to Blender that turns Blender into a powerful BIM -authoring program, supporting IFC import, export, and data manipulation. - -This documentation is free software! You are free to contribute and help write -this document. - -.. toctree:: - :maxdepth: 1 - :caption: Contents: - - blenderbim/installation - blenderbim/developer_guide - blenderbim/undo_system - blenderbim/georeferencing - blenderbim/running_tests - blenderbim/scene - - -Indices and tables ------------------- - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/src/blenderbim/docs/blenderbim/georeferencing.rst b/src/blenderbim/docs/blenderbim/georeferencing.rst deleted file mode 100644 index 35843c2c9e..0000000000 --- a/src/blenderbim/docs/blenderbim/georeferencing.rst +++ /dev/null @@ -1,72 +0,0 @@ -Georeferencing -============== - -In the AEC industry, works in the built environment are split between vertical -construction (such as buildings and sites), and horizontal construction (such as -transit, transmission, and subterranean networks). Blender and the BlenderBIM -Add-on is only suitable for vertical construction. - -IFC4 onwards supports georeferencing. The BlenderBIM Add-on has full support for -IFC georeferencing. Here are the potential scenarios you will encounter in the -wild for vertical construction. - -1. Correctly georeferenced IFC4 with a map conversion transformation -2. Correctly georeferenced IFC4 without a map conversion transformation -3. Non-georeferenced georeferenced IFC4 -4. Non-georeferenced IFC2X3 - -The first scenario is desired for most disciplines, such as architects and all -engineers (except for civil). - -For scenarios 2, 3, and 4, the BlenderBIM Add-on will automatically attempt to -offset coordinates to preserve the precision of the model. The first coordinate -greater than 1km will be detected and used as an offset coordinate. It is -possible to specify a custom offset coordinate. - -Non-georeferenced workarounds ------------------------------ - -The unfortunate reality is that IFC2X3 does not support georeferencing, and most -vendors have poor and inconsistent support for georeferencing, even in IFC4. -Some users may be under the impression that their file is correctly -georeferenced, but this is rarely the case. This creates problems. You can see -whether your file is correctly georeferenced in the ``IFC Georeferencing`` -scene panel. If you see "Not Georeferenced", your file is not correctly -georeferenced. If your file is georeferenced, it is no guarantee that the -georeferencing data is actually correct, but how to determine this is out of -scope of this article. - -As an invalid workaround for correct georeferencing, many other BIM vendors -simply offset their object coordinates from local engineering to map coordinates -without properly storing a projection system and optionally a map -transformation. There are two common invalid workarounds that are used. - -The first invalid workaround is to shift the origin point of objects in the -model. We call this the ``OBJECT_PLACEMENT`` workaround. The second invalid -workaround is to shift the coordinates of geometry within the objects -themselves, and typically leave the object origin untouched (such as back at (0, -0, 0)). We call this the ``CARTESIAN_POINT`` workaround. Sometimes, BIM -applications combine both of these invalid workarounds. To see which workaround -was used on an object, check the "Blender Offset" property in the ``Transform`` -object panel. - -Coordinates and precision limits --------------------------------- - -Blender, and subsequently the BlenderBIM Add-on, is not designed for map -coordinate systems. Blender internally uses single precision floating point -calculations. A full description of the precision implications are described in -the `Blender working limits documentation -`__. - -From a software perspective, lengths greater than 5,000 meters start to -accumulate precision errors that affect the nearest millimeter. Therefore, from -a software perspective, it is unwise to embark on a project with coordinates -ranging greater than +/- 5km. - -However, if working in local engineering coordinates, a single transformation is -required to convert from local engineering coordinates to map coordinates. This -transformation includes a scale factor. The scale factor is only assumed to be -constant for small sites (defined approximately as less than 1km square). -This practical limit of georeferenced vertical construction is smaller than the -software limit, so this is the actual limiting factor. diff --git a/src/blenderbim/docs/conf.py b/src/blenderbim/docs/conf.py index 62b5dea99e..e3c6526151 100644 --- a/src/blenderbim/docs/conf.py +++ b/src/blenderbim/docs/conf.py @@ -35,12 +35,12 @@ # -- Project information ----------------------------------------------------- -project = "IfcOpenShell" -copyright = "2020, IfcOpenShell Contributors" +project = "BlenderBIM Add-on" +copyright = "2020-2022 IfcOpenShell Contributors" author = "IfcOpenShell Contributors" # The full version, including alpha/beta/rc tags -release = "0.0.1" +release = "0.0.220504" # -- General configuration --------------------------------------------------- @@ -64,9 +64,11 @@ exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = "nature" +html_theme = "furo" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["_static"] + +html_css_files = ["custom.css"] diff --git a/src/blenderbim/docs/blenderbim/architecture.png b/src/blenderbim/docs/devs/architecture.png similarity index 100% rename from src/blenderbim/docs/blenderbim/architecture.png rename to src/blenderbim/docs/devs/architecture.png diff --git a/src/blenderbim/docs/blenderbim/demo-module.png b/src/blenderbim/docs/devs/demo-module.png similarity index 100% rename from src/blenderbim/docs/blenderbim/demo-module.png rename to src/blenderbim/docs/devs/demo-module.png diff --git a/src/blenderbim/docs/blenderbim/diagrams.svg b/src/blenderbim/docs/devs/diagrams.svg similarity index 100% rename from src/blenderbim/docs/blenderbim/diagrams.svg rename to src/blenderbim/docs/devs/diagrams.svg diff --git a/src/blenderbim/docs/devs/documentation-style.png b/src/blenderbim/docs/devs/documentation-style.png new file mode 100644 index 0000000000..75f2596c62 Binary files /dev/null and b/src/blenderbim/docs/devs/documentation-style.png differ diff --git a/src/blenderbim/docs/blenderbim/developer_guide.rst b/src/blenderbim/docs/devs/hello_world.rst similarity index 99% rename from src/blenderbim/docs/blenderbim/developer_guide.rst rename to src/blenderbim/docs/devs/hello_world.rst index 89e20e53fd..8e88985edc 100644 --- a/src/blenderbim/docs/blenderbim/developer_guide.rst +++ b/src/blenderbim/docs/devs/hello_world.rst @@ -1,5 +1,5 @@ -Developer guide -=============== +Hello, world! +============= The BlenderBIM Add-on takes a unique approach to authoring BIM data. Traditional BIM authoring apps create features that are tailored for a single discipline's diff --git a/src/blenderbim/docs/blenderbim/ifcopenshell-architecture.png b/src/blenderbim/docs/devs/ifcopenshell-architecture.png similarity index 100% rename from src/blenderbim/docs/blenderbim/ifcopenshell-architecture.png rename to src/blenderbim/docs/devs/ifcopenshell-architecture.png diff --git a/src/blenderbim/docs/blenderbim/installation.rst b/src/blenderbim/docs/devs/installation.rst similarity index 71% rename from src/blenderbim/docs/blenderbim/installation.rst rename to src/blenderbim/docs/devs/installation.rst index dd13288af0..1f0979fb4c 100644 --- a/src/blenderbim/docs/blenderbim/installation.rst +++ b/src/blenderbim/docs/devs/installation.rst @@ -1,28 +1,12 @@ -.. _blenderbim/installation: - Installation ============ There are different methods of installation, depending on your situation. -1. **Stable installation** is recommended for regular users. -2. **Unstable installation** is recommended for power users helping with testing. -3. **Building from source** is recommended for distributing a build from source. -4. **Live development environment** is recommended for developers who are actively coding. -5. **Distro installation** is recommended for those who use a Linux package manager. - -Stable installation -------------------- - -The BlenderBIM Add-on is packaged like a regular Blender add-on, so installation -is the same as any other Blender add-on. The full instructions for end-user -installation is available at the `Get BlenderBIM -`__ website. The latest release is -typically updated every few weeks. - -Like all Blender add-ons, they can be installed using ``Edit > Preferences > -Addons > Install > Choose Downloaded ZIP > Enable Add-on Checkbox``. You can -enable add-ons permanently by using ``Save User Settings`` from the Addons menu. +1. **Unstable installation** is recommended for power users helping with testing. +2. **Building from source** is recommended for distributing a build from source. +3. **Live development environment** is recommended for developers who are actively coding. +4. **Distro installation** is recommended for those who use a Linux package manager. Unstable installation --------------------- @@ -31,7 +15,7 @@ Unstable installation that they are typically updated every day. Simply download a daily build from the `Github releases page `__, then follow the same -instructions as a packaged installation. +instructions as the **Stable installation**. You will need to choose which build to download. @@ -137,6 +121,13 @@ Blender for the changes to take effect. In ``Edit > Preferences > Add-ons`` you will see that the version number of the BlenderBIM Add-on has changed to ``0.0.999999``, which represents an un-versioned BlenderBIM Add-on. +There is a useful Blender Addon that adds a Reboot button in File menù. +In this way, it's possible to directly restart Blender and test the modified source code. +The add on is available `here `__ +(check also the related forum discussion `here `__) +There is also a VS Code called `Blender Development `__ that has a similar functionality. + + Distro installation ------------------- @@ -219,65 +210,3 @@ Required static assets are: bim/data/gantt/jsgantt.js (from jsgantt-improved) bim/data/gantt/jsgantt.css (from jsgantt-improved) - -Where is the BlenderBIM Add-on installed? ------------------------------------------ - -If you downloaded Blender as a ``.zip`` file without running an installer, you -will find the BlenderBIM Add-on installed in the following directory, where -``X.XX`` is the Blender version: -:: - - /path/to/blender/X.XX/scripts/addons/ - -Otherwise, if you installed Blender using an installation package, the add-ons -folder depends on which operating system you use. On Linux: -:: - - ~/.config/blender/X.XX/scripts/addons/ - -On Mac: -:: - - /Users/{YOUR_USER}/Library/Application Support/Blender/X.XX/ - -On Windows: -:: - - C:\Users\{YOUR_USER}\AppData\Roaming\Blender Foundation\X.XX\scripts\addons - -Upon installation, the BlenderBIM Add-on is stored in the ``blenderbim/`` -directory. - -Updating --------- - -First uninstall the current BlenderBIM add-on, then install the latest version. - -Uninstalling ------------- - -Navigate to ``Edit > Preferences > Add-ons``. Due to a limitation in Blender, -you have to first disable the BlenderBIM Add-on in your Blender preferences by -pressing the checkbox next to the add-on, then restart Blender. After -restarting, you can uninstall the BlenderBIM Add-on by pressing the ``Remove`` -button in the Blender preferences window. - -Alternatively, you may uninstall manually by deleting the ``blenderbim/`` -directory in your Blender add-ons directory. - -FAQ ---- - -1. I get an error similar to "ImportError: IfcOpenShell not built for 'linux/64bit/python3.7'" - -Check which BlenderBIM Add-on build you are using. The zip will have either -``py37``, ``py39``, or ``py310`` in the name. See the instructions in the -**Unstable installation** section to check that you have installed the correct -version. - -2. I am on Ubuntu and get an error similar to "ImportError: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.29 not found" - -Our latest package which uses IfcOpenShell v0.7.0 is built using Ubuntu 20 LTS. -If you have an older Ubuntu version, you can either upgrade to 19.10 or above, -or you'll need to compile IfcOpenShell yourself. diff --git a/src/blenderbim/docs/blenderbim/module-architecture.png b/src/blenderbim/docs/devs/module-architecture.png similarity index 100% rename from src/blenderbim/docs/blenderbim/module-architecture.png rename to src/blenderbim/docs/devs/module-architecture.png diff --git a/src/blenderbim/docs/blenderbim/native-openbim.png b/src/blenderbim/docs/devs/native-openbim.png similarity index 100% rename from src/blenderbim/docs/blenderbim/native-openbim.png rename to src/blenderbim/docs/devs/native-openbim.png diff --git a/src/blenderbim/docs/blenderbim/running_tests.rst b/src/blenderbim/docs/devs/running_tests.rst similarity index 87% rename from src/blenderbim/docs/blenderbim/running_tests.rst rename to src/blenderbim/docs/devs/running_tests.rst index 714cb0082a..165ddd1027 100644 --- a/src/blenderbim/docs/blenderbim/running_tests.rst +++ b/src/blenderbim/docs/devs/running_tests.rst @@ -11,7 +11,7 @@ smoke tests. These tests use ``pytest`` as the test framework and runner. All development is expected to use test driven development, and so we expect test coverage to be 100% where it is technically possible to test. -When running tests, a Makefile target is provided for convenience so you can +When running tests, Makefile targets are provided for convenience so you can type in a simple command without knowing the internals. Because the BlenderBIM Add-on depends on IfcOpenShell, it is advised to also run @@ -57,13 +57,14 @@ of all concrete functions. .. code-block:: bash $ cd src/blenderbim/ - $ make test-tool + $ make test-tool # Test everything + $ make test-tool MODULE=foo # Only test a single module BlenderBIM Add-on tests ----------------------- The BIM layer acts as a full integration test. It is not possible to fully test -the UI, as we cannot reliable emit interface signals, nor read the interface as +the UI, as we cannot reliably emit interface signals, nor read the interface as a DOM of sorts. The best we can do is to call Blender operators as a smoke test, and also check simple property and scene changes. It has the same dependencies as the tool tests. @@ -71,4 +72,5 @@ as the tool tests. .. code-block:: bash $ cd src/blenderbim/ - $ make test-bim + $ make test-bim # Test everything + $ make test-bim MODULE=foo # Only test a single module diff --git a/src/blenderbim/docs/blenderbim/undo_system.rst b/src/blenderbim/docs/devs/undo_system.rst similarity index 100% rename from src/blenderbim/docs/blenderbim/undo_system.rst rename to src/blenderbim/docs/devs/undo_system.rst diff --git a/src/blenderbim/docs/blenderbim/ux_guidelines.rst b/src/blenderbim/docs/devs/ux_guidelines.rst similarity index 100% rename from src/blenderbim/docs/blenderbim/ux_guidelines.rst rename to src/blenderbim/docs/devs/ux_guidelines.rst diff --git a/src/blenderbim/docs/devs/writing_docs.rst b/src/blenderbim/docs/devs/writing_docs.rst new file mode 100644 index 0000000000..279111bb3f --- /dev/null +++ b/src/blenderbim/docs/devs/writing_docs.rst @@ -0,0 +1,9 @@ +Writing docs +============ + +The following colours and annotation styles should be used for annotating +images. All stroke widths are 3px with a corner radius of 3px. Horizonal +underlines are 5px with a corner radius of 2px. The dark green is **39b54a** and +the light green is **d9e021**. + +.. image:: documentation-style.png diff --git a/src/blenderbim/docs/ifcopenshell-python.rst b/src/blenderbim/docs/ifcopenshell-python.rst deleted file mode 100644 index 1f661a3488..0000000000 --- a/src/blenderbim/docs/ifcopenshell-python.rst +++ /dev/null @@ -1,19 +0,0 @@ -IfcOpenShell-Python -=================== - -This documentation is free software! You are free to contribute and help write -this document. - -.. toctree:: - :maxdepth: 1 - :caption: Contents: - - ifcopenshell-python/quickstart - ifcopenshell-python/api-documentation - -Indices and tables ------------------- - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/src/blenderbim/docs/ifcopenshell-python/api-documentation.rst b/src/blenderbim/docs/ifcopenshell-python/api-documentation.rst deleted file mode 100644 index 299250fb90..0000000000 --- a/src/blenderbim/docs/ifcopenshell-python/api-documentation.rst +++ /dev/null @@ -1,21 +0,0 @@ -API Documentation -================= - -.. automodule:: ifcopenshell.entity_instance - :members: - -.. automodule:: ifcopenshell.file - :members: - -.. automodule:: ifcopenshell.guid - :members: - - -.. automodule:: ifcopenshell.template - :members: - -.. automodule:: ifcopenshell.validate - :members: - -.. automodule:: ifcopenshell.ids - :members: diff --git a/src/blenderbim/docs/ifcopenshell-python/quickstart.rst b/src/blenderbim/docs/ifcopenshell-python/quickstart.rst deleted file mode 100644 index 56c3ce6e60..0000000000 --- a/src/blenderbim/docs/ifcopenshell-python/quickstart.rst +++ /dev/null @@ -1,5 +0,0 @@ -Quickstart -========== - -For starters, you can read `Using IfcOpenShell to parse IFC files with Python -`_ diff --git a/src/blenderbim/docs/index.rst b/src/blenderbim/docs/index.rst index ff0669b07e..60b741527f 100644 --- a/src/blenderbim/docs/index.rst +++ b/src/blenderbim/docs/index.rst @@ -1,26 +1,32 @@ -IfcOpenShell Documentation -========================== +Let's get started +================= + +The BlenderBIM Add-on lets you analyse, create, and modify OpenBIM with Blender. + +.. note:: + + This documentation is incomplete. Would you like to help write more? `Get in touch! `__ .. toctree:: + :hidden: :maxdepth: 1 - :caption: Contents: + :caption: For users: - ifcopenshell - ifcopenshell-python - ifcconvert - blenderbim - bimtester - ifcdiff - ifcclash - ifccobie - ifcmax - ifcsverchok - bimserver-plugin + users/introduction_to_bim + users/installation + users/exploring_an_ifc_model + users/creating_your_first_ifc + users/georeferencing + users/dealing_with_large_models +.. toctree:: + :hidden: + :maxdepth: 1 + :caption: For developers: -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` + devs/installation + devs/hello_world + devs/running_tests + devs/writing_docs + devs/undo_system + devs/ux_guidelines diff --git a/src/blenderbim/docs/users/attributes.png b/src/blenderbim/docs/users/attributes.png new file mode 100644 index 0000000000..1635813e4b Binary files /dev/null and b/src/blenderbim/docs/users/attributes.png differ diff --git a/src/blenderbim/docs/users/blenderbim-layout.png b/src/blenderbim/docs/users/blenderbim-layout.png new file mode 100644 index 0000000000..3ef73d21aa Binary files /dev/null and b/src/blenderbim/docs/users/blenderbim-layout.png differ diff --git a/src/blenderbim/docs/users/blenderoffset.png b/src/blenderbim/docs/users/blenderoffset.png new file mode 100644 index 0000000000..d307ab8bd6 Binary files /dev/null and b/src/blenderbim/docs/users/blenderoffset.png differ diff --git a/src/blenderbim/docs/users/coordinateconversion.png b/src/blenderbim/docs/users/coordinateconversion.png new file mode 100644 index 0000000000..838859f5c4 Binary files /dev/null and b/src/blenderbim/docs/users/coordinateconversion.png differ diff --git a/src/blenderbim/docs/users/dealing_with_large_models.rst b/src/blenderbim/docs/users/dealing_with_large_models.rst new file mode 100644 index 0000000000..346969d959 --- /dev/null +++ b/src/blenderbim/docs/users/dealing_with_large_models.rst @@ -0,0 +1,188 @@ +Dealing with large models +========================= + +The BlenderBIM Add-on can handle large models, or federated collections of +models where the combined total IFCs may be many gigabytes or object counts may +be in the hundreds of thousands. + +Models may be large in terms of different metrics, such as: + +- Filesizes over 750MB, which may cause memory issues +- Individual object polygon counts over 100k, which may cause unreasonable + loading times +- Objects having excessive or low quality booleans, which may cause + unreasonable loading times +- Number of elements exceeding 50,000 loaded in the scene, which may cause + unreasonable loading times, selection glitches, and viewport lagging + +There are always solutions to all of these, but an understanding of the type of +size limitation you are up against will always help. + +Large filesizes +--------------- + +The first priority is to ensure you do not have a prohibitively large filesize. + +- Use IFC4. It can handle geometry much more efficiently and expect your + filesize to drop significantly. +- When coming from other software, ensure you are exporting solids, not faceted + BReps or tessellations where appropriate. Choosing the wrong export setting + can easily double or triple your filesize and export times. Choose **Design + Transfer View** instead of **Coordination View** or **Reference View**. Look + for export settings that use the keywords like "surface", "solid", "brep", + "tessellation", or "extrusion". +- Improve your model breakdown strategy (see below) +- Identify objects with large polygon counts and improve the modeling (see below) + +Model breakdown strategies +-------------------------- + +A good general strategy is to never have a large model to begin with. Breaking +down models is critical for usability during design and coordination. Where full +models are needed, such as during clash detection, review meetings, or client +handover, many small models may be federated. Model breakdown strategies +include: + +- **By discipline**, you probably already do this, so let's move on +- **By location**, such as by building, floor, zone, mid-rise, high-rise, core + podium, underground, plant rooms, facade orientation, or similar. +- **By object type**, such as by primary structural elements vs accessories + (plates, bolts, etc), furniture vs general arrangement, facade vs interiors, + distribution system elements (equipment, pipes, fittings) vs accessories (pipe + clamps, hangers, etc) or similar. +- **By coordination task**, many people get into the habit of exchanging the + entire building when a task only requires a tiny portion of it. Think of the + workflow of exchanging traditional drawings. A large project would have + thousands of drawings with a few drawings exchanged for a single coordination + task. This strategy can be used with models: exchange hundreds of tiny models + (some maybe even only 1MB!), scoped to the task at hand. Keep exchanges small + and frequent (like code commits, for the geeks reading this). + +Filtered model loading +---------------------- + +You may filter elements and only load a portion of the model. Click on **Enable +Advanced Mode** when loading a model and you will be presented with model +loading options in the **IFC Project** panel. **Filter Modes** include: + +- **Decomposition**, filter by location in the building, such as **Level 1** or + **Building A**. +- **IFC Class**, filter by IFC class, such as **Wall**, **Column**, or **Pipe + Segments** +- **IFC Type**, filter by IFC construction type, such as **Copper pipes** and + **200mm thick concrete slabs** +- **Whitelist** or **Blacklist**, filter by a custom query + +When **Whitelist** or **Blacklist** is chosen, you may type a custom query to +filter by attributes, properties, location, and so on. + +Large polygon counts +-------------------- + +If objects with large polygon counts are blocking you from importing, consider +enabling **Native Meshes** in the **Advanced Mode** when loading projects. + +The **Debug Panel** allows you to **Select High Polygon Meshes** or **Select +Highest Polygon Meshes** to isolate geometrically complex objects by a polygon +number threshold or a percentage. + +After selecting these elements, you can view them in edit mode to see a polygon +count and where the offending polygons are. Often, fixing a single object may +cut out 50MB. + +Excessive or low quality booleans +--------------------------------- + +In some cases, elements may be generated from external software with an +excessive (over 50) number of boolean operations or with high polygon, complex +booleans. + +The **IFC Debug** panel has a **Test All Shapes** feature which generates +geometry for every element one by one and outputs the processing time to the +console. When you see it stuck on an element, make a note of the element ID. You +may then use the **IFC Debug** panel's **Inspector** to determine the nature of +the boolean, or create a **Blacklist Filter Mode** to exclude the element from +import. + +These types of errors are usually problems with external software (i.e. not +intentionally by the end-user) and typically do not affect critical geometry +and can be worked around. + +Fully resolving boolean issues is a complex case by case topic and not covered +here. + +High number of elements +----------------------- + +Click on **Enable Advanced Mode** when loading a model and you will be presented +with model loading options in the **IFC Project** panel. + +You may specify an **Element Range** to process. The **Element Offset** says the +first element to start processing at, and the **Element Limit** says how many +elements should be processed. For example, in a model with 100,000 objects, an +**Element Start** of 30,000 and an **Element Limit** of 20,000 will process the +elements starting at item number 30,000 and ending at item number 50,000. This +allows you to arbitrarily break down large models into submodels. This can be +combined with other filters. + +`Alpha versions of Blender `__ may +be used which will result in a faster load time (~10%). + +.. seealso:: + + Blender is working on resolving some performance bottlenecks related to high + object counts. See `D9892 `__, `D15129 + `__ (available in Blender 3.3 alpha), + and `D14162 `__ + +Coordination only models +------------------------ + +The BlenderBIM Add-on defaults to authoring IFCs. This allows full editing and +inspection of all element properties and relationships. However, sometimes only +geometry and basic attributes such as names are sufficient. Example usecases +include CG visualisation, overall federated model coordination, or pure +geometric checks. + +Click on **Enable Advanced Mode** when loading a model and you will be presented +with model loading options in the **IFC Project** panel. Enable **For +Coordination Only**, which will exclude non geometric elements, openings, and +types from being imported. This leads to slightly faster imports, and a +decreased object count. + +Enabling **For Coordination Only** also allows you to specify a **Merge Mode**. +This combines objects to keep object counts low. Blender is very good at +handling less objects with more complexity, rather than the other way around. +When a **Merge Mode** is activated, import times will increase (~50%) but object +counts will be drastically reduced, which is critical for the federation of +large models. **Merge Modes** include: + +- **IFC Class**, where objects of the same IFC class are merged. This is useful + if you have models where only the class is meaningful for other disciplines, + such as structural models. +- **IFC Type**, where objects of the same construction type are merged. This is + useful where the main identification of interest is the element type, not the + element instance. +- **Material**, where objects of the same material are merged. This is useful if + the model is used for purely visual exploration such as CG visualisation. + +Once loaded, the model may be saved as a ``.blend`` file for subsequent loads. +You can think of the ``.blend`` file as a geometry cache, which is very, very +fast to load. If it no longer necessary to access IFC data, consider pressing +the **Unload Project** icon so that future loads of the ``.blend`` file will be +very fast. + +With these strategies, a federated 1GB IFC model can easily load in 10 seconds +from the saved Blender files. + +Processing models headlessly +---------------------------- + +You can automate model processing using this command (~5% speedup): + +.. code-block:: bash + + $ blender -b -P headless_import.py + +The ``headless_import.py`` script contains instructions on how to configure +model loading settings. diff --git a/src/blenderbim/docs/users/element-class-select.png b/src/blenderbim/docs/users/element-class-select.png new file mode 100644 index 0000000000..4e2304b93f Binary files /dev/null and b/src/blenderbim/docs/users/element-class-select.png differ diff --git a/src/blenderbim/docs/users/element-class.png b/src/blenderbim/docs/users/element-class.png new file mode 100644 index 0000000000..c38e518e2c Binary files /dev/null and b/src/blenderbim/docs/users/element-class.png differ diff --git a/src/blenderbim/docs/users/example-project.png b/src/blenderbim/docs/users/example-project.png new file mode 100644 index 0000000000..e9816f4c55 Binary files /dev/null and b/src/blenderbim/docs/users/example-project.png differ diff --git a/src/blenderbim/docs/users/exploring_an_ifc_model.rst b/src/blenderbim/docs/users/exploring_an_ifc_model.rst new file mode 100644 index 0000000000..7cb0346235 --- /dev/null +++ b/src/blenderbim/docs/users/exploring_an_ifc_model.rst @@ -0,0 +1,449 @@ +Exploring an IFC model +====================== + +We're going to load an existing IFC model and explore some common properties +most users will be interested in. + +If you don't have an IFC model available, here's a small one for your +convenience provided by the Institute for Automation and Applied Informatics +(IAI) / Karlsruhe Institute of Technology. It's in German, so you may need to +use some creativity when reading the data :) + +.. container:: blockbutton + + `Download sample IFC `__ + +.. seealso:: + + You can find more sample models online in the `OSArch Open Data Directory + `__ + +Loading a model +--------------- + +Blender's interface is divided into panels. The main **Viewport** panel shows 3D +geometry. The top right **Outliner** panel shows a tree of geometric objects. +The bottom right **Properties** panel shows data and relationships. + +.. image:: blenderbim-layout.png + +The **Properties** panel has tabs to switch between different types of +properties. Make sure you have the **Scene Properties** tab activated, and find +the **IFC Project** subpanel. Click on **Load Project** and browse to your +``.ifc`` file. + +.. image:: properties-loadproject.png + +After loading, you will see the model appear in the **Viewport** panel. + +.. image:: example-project.png + +Let's take a look at the **IFC Project** subpanel again. It shows the loaded +filename, as well as the **IFC Schema**. There are two commonly seen **IFC +Schema** versions: IFC2X3 and IFC4. Checking the **IFC Schema** is important +because it has an impact on what BIM data may be stored. IFC4 is the newer +version and it is recommended to use IFC4 models as it has significantly more +BIM capabilities compared to IFC2X3. + +.. tip:: + + Blender's interface is highly customisable. Panels, panel types, colours, + sizes, and tabs may be edited to suit your workflow. If you want a `Hot Pink + theme `__ look no further. + +Navigating a model in 3D +------------------------ + +To navigate, can use the **Navigate Gizmo** on the top right corner of the +**Viewport** panel. Click and drag on the coloured axes to **Orbit**, click and +drag on the magnifying glass to **Zoom**, and click and drag on the hand icon to +**Pan**. You can also click on the grid icon to switch between perspective and +orthographic view. + +To switch to a top view, front view, or side view, click the relevant axis on +the **Navigate Gizmo**. + +.. image:: navigate-gizmo.png + +You can also use your mouse to navigate. Hover your mouse over the **Viewport** +panel and click and drag the Middle Mouse Button (``MMB``) to **Orbit**. Scroll +the mousewheel to **Zoom**, and use ``Shift-MMB`` to **Pan**. + +If you have a numpad, you can use the numpad keys to quickly switch to top, +front, or side view. Use ``7`` for top view, ``1`` for front view, and ``3`` for +side view. + +.. warning:: + + Blender's hotkeys are context sensitive. This means that a hotkey has a + different meaning depending on the panel your mouse cursor is hovering over. + If you press ``7`` to go to top view, make sure your mouse cursor is over the + **Viewport** panel. Be very careful where your mouse is, or you might press a + hotkey and it will have unintended consequences! + +If you click on an object, such as a wall in the **Viewport** panel, you can +zoom to the selected object by clicking on ``View > Frame Selected``. The hotkey +is the ``.`` button on the numpad. After zooming into an element, when you +**Orbit** the 3D view will rotate around the center of that element. + +You can also zoom to all objects in the project by clicking on ``View > Frame +All``. + +.. image:: frame-selected.png + +Another good way to navigate is by flying or walking around similar to a video +game. Choose ``View > Navigation > Walk Navigation``, or use the ``Shift-``` +hotkey (the backtick key is usually to the left of the number 1 on the +keyboard). With **Walk Navigation** enabled, use the ``WASD`` keys and the mouse +to move around like a video game. You can use the ``Shift`` key to switch +between moving fast and slow. If you scroll with the mousewheel, it will adjust +the speed that you move at. + +Sometimes, you want to look through objects. You can toggle **X-Ray Mode** by +pressing the button on the top right of the **Viewport** panel. The hotkey is +``Alt-Z``. + +.. image:: x-ray-mode.png + +.. tip:: + + Blender has lots of hotkeys to do things quickly. These can take time to + learn but it is worth it as you will be much faster. These hotkeys can be + customised in Blender's preferences. + + +Overview of all objects +----------------------- + +The **Outliner** panel on the top right shows a hierarchy of all the currently +loaded physical **Objects** in your IFC project. These **Objects** correlate to +what you can see in the **Viewport** panel. + +Every **Object** in the **Outliner** represents an IFC **Element**. These +**Objects** have a name with the pattern ``Class/Name``. The class prefix +represents the type of object, and the name is the name of the object. Examples +of classes you will see are ``IfcBuilding``, or ``IfcWall``. This naming +convention makes it easy to quickly spot types of objects. + +.. image:: outliner.png + +Objects are organised in a hierarchy. By default, this hierarchy represents a +breakdown of spaces, from large spaces such as a site and a building, down to +smaller spaces like building storeys and room spaces. The hierarchy will always +begin with an **IfcProject** object. You can click on the triangle to toggle the +hierarchy. + +.. tip:: + + In large projects with deep hierarchies, you can ``Shift-LMB`` click the + triangle to recursively toggle the hierarchy. You can also click and drag the + ``MMB`` to pan left and right. + +When there are lots of objects, you can type a name in the filter box to quickly +identify objects by name or type. + +.. image:: outliner-filter.png + +Clicking on an object in the **Outliner** panel also selects the corresponding +object in the **Viewport** panel. A good strategy to find objects is to then use +``View > Frame Selected`` to zoom to it in the **Viewport**. + +The **Outliner** panel is also great for isolating portions of your project. You +can include and exclude portions by clicking on the **Tick Icon** next to +collections of objects in the hierarchy. + +Let's isolate a single building storey. Start by disabling the **Tick Icon** +next to the **IfcProject** collection. This will hide everything in the project. +Then navigate through the hierarchy and enable the **Tick Icon** next to an +**IfcBuildingStory**. + +.. image:: outliner-isolate.png + +Viewing element classes +----------------------- + +Usually the first thing you'll want to check is the **Class** of element that an +object represents. The IFC **Class** is an international classification system +provided by IFC. Example IFC **Classes** are Wall, Slab, and Door. Every IFC +element must have a **Class**. + +**Classes** aren't just for categorising elements. They also indicate what types of +properties and relationships it is allowed to have. For example, a Wall +**Class** can have a fire rating property, but a Grid **Class** cannot. + +.. note:: + + There are hundreds of **Classes** to represent all aspects of our built + environment, including non geometric classes like Task, Occupant, and CostItem. + However, we'll focus only on simple physical **Classes** in this guide. Don't + worry about memorising all the available **Classes**, you'll get a feel for them + as you explore more. + +To view an object's class, click on an object in the **Viewport** or **Outliner** +panel, then switch to the **Object Properties** tab in the **Properties** panel. +You can see the **Class** name in the **IFC Class** subpanel. + +.. image:: element-class.png + +In this case, the **Class** of our roof is an **IfcSlab**. You'll notice this is +the same **Class** name used as a prefix for the object name in the **Outliner** +panel. You can also see the name of the actively selected object in the top left +of the **Viewport** panel. + +.. warning:: + + Sometimes, an IFC model will use the wrong **Class**. For example, a chair might + be assigned as the Wall **Class** instead the Furniture **Class**. There is a + special class known as **IfcBuildingElementProxy**, used when the user is + unable to find a more semantic **Class**. If you see many + **IfcBuildingElementProxy** **Classes**, it is likely a symptom of a low + quality IFC model. If this is the case, scold the project manager and ask + them to do a better job. + +After **IfcSlab** it also says **ROOF**. This is known as the +**Predefined Type** of the element. You can think of it as a further level of +classification. In this case, it distinguishes our object as a roof slab, +compared to other types of slabs. The **Predefined Type** is optional so you may +not see it all the time. + +.. seealso:: + + You can use the `Search IFC Class + `__ tool to learn the correct + classes and predefined types you should see. + +Press the **Select Icon** to select all objects that are of the same +**IfcSlab** **Class**. Then, you can isolate these elements by going to ``Object +> Show/Hide > Hide Unselected`` (hotkey ``Shift-H``). To show all elements again, you can use +``Object > Show/Hide > Show Hidden Objects`` (hotkey ``Alt-H``). If you want to +hide elements instead, you can use ``Object > Show/Hidden > Hide Selected`` +(hotkey ``H``). + +.. image:: element-class-select.png + +.. note:: + + Remember that Blender's hotkeys are context sensitive. Make sure your mouse + is hovering over the **Viewport** panel when you press a hotkey or no cake + for you. + +You can also see statistics about the number of selected objects. If you right +click on the bottom right status bar and enable **Scene Statistics** you will +see information like **Objects 4/4**, which means that 4 objects are selected +out of 4 available objects. This is a great way of counting objects like toilets. + +.. image:: scene-statistics.png + +Viewing attributes and properties +--------------------------------- + +You can view the **Attributes**, **Properties**, and **Quantities** of the +selected object in the **Object Properties** tab. + +Let's focus on **Attributes** first. Scroll down to the **IFC Attributes** +subpanel. **Attributes** are a limited set of fundamental data (usually less +than 10) associated with all IFC elements. These are fixed by the IFC standard. + +.. image:: attributes.png + +Here are some common attributes and what they mean: + +- **GlobalId**: a unique ID for the element useful for computer geeks +- **Name**: a short name, code, number, or label to identify the object for a + human. If you had to annotate the object on a drawing or a schedule, the + **Name** is what you should see. For example, a pump **Name** might be ``P-10-A``. +- **Description**: typically the longer form of the name, written to be + descriptive and readable for humans. For example a pump **Description** might + be ``Water Suction Pump``. +- **Tag**: this is an ID that may link it back to another BIM application. For + example if the IFC model was produced using Revit or ArchiCAD, it might hold + the Revit or ArchiCAD element ID. +- **Predefined Type**: A further level of classification to be read + in conjunction with the IFC class. + +.. warning:: + + Some IFC models have poor quality data. For example, if the **Name** + of a Window doesn't match the window code (e.g. ``W01``) you see on a + drawing, the project manager has clearly not put enough effort. Shame on + them. + +**Properties** are other data associated with the object. Every project will +have different **Properties** depending on what information they want to store. +Each **Property** has a name and a value, and are grouped into **Property +Sets**. Each **Property Set** also has a name. + +You can find **Properties** in the **IFC Property Sets** subpanel. + +.. image:: psets.png + +Some very common **Properties** are standardised by international BIM standards. +For example, the load bearing **Property** of a beam should always be called +``LoadBearing``. If a **Property Set** is part of the international standard, it +has a prefix of ``Pset_``, like ``Pset_BeamCommon``. + +If you see a **Property Set** without the ``Pset_`` prefix, it is a custom +property defined by the author of the IFC model. + +.. tip:: + + It's important to distinguish between **Properties** that are + part of the standard compared to custom ones. When **Properties** are + standardised, it makes it easy to manage data. So if you need to isolate all + ``LoadBearing`` elements, you now know exactly where to look. + +**Quantities** are very similar to properties. They also have a name and a +value, and are grouped into **Quantity Sets**. Similarly, there are also common +quantities defined as part of the international standard, denoted by the prefix +``Qto_``. This prefix is short for "Quantity Take-Off". + +You can find **Quantities** in the **IFC Quantity Sets** subpanel. + +.. image:: qtos.png + +Finding the location of objects +------------------------------- + +Every object in the built environment has a location in the world. For example, +a chair will be located in a space, and a wall is typically located in a +building storey. You've already seen this hierarchy of spaces in the +**Outliner** panel, where an IFC project is broken down into site, building, +storeys, and spaces. + +Sometimes, objects may have multiple relevant locations, such +as a multi-storey column which can be related to multiple building storeys. +Even in these cases, IFC enforces one location to be its primary +location, known as its **Spatial Container**. + +If you click on any object, you can see its location in the **IFC Spatial +Container** subpanel in the **Object Properties** tab. + +Press the **Select Icon** to select all objects that are in the same location. + +.. image:: spatial-container.png + +Checking construction types +--------------------------- + +Almost everything in the built environment will have a **Construction Type**. +For example, an architect will specify a door type for every door in a project. + +You can see a list of **Construction Types** in the **Outliner** panel in the +**Types** collection. For example, if the architect has a wall types schedule +with the wall type names of ``WT01``, ``WT02``, and ``WT03``, you should see +three **IfcWallType** objects with those same names in the **Outliner**. + +You can click on these types to see more details about them in the **Object +Properties** panel. + +.. image:: outliner-types.png + +When selecting an object, you can also see its construction type in **Object +Properties** under the **IFC Construction Type** subpanel. You can press the +**Select Icon** to select all objects that are of the same **Construction +Type**. You can use the hide and isolate hotkeys to quickly view them in the +model. + +.. image:: properties-types.png + +A **Construction Type** defines properties that are common to all occurrences of +that type. For example, if a wall type specifies a fire rating property, then +all walls of that wall type will inherit that fire rating too. + +A **Construction Type** may also specify geometry or geometric rules that are +common to all occurrences of the type. For example, a pump type will define the +geometry of the pump, so all occurrences of that pump will have the same +geometry. + +You can visually inspect types in isolation to the rest of the model. Types are +hidden by default, so first enable the visibility of the **Types** collection in +the **Outliner** by pressing the **Visibility Icon**. Then, select a type, and +click on ``View > Local View > Toggle Local View`` (hotkey ``/``) in the +**Viewport**. Toggle the view to see the entire model again. + +.. image:: type-local-view.png + +.. note:: + + Only **Construction Types** where the geometry is exactly the same for all + occurrences will specify geometry. When the geometry varies based on the + occurrence (such as a wall, which varies based on the wall length), the + **Construction Type** will typically have no geometry. + +Filtering by materials +---------------------- + +Everything in the built environment is made from a physical raw **Material** +resources. For example, a **Material** might be a 140mm core filled block. +Another **Material** might be a 190mm hollowcore block. **Materials** are +grouped into categories like steel, concrete, brick, block, and so on. + +We can see a list of **Materials** used in the project in the **IFC Materials** +subpanel in the **Scene Properties** tab. + +Press the **Select Icon** to select all objects that are of the selected +material. + +.. image:: materials.png + +Taking simple measurements +-------------------------- + +The simplest form of measurement is the one that's already taken for you. The +**Viewing attributes and properties** section describes how to view +pre-calculated **Quantities**. + +Sometimes, you may wish to take manual measurements yourself. To view the +overall dimensions of an object, first select an object, then expand out the +viewport **Sidebar**. + +.. image:: viewport-sidebar.png + +In the **Item** tab, you can find the X, Y, and Z overall **Dimensions** of the +currently selected object. + +.. image:: viewport-dimensions.png + +Another way to manually measure from two points is to use the **Measure** tool. +First, press the **Snap Icon** to enable snapping. Then choose snap targets in +the **Snap Menu** in the top middle section of the **Viewport** panel. + +.. image:: snap-targets.png + +.. tip:: + + It is recommended to choose multiple snap targets, like **Vertex**, **Edge**, and + **Face**, and **Edge Center**. You can use the ``Shift`` key to select + multiple snap targets. For example, the **Face** snap target means that your + measurements will automatically snap to the nearest object's surface. + +Now that you have configured snapping, press the **Measure Tool Icon** on the +left of the **Viewport** panel. **Click** and **Drag** in the 3D viewport to +take a measurement. A circle will appear guiding the first point of your +measurement. While **Dragging**, press the ``X`` key to lock the measurement +line along the X axis. Alternatively, press the ``Y`` or ``Z`` key to lock the +measurement line along the Y or Z axis. Let go of the mouse to finish your +measurement. + +.. image:: measure-tool.png + +To delete a measurement, just click on one point of the measurement, and press +the ``Delete`` key. You can also click and drag the ends of your measurement +lines to measure to another location. + +What else is there? +------------------- + +Congratulations, and welcome to the digital built environment! + +We've barely scratched the surface of the data and relationships available in an +IFC model. We've yet to cover documents and drawings, clearance zones, tasks, +cost items, structural loads and forces, analytical models, distribution system +connectivity, energy analysis, rendering textures, and so much more. Our built +environment and its relationships are vast and complex and it is exciting that +you can join us on its digital journey! + +Please do not hesitate to reach out with any questions. + +- `OSArch live chat `__ +- `OSArch community forum `__ diff --git a/src/blenderbim/docs/users/frame-selected.png b/src/blenderbim/docs/users/frame-selected.png new file mode 100644 index 0000000000..ea297bc9a9 Binary files /dev/null and b/src/blenderbim/docs/users/frame-selected.png differ diff --git a/src/blenderbim/docs/users/georeferencing.rst b/src/blenderbim/docs/users/georeferencing.rst new file mode 100644 index 0000000000..4127fbacfb --- /dev/null +++ b/src/blenderbim/docs/users/georeferencing.rst @@ -0,0 +1,256 @@ +Georeferencing +============== + +There are two types of construction: vertical construction (such as buildings +and sites) which deal with small distances typically under 1km, and horizontal +construction (such as transport, transmission, and subterranean networks) where +distances frequently exceed 1km. Blender and the BlenderBIM Add-on focuses on +vertical construction, and will typically just work out of the box. + +Coordinate reference systems +---------------------------- + +The minimum requirement for a georeferenced model is to specify the coordinate +reference system used. This is known as the **Projected CRS**, and is a feature +available in IFC4 onwards. + +.. warning:: + + IFC2X3 models cannot be georeferenced. There is a proposed convention to + provide fallback support but this is not supported yet in any known vendor. + Please consider upgrading to IFC4. + +Most architects and engineers will know the name of the **Projected CRS** +typically chosen by the surveyor. For example in Sydney, Australia, you might +use GDA2020 / MGA Zone 56. In IFC a standardised code from the EPSG public +registry is used to refer to the **Projected CRS**. For example, GDA 2020 / MGA +Zone 56 will be named EPSG:7856. + +You can check whether or not your model is georeferenced in the **IFC +Georeferencing** panel in the **Scene Properties** tab. You should see a section +for the **Projected CRS** with an EPSG code. + +.. image:: projectedcrs.png + +If you do not see this, your project is not georeferenced. + +.. Note:: + + Even if a model has large "real world coordinates", this does not mean the + project is georeferenced. Without a **Projected CRS**, these coordinates are + meaningless. + +Map conversions +--------------- + +The coordinates for the nominated **Projected CRS** are known as **Map +Coordinates**. These **Map Coordinates** are typically large numbers and read as +Eastings and Northings. + +In vertical construction, some disciplines (such as a civil engineer or +surveyor) will directly use **Map Coordinates** in their designs. Most others, +such as the architect, structural, and service engineers will instead use +**Local engineering coordinates**. A **Map Conversion** stores the parameters +for transforming **Local engineering coordinates** to **Map Coordinates**. + +For example, a civil engineer will work directly in **Map Coordinates**. This +means that the model's coordinates correlate directly to Eastings and +Northings. Similarly, the model's +Y axis will point to **Grid North**. As +there is no **Map Conversion** involved, you will see a 0 in the Eastings, +Northings, and Orthogonal Height in the **IFC Georeferencing** panel. + +.. image:: mapcoordinates.png + +When **Local engineering coordinates** are used, typically the architect will +nominate a local origin and model geometry will be drawn orthogonally (i.e. +along the X and Y axis). This local origin often correlates with a site bounary, +surveyed point, or grid intersection. This means that the model's coordinates +are typically smaller numbers and correlate to surface distance measurements, +not Eastings and Northings, and the model's +Y axis will point to **Project +North**. The surveyor will then provide the necessary **Map Conversion** +parameters to convert from **Local engineering coordinates** to Eastings, +Northings, Orthogonal Height, and **Grid North**. + +.. image:: mapconversion.png + +.. warning:: + + Coordinate systems are a technical topic. A common error is that disciplines + may choose to use **Map Coordinates** without realising that map distances + do not correlate with surface distances measured on the ground. Unless you + are trained to work in **Map Coordinates**, it is safer to work with local + engineering coordinates and consult your surveyor for professional guidance. + +**Map Conversions** contain six parameters. + +**Eastings**, **Northings** and **Orthogonal Height** parameters define the +translation from the model's XYZ coordinates to map **Eastings**, **Northings**, +and **Heights**. Your model's local engineering origin at 0, 0, 0, will always +convert exactly to the **Easting**, **Northing**, and **Orthogonal Height** +displayed in this panel. + +The **X Axis Abcissa** and **X Axis Ordinate** define the rotation vector from +**Project North** to **Grid North**. These two numbers combine into a coordinate +vector pointing along the X axis (i.e. **Project East**). The default is an +abscissa of 1 and ordinate of 0. This default (1, 0) vector implies **Project +East** and **Grid East** coalign, which means there is no rotation between +**Project North** and **Grid North**. + +.. image:: xaxisabscissaordinate.png + +.. tip:: + + To save you the mental struggle of converting to degrees, a calculated + rotation is always just below these values. Phew! + +The distance measured on site, or the "surface distance" is actually not the +same as the distance measured between Eastings and Northings. This difference is +provided by the **Scale** parameter. The **Scale** defines the average combined +scale factor across the small 1km site that converts from the model's surface +distances to map grid distances. Note that the **Scale** is actually not a +constant. However, for the small sites dealt with in vertical construction, it +may be approximated to be a constant by your surveyor and will typically be a +value close to, but not exactly 1. + +.. note:: + + Always check that the surveyor provides a scale factor such that surface + distance multiplied by **Scale** equals map grid distances (as opposed to + the other way around). + +Working with Map Coordinates +---------------------------- + +The BlenderBIM Add-on is designed to work with small coordinates (under 1km), +whereas map coordinates are typically large. When you load an IFC which uses map +coordinates directly, or when you are working with IFC2X3 and you cannot use a +map conversion, the BlenderBIM Add-on will autodetect a point on your model to +use as a false origin. + +The XYZ offset used for the false origin will be shown in the **IFC +Georeferencing** panel under the **Blender Offset** header. It +is very similar to a **Map Conversion**, but it will not have a scale and only +temporarily affects your Blender session. + +.. image:: blenderoffset.png + +.. note:: + + A Blender offset is simply a shift in coordinates to reduce large model + coordinates to smaller coordinates. It should not be used as an indicator of + whether georeferencing is done correctly. Always check the **Projected + CRS**, **Map Conversion** and confirm the parameters with your surveyor. + +This distance limit of 1km and autodetected false origin may not be appropriate +for your project. For example, your project may exceed the 1km limit, or you may +want to federate multiple files together and manually specify a consistent and +fixed false origin. You can customise these options by choosing **Enable +Advanced Mode** when loading a project. Then, set the **Distance Limit** (in +meters) and the **False Origin** coordinate before pressing **Load Project +Elements**. + +.. image:: manualorigin.png + +When a false origin is used, there are two possible methods to offset objects by +the false origin. + +The first method is to offset the origin point of objects. We call this the +**Object Placement** method. The second method is to offset the local +coordinates of geometry within the objects themselves. We call this the +**Cartesian Point** method. Sometimes, BIM applications combine both of these +methods in a single IFC project. To see which workaround was used on an object, +check the "Blender Offset" property in the **Transform** panel in the **Object +Properties**. This is an advanced property used by powerusers to debug +coordinate issues and may be safely ignored by most users. + +.. image:: offsetmode.png + +Incorrect coordinate use +------------------------ + +Sometimes, a model may mix **Map Coordinates** and **Local engineering +coordinates**. For example, a surveyed pipe may have its placement use **Map +Coordinates** with large Eastings and Northings. However, the placement of the +site object may be still set at 0, 0, 0. Since this range of coordinates exceed +the default 1km distance limit, this creates a problem. Blender needs to choose +between displaying the pipe accurately and sacrificing precision at the site +placement, or vice versa, but it is impossible to satisfy both simultaneously in +the same Blender session. + +.. warning:: + + Many IFC viewers only show geometry, and don't show object placements. This may + give users the false impression that their coordinates in their IFC project + do not have such a large range. However, as a native IFC authoring platform, + the BlenderBIM Add-on will not accept this inconsistency. + +At this point, it is the users responsibility to reconcile this inconsistency in +their coordinates. Either the user needs to fix their file to consistently +offset all coordinates, or the user needs to manually tell the BlenderBIM Add-on +the coordinates of the desired false origin and accept the precision loss. + +Converting local and map coordinates +------------------------------------ + +You can convert **Local engineering coordinates** to **Map coordinates** and +vice versa in the **Viewport** panel. First, enable ``View > Sidebar`` then type +in your coordinate in the **Input** field. Press either the **Local to Global** +or **Global to Local** button to convert the coordinate. You will see the result +of the calculation in the **Output** field. + +.. image:: coordinateconversion.png + +True north +---------- + +When **Local engineering coordinates** are used, the model's +Y axis points to +**Project North** for the convenience of drafting. When **Map Coordinates** are +used, the model's +Y axis points to **Grid North** for the neccessity of +surveying. + +**Project North** and **Grid North** is different to **True North**. The angle +to **True North** is not a fixed angle. It will actually vary depending on the +Eastings and Northings you choose to calculate it from. + +However, this variable **True North** is a great source of confusion to +architects, who typically just want to do a shadow study, solar study, or +similar and go out for an early lunch. IFC can store a fixed **True North** +value as a reference to be used for these types of usecases. If one is stored in +your project, you may see it under the **True North** section of the **IFC +Georeferencing** panel. Your surveyor will be able to provide the **True North** +vector, but it should be only used as a reference, never used as a way to +coordinate model rotations, and always with the understanding that it is not a +fixed value. + +.. image:: truenorth.png + +.. warning:: + + Fun fact: **Magnetic North** is useless for the purposes of construction. + +Coordinate precision limits +--------------------------- + +The BlenderBIM Add-on focuses on vertical construction. Vertical construction +typically uses **Local engineering coordinates** on a small site. The +buildingSMART georeferencing technical experts panel have determined that a +small site under 1km square can be assumed to have a constant **Map +Conversion**. + +Therefore, if your model is less than 1km square, you are within the coordinate +precision limits. This is where the 1km default distance limit is derived from. + +If you want to exceed the 1km square surveying limitation, you will need to be +aware of software limitations that can result in precision loss when large +coordinate ranges are used. + +Blender, and subsequently the BlenderBIM Add-on, is not designed for **Map +Coordinates**. Blender internally uses single precision floating point +calculations. A full description of the precision implications are described in +the `Blender working limits documentation +`__. + +This means that lengths greater than 5,000 meters start to accumulate software +precision errors that affect the nearest millimeter. Therefore, from a software +perspective, it is unwise to embark on a project with coordinates ranging +greater than +/- 5km. diff --git a/src/blenderbim/docs/users/install-blenderbim-1.png b/src/blenderbim/docs/users/install-blenderbim-1.png new file mode 100644 index 0000000000..79d1ef91c2 Binary files /dev/null and b/src/blenderbim/docs/users/install-blenderbim-1.png differ diff --git a/src/blenderbim/docs/users/install-blenderbim-2.png b/src/blenderbim/docs/users/install-blenderbim-2.png new file mode 100644 index 0000000000..ab81f74adf Binary files /dev/null and b/src/blenderbim/docs/users/install-blenderbim-2.png differ diff --git a/src/blenderbim/docs/users/install-blenderbim-3.png b/src/blenderbim/docs/users/install-blenderbim-3.png new file mode 100644 index 0000000000..7af37299d9 Binary files /dev/null and b/src/blenderbim/docs/users/install-blenderbim-3.png differ diff --git a/src/blenderbim/docs/users/install-blenderbim-4.png b/src/blenderbim/docs/users/install-blenderbim-4.png new file mode 100644 index 0000000000..179613072c Binary files /dev/null and b/src/blenderbim/docs/users/install-blenderbim-4.png differ diff --git a/src/blenderbim/docs/users/installation.rst b/src/blenderbim/docs/users/installation.rst new file mode 100644 index 0000000000..26a64468a8 --- /dev/null +++ b/src/blenderbim/docs/users/installation.rst @@ -0,0 +1,135 @@ +Installation +============ + +1. **Download and install Blender** + + Blender is a free and open-source program for 3D authoring. It works on + Linux, Mac, and Windows. It is developed by the Blender community. + +.. container:: blockbutton + + `Download Blender `__ + +.. tip:: + + No administrator rights on Windows? Choose the "Portable .zip" option when + downloading from the Blender website. + +2. **Download the BlenderBIM Add-on** + + The BlenderBIM Add-on extends Blender with OpenBIM related capabilities. + +.. container:: blockbutton + + `Download BlenderBIM Add-on `__ + +.. warning:: + + If you are not using Blender version >=3.1, please follow the **Unstable installation** instructions. :doc:`Read more <../devs/installation>` + +3. **Install the BlenderBIM Add-on** + + Open up Blender, and click on ``Edit > Preferences``. + + .. image:: install-blenderbim-1.png + + Select the **Add-ons** tab, and press **Install...** on the top right. Navigate + to the .zip you downloaded in Step 2, and press **Install Add-on**. + + .. image:: install-blenderbim-2.png + + .. warning:: + + You do not need to unzip the add-on file. You should install it as a zipped file. + + You should now see **Import-Export: BlenderBIM** available in your add-ons list. Enable the add-on by pressing the checkbox. + + .. image:: install-blenderbim-3.png + +All done! If you check your Scene properties in the panel on the bottom right, you will see a panel to manage your **IFC Project**. + +.. image:: install-blenderbim-4.png + +You can enable add-ons permanently by using ``Save User Settings`` from the Addons menu. + +.. seealso:: + + If you are a poweruser, you may be interested in the **Unstable installation** to help with testing. :doc:`Read more <../devs/installation>` + +Where is the add-on installed? +------------------------------ + +If you downloaded Blender as a ``.zip`` file without running an installer, you +will find the BlenderBIM Add-on installed in the following directory, where +``X.XX`` is the Blender version: +:: + + /path/to/blender/X.XX/scripts/addons/ + +Otherwise, if you installed Blender using an installation package, the add-ons +folder depends on which operating system you use. On Linux: +:: + + ~/.config/blender/X.XX/scripts/addons/ + +On Mac: +:: + + /Users/{YOUR_USER}/Library/Application Support/Blender/X.XX/ + +On Windows: +:: + + C:\Users\{YOUR_USER}\AppData\Roaming\Blender Foundation\X.XX\scripts\addons + +Upon installation, the BlenderBIM Add-on is stored in the ``blenderbim/`` +directory. + + +Updating +-------- + +First uninstall the current BlenderBIM add-on, then install the latest version. + +Uninstalling +------------ + +Navigate to ``Edit > Preferences > Add-ons``. Due to a limitation in Blender, +you have to first disable the BlenderBIM Add-on in your Blender preferences by +pressing the checkbox next to the add-on, then restart Blender. After +restarting, you can uninstall the BlenderBIM Add-on by pressing the ``Remove`` +button in the Blender preferences window. + +Alternatively, you may uninstall manually by deleting the ``blenderbim/`` +directory in your Blender add-ons directory. + +.. warning:: + + It is important to follow the sequence of disabling, restarting, then removing. + If you do not restart Blender, the add-on will fail to remove correctly, and you + will need to uninstall manually. + + +FAQ +--- + +1. **I get an error similar to "ImportError: IfcOpenShell not built for 'linux/64bit/python3.7'"** + + Check which BlenderBIM Add-on build you are using. The zip will have either + ``py37``, ``py39``, or ``py310`` in the name. See the instructions in the + **Unstable installation** section to check that you have installed the + correct version. + +2. **I am on Ubuntu and get an error similar to "ImportError: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.29 not found"** + + Our latest package which uses IfcOpenShell v0.7.0 is built using Ubuntu 20 LTS. + If you have an older Ubuntu version, you can either upgrade to 19.10 or above, + or you'll need to compile IfcOpenShell yourself. + +3. **The add-on does not install on a Mac with an M1 arm chip** + + The BlenderBIM Add-on uses the IfcOpenShell library, which is not yet + available for computers which use an ARM chip. You may + compile IfcOpenShell yourself to get this to work, but this may be too + difficult for most users. Please consider donating so that we can devote more + time to supporting all platforms. diff --git a/src/blenderbim/docs/users/introduction_to_bim.rst b/src/blenderbim/docs/users/introduction_to_bim.rst new file mode 100644 index 0000000000..36955d1b60 --- /dev/null +++ b/src/blenderbim/docs/users/introduction_to_bim.rst @@ -0,0 +1,59 @@ +Introduction to BIM +=================== + +**Building Information Modeling**, or **BIM**, is a way of digitally describing +our built environment to computers. Aspects of our built environment that can be +described are: + +- **Products**, like walls, doors, and windows +- **Processes**, like construction or maintenance tasks, and procedures +- **Resources**, like labour, materials, and equipment +- **Controls**, like permits, orders, costs, or calendar availability +- **Actors**, like occupants, clients, architects, and liable parties +- **Groups**, like systems, inventories, or zones + +These objects may have lots of data and relationships. Examples of data might be +classification systems, physical materials, associated documents, simulation +results, and construction types. The data may be relevant to multiple +disciplines, such as architecture, engineering, and construction. + +.. note:: + + BIM data is very different from a regular 3D model. In fact, geometry is + optional, and most data is non-geometric. This means that it is not simply a + 3D format that you can import or export from and expect meaningful results. + +**Industry Foundation Classes**, or **IFC**, is an international standard for +**BIM**. **IFC** is the most well-established open digital language for our +built environment. Most software will be able to describe their **BIM** data +using **IFC**. Most commonly, **IFC** models will be shared as a ``.ifc`` file. + +For example, **IFC** will define a wall as an object that can have a name, +construction type, and quantities. **IFC** will also describe that a wall that +be associated with a location, like a building storey, or have an associated +cost item in a schedule. + +When you use the BlenderBIM Add-on, you will be able to view and create **BIM** +objects and relationships using the **IFC** standard. + +Things you can do +----------------- + +The BlenderBIM Add-on is designed to be a full BIM authoring platform. Its +capabilities have a similar scope to other modeling platforms, costing programs, +scheduling software, CAD packages, and simulation software. It is too numerous +to list in full, but an example of what is possible include: + +- Viewing models, including spaces, properties, and relationships +- Edit and extract attributes and properties +- Moving objects, and changing their geometry +- Create new objects using library elements +- Manage classification systems, document and library references +- Generating 2D drawings, schedules, and creating sheets +- Investigating and editing structural analysis models +- Connecting and managing distribution systems and ports +- Creating construction schedules, critical path analysis, and generating sequence animations +- Creating cost schedules, using formulas, and deriving quantities from model elements +- Clash detection and managing issues for model coordination + +... and much, much more. diff --git a/src/blenderbim/docs/users/manualorigin.png b/src/blenderbim/docs/users/manualorigin.png new file mode 100644 index 0000000000..ba769b7bd0 Binary files /dev/null and b/src/blenderbim/docs/users/manualorigin.png differ diff --git a/src/blenderbim/docs/users/mapconversion.png b/src/blenderbim/docs/users/mapconversion.png new file mode 100644 index 0000000000..1e3a5259cd Binary files /dev/null and b/src/blenderbim/docs/users/mapconversion.png differ diff --git a/src/blenderbim/docs/users/mapcoordinates.png b/src/blenderbim/docs/users/mapcoordinates.png new file mode 100644 index 0000000000..b69be329d7 Binary files /dev/null and b/src/blenderbim/docs/users/mapcoordinates.png differ diff --git a/src/blenderbim/docs/users/materials.png b/src/blenderbim/docs/users/materials.png new file mode 100644 index 0000000000..8abaf46a04 Binary files /dev/null and b/src/blenderbim/docs/users/materials.png differ diff --git a/src/blenderbim/docs/users/measure-tool.png b/src/blenderbim/docs/users/measure-tool.png new file mode 100644 index 0000000000..05a3ff444c Binary files /dev/null and b/src/blenderbim/docs/users/measure-tool.png differ diff --git a/src/blenderbim/docs/users/navigate-gizmo.png b/src/blenderbim/docs/users/navigate-gizmo.png new file mode 100644 index 0000000000..9d9dd1fb07 Binary files /dev/null and b/src/blenderbim/docs/users/navigate-gizmo.png differ diff --git a/src/blenderbim/docs/users/offsetmode.png b/src/blenderbim/docs/users/offsetmode.png new file mode 100644 index 0000000000..3731df4383 Binary files /dev/null and b/src/blenderbim/docs/users/offsetmode.png differ diff --git a/src/blenderbim/docs/users/outliner-filter.png b/src/blenderbim/docs/users/outliner-filter.png new file mode 100644 index 0000000000..08cafb6632 Binary files /dev/null and b/src/blenderbim/docs/users/outliner-filter.png differ diff --git a/src/blenderbim/docs/users/outliner-isolate.png b/src/blenderbim/docs/users/outliner-isolate.png new file mode 100644 index 0000000000..b63fd9cdc8 Binary files /dev/null and b/src/blenderbim/docs/users/outliner-isolate.png differ diff --git a/src/blenderbim/docs/users/outliner-types.png b/src/blenderbim/docs/users/outliner-types.png new file mode 100644 index 0000000000..fe951c0dfe Binary files /dev/null and b/src/blenderbim/docs/users/outliner-types.png differ diff --git a/src/blenderbim/docs/users/outliner.png b/src/blenderbim/docs/users/outliner.png new file mode 100644 index 0000000000..d568f9ed07 Binary files /dev/null and b/src/blenderbim/docs/users/outliner.png differ diff --git a/src/blenderbim/docs/users/projectedcrs.png b/src/blenderbim/docs/users/projectedcrs.png new file mode 100644 index 0000000000..1997bf51ff Binary files /dev/null and b/src/blenderbim/docs/users/projectedcrs.png differ diff --git a/src/blenderbim/docs/users/properties-loadproject.png b/src/blenderbim/docs/users/properties-loadproject.png new file mode 100644 index 0000000000..88f5be2ddc Binary files /dev/null and b/src/blenderbim/docs/users/properties-loadproject.png differ diff --git a/src/blenderbim/docs/users/properties-types.png b/src/blenderbim/docs/users/properties-types.png new file mode 100644 index 0000000000..dd719f80a1 Binary files /dev/null and b/src/blenderbim/docs/users/properties-types.png differ diff --git a/src/blenderbim/docs/users/psets.png b/src/blenderbim/docs/users/psets.png new file mode 100644 index 0000000000..cae396693e Binary files /dev/null and b/src/blenderbim/docs/users/psets.png differ diff --git a/src/blenderbim/docs/users/qtos.png b/src/blenderbim/docs/users/qtos.png new file mode 100644 index 0000000000..5746f10a83 Binary files /dev/null and b/src/blenderbim/docs/users/qtos.png differ diff --git a/src/blenderbim/docs/users/scene-statistics.png b/src/blenderbim/docs/users/scene-statistics.png new file mode 100644 index 0000000000..52362f050f Binary files /dev/null and b/src/blenderbim/docs/users/scene-statistics.png differ diff --git a/src/blenderbim/docs/users/snap-targets.png b/src/blenderbim/docs/users/snap-targets.png new file mode 100644 index 0000000000..4a58a6193d Binary files /dev/null and b/src/blenderbim/docs/users/snap-targets.png differ diff --git a/src/blenderbim/docs/users/spatial-container.png b/src/blenderbim/docs/users/spatial-container.png new file mode 100644 index 0000000000..a8c2c74e83 Binary files /dev/null and b/src/blenderbim/docs/users/spatial-container.png differ diff --git a/src/blenderbim/docs/users/truenorth.png b/src/blenderbim/docs/users/truenorth.png new file mode 100644 index 0000000000..a1700b5946 Binary files /dev/null and b/src/blenderbim/docs/users/truenorth.png differ diff --git a/src/blenderbim/docs/users/type-local-view.png b/src/blenderbim/docs/users/type-local-view.png new file mode 100644 index 0000000000..e448279567 Binary files /dev/null and b/src/blenderbim/docs/users/type-local-view.png differ diff --git a/src/blenderbim/docs/users/viewport-dimensions.png b/src/blenderbim/docs/users/viewport-dimensions.png new file mode 100644 index 0000000000..52dda47f68 Binary files /dev/null and b/src/blenderbim/docs/users/viewport-dimensions.png differ diff --git a/src/blenderbim/docs/users/viewport-sidebar.png b/src/blenderbim/docs/users/viewport-sidebar.png new file mode 100644 index 0000000000..7931d22a93 Binary files /dev/null and b/src/blenderbim/docs/users/viewport-sidebar.png differ diff --git a/src/blenderbim/docs/users/x-ray-mode.png b/src/blenderbim/docs/users/x-ray-mode.png new file mode 100644 index 0000000000..70afad3446 Binary files /dev/null and b/src/blenderbim/docs/users/x-ray-mode.png differ diff --git a/src/blenderbim/docs/users/xaxisabscissaordinate.png b/src/blenderbim/docs/users/xaxisabscissaordinate.png new file mode 100644 index 0000000000..abd0771a76 Binary files /dev/null and b/src/blenderbim/docs/users/xaxisabscissaordinate.png differ diff --git a/src/blenderbim/icon-cad.blend b/src/blenderbim/icon-cad.blend new file mode 100644 index 0000000000..92dc30b4a1 Binary files /dev/null and b/src/blenderbim/icon-cad.blend differ diff --git a/src/blenderbim/pytest.ini b/src/blenderbim/pytest.ini index 5cd46aa294..4ad6fa92de 100644 --- a/src/blenderbim/pytest.ini +++ b/src/blenderbim/pytest.ini @@ -10,6 +10,7 @@ markers = document drawing geometry + georeference library material misc @@ -29,3 +30,4 @@ markers = type unit void +addopts = --color=yes --code-highlight=yes diff --git a/src/blenderbim/scripts/au-library.blend b/src/blenderbim/scripts/au-library.blend new file mode 100644 index 0000000000..0bf2d9f7b7 Binary files /dev/null and b/src/blenderbim/scripts/au-library.blend differ diff --git a/src/blenderbim/demo-library.blend b/src/blenderbim/scripts/demo-library.blend similarity index 100% rename from src/blenderbim/demo-library.blend rename to src/blenderbim/scripts/demo-library.blend diff --git a/src/blenderbim/dxf2ifc.py b/src/blenderbim/scripts/dxf2ifc.py similarity index 100% rename from src/blenderbim/dxf2ifc.py rename to src/blenderbim/scripts/dxf2ifc.py diff --git a/src/blenderbim/extract.py b/src/blenderbim/scripts/extract.py similarity index 100% rename from src/blenderbim/extract.py rename to src/blenderbim/scripts/extract.py diff --git a/src/blenderbim/gbxml.py b/src/blenderbim/scripts/gbxml.py similarity index 100% rename from src/blenderbim/gbxml.py rename to src/blenderbim/scripts/gbxml.py diff --git a/src/blenderbim/scripts/generate_au_library.py b/src/blenderbim/scripts/generate_au_library.py new file mode 100644 index 0000000000..7dab03c45f --- /dev/null +++ b/src/blenderbim/scripts/generate_au_library.py @@ -0,0 +1,254 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2020, 2021 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + +# fmt: off +# pylint: skip-file + +import bpy +import ifcopenshell +import ifcopenshell.api +import blenderbim.tool as tool + + +class LibraryGenerator: + def generate(self): + ifcopenshell.api.pre_listeners = {} + ifcopenshell.api.post_listeners = {} + + self.materials = {} + + self.file = ifcopenshell.api.run("project.create_file") + self.project = ifcopenshell.api.run( + "root.create_entity", self.file, ifc_class="IfcProject", name="Australian Library" + ) + self.library = ifcopenshell.api.run( + "root.create_entity", self.file, ifc_class="IfcProjectLibrary", name="Australian Library" + ) + ifcopenshell.api.run( + "project.assign_declaration", self.file, definition=self.library, relating_context=self.project + ) + unit = ifcopenshell.api.run("unit.add_si_unit", self.file, unit_type="LENGTHUNIT", name="METRE", prefix="MILLI") + ifcopenshell.api.run("unit.assign_unit", self.file, units=[unit]) + + model = ifcopenshell.api.run("context.add_context", self.file, context_type="Model") + plan = ifcopenshell.api.run("context.add_context", self.file, context_type="Plan") + self.representations = { + "body": ifcopenshell.api.run( + "context.add_context", + self.file, + context_type="Model", + context_identifier="Body", + target_view="MODEL_VIEW", + parent=model, + ), + "annotation": ifcopenshell.api.run( + "context.add_context", + self.file, + context_type="Plan", + context_identifier="Annotation", + target_view="PLAN_VIEW", + parent=plan, + ), + } + + self.materials = { + "TBD": {"Category": "other"}, + "BRK": {"Category": "brick"}, + "BLK": {"Category": "block"}, + "CON": {"Category": "concrete"}, + "WD": {"Category": "wood"}, + "ST": {"Category": "steel"}, + "AL": {"Category": "aluminium"}, + "GLZ": {"Category": "glass"}, + "PBD": {"Category": "gypsum"}, + "AIR": {"Category": "air"}, + "MEM": {"Category": "membrane"}, + } + + for name, data in self.materials.items(): + self.materials[name]["ifc"] = ifcopenshell.api.run("material.add_material", self.file, name=name) + self.materials[name]["ifc"].Category = data["Category"] + + self.layer_types = { + "WAL01": {"type": "IfcWallType", "Description": "110mm Single brick", + "Layers": [("LoadBearing", "BRK", 110)]}, + "WAL02": {"type": "IfcWallType", "Description": "250mm Brick veneer", + "Layers": [("Finish", "BRK", 110), ("Ventilation", "AIR", 50), ("LoadBearing", "WD", 90)]}, + "WAL03": {"type": "IfcWallType", "Description": "270mm Double brick", + "Layers": [("Finish", "BRK", 110), ("Ventilation", "AIR", 50), ("LoadBearing", "BRK", 110)]}, + "WAL04": {"type": "IfcWallType", "Description": "150mm Reinforced concrete", + "Layers": [("LoadBearing", "CON", 150)]}, + "WAL05": {"type": "IfcWallType", "Description": "200mm Reinforced concrete", + "Layers": [("LoadBearing", "CON", 200)]}, + "WAL06": {"type": "IfcWallType", "Description": "250mm Reinforced concrete", + "Layers": [("LoadBearing", "CON", 250)]}, + "WAL07": {"type": "IfcWallType", "Description": "300mm Reinforced concrete", + "Layers": [("LoadBearing", "CON", 300)]}, + "WAL08": {"type": "IfcWallType", "Description": "140mm Hollow core block", + "Layers": [("LoadBearing", "BLK", 190)]}, + "WAL09": {"type": "IfcWallType", "Description": "140mm Core filled block", + "Layers": [("LoadBearing", "BLK", 190)]}, + "WAL10": {"type": "IfcWallType", "Description": "190mm Hollow core block", + "Layers": [("LoadBearing", "BLK", 190)]}, + "WAL11": {"type": "IfcWallType", "Description": "190mm Core filled block", + "Layers": [("LoadBearing", "BLK", 190)]}, + "WAL12": {"type": "IfcWallType", "Description": "90mm Wooden frame", + "Layers": [("LoadBearing", "WD", 90)]}, + "WAL13": {"type": "IfcWallType", "Description": "64mm Steel frame", + "Layers": [("LoadBearing", "ST", 64)]}, + "CLD01": {"type": "IfcCoveringType", "Description": "110mm Face brick", + "Layers": [("LoadBearing", "BRK", 110)]}, + "CLD02": {"type": "IfcCoveringType", "Description": "13mm Plasterboard lining", + "Layers": [("LoadBearing", "PBD", 13)]}, + } + + for name, data in self.layer_types.items(): + self.layer_types[name]["ifc"] = self.create_layer_set_type(name, data) + + product = self.create_layer_type("IfcCoveringType", "DEMO20", 0.02) + pset = ifcopenshell.api.run("pset.add_pset", self.file, product=product, name="EPset_Parametric") + ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"LayerSetDirection": "AXIS2"}) + + product = self.create_layer_type("IfcCoveringType", "DEMO30", 0.03) + pset = ifcopenshell.api.run("pset.add_pset", self.file, product=product, name="EPset_Parametric") + ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"LayerSetDirection": "AXIS3"}) + + self.create_layer_type("IfcRampType", "DEMO200", 0.2) + + profile = self.file.create_entity("IfcCircleProfileDef", ProfileType="AREA", Radius=0.3) + self.create_profile_type("IfcPileType", "DEMO1", profile) + + self.create_layer_type("IfcSlabType", "DEMO150", 0.2) + self.create_layer_type("IfcSlabType", "DEMO250", 0.3) + + profile = self.file.create_entity("IfcRectangleProfileDef", ProfileType="AREA", XDim=0.5, YDim=0.6) + self.create_profile_type("IfcColumnType", "DEMO1", profile) + + profile = self.file.create_entity( + "IfcCircleHollowProfileDef", ProfileType="AREA", Radius=0.25, WallThickness=0.005 + ) + self.create_profile_type("IfcColumnType", "DEMO2", profile) + + profile = self.file.create_entity( + "IfcRectangleHollowProfileDef", + ProfileType="AREA", + XDim=0.075, + YDim=0.15, + WallThickness=0.005, + InnerFilletRadius=0.005, + OuterFilletRadius=0.005, + ) + self.create_profile_type("IfcColumnType", "DEMO3", profile) + + profile = self.file.create_entity( + "IfcIShapeProfileDef", + ProfileName="DEMO-I", + ProfileType="AREA", + OverallWidth=0.1, + OverallDepth=0.2, + WebThickness=0.005, + FlangeThickness=0.01, + FilletRadius=0.005, + ) + self.create_profile_type("IfcBeamType", "DEMO1", profile) + + profile = self.file.create_entity( + "IfcCShapeProfileDef", + ProfileName="DEMO-C", + ProfileType="AREA", + Depth=0.2, + Width=0.1, + WallThickness=0.0015, + Girth=0.03, + InternalFilletRadius=0.005, + ) + self.create_profile_type("IfcBeamType", "DEMO2", profile) + + self.create_type("IfcWindowType", "DEMO1", {"body": "Window", "annotation": "Window-Annotation"}) + self.create_type("IfcDoorType", "DEMO1", {"body": "Door", "annotation": "Door-Annotation"}) + self.create_type("IfcFurnitureType", "BUNNY", {"body": "Bunny", "annotation": "Bunny-Annotation"}) + + self.file.write("blenderbim-au-library.ifc") + + def create_layer_set_type(self, name, data): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class=data["type"], name=name) + element.Description = data["Description"] + rel = ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialLayerSet") + layer_set = rel.RelatingMaterial + for layer_data in data["Layers"]: + layer = ifcopenshell.api.run( + "material.add_layer", self.file, layer_set=layer_set, material=self.materials[layer_data[1]]["ifc"] + ) + layer.Name = layer_data[0] + layer.LayerThickness = layer_data[2] + ifcopenshell.api.run("project.assign_declaration", self.file, definition=element, relating_context=self.library) + return element + + def create_layer_type(self, ifc_class, name, thickness): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class=ifc_class, name=name) + rel = ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialLayerSet") + layer_set = rel.RelatingMaterial + layer = ifcopenshell.api.run("material.add_layer", self.file, layer_set=layer_set, material=self.materials["TBD"]["ifc"]) + layer.LayerThickness = thickness + ifcopenshell.api.run("project.assign_declaration", self.file, definition=element, relating_context=self.library) + return element + + def create_profile_type(self, ifc_class, name, profile): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class=ifc_class, name=name) + rel = ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialProfileSet") + profile_set = rel.RelatingMaterial + material_profile = ifcopenshell.api.run( + "material.add_profile", self.file, profile_set=profile_set, material=self.materials["TBD"]["ifc"] + ) + ifcopenshell.api.run("material.assign_profile", self.file, material_profile=material_profile, profile=profile) + ifcopenshell.api.run("project.assign_declaration", self.file, definition=element, relating_context=self.library) + + def create_type(self, ifc_class, name, representations): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class=ifc_class, name=name) + for rep_name, obj_name in representations.items(): + obj = bpy.data.objects.get(obj_name) + representation = ifcopenshell.api.run( + "geometry.add_representation", + self.file, + context=self.representations[rep_name], + blender_object=obj, + geometry=obj.data, + total_items=max(1, len(obj.material_slots)), + ) + styles = [] + for slot in obj.material_slots: + style = ifcopenshell.api.run("style.add_style", self.file, name=slot.material.name) + ifcopenshell.api.run( + "style.add_surface_style", + self.file, + style=style, + ifc_class="IfcSurfaceStyleRendering", + attributes=tool.Style.get_surface_rendering_attributes(slot.material), + ) + styles.append(style) + if styles: + ifcopenshell.api.run( + "style.assign_representation_styles", self.file, shape_representation=representation, styles=styles + ) + ifcopenshell.api.run( + "geometry.assign_representation", self.file, product=element, representation=representation + ) + ifcopenshell.api.run("project.assign_declaration", self.file, definition=element, relating_context=self.library) + + +LibraryGenerator().generate() diff --git a/src/blenderbim/generate_demo_library.py b/src/blenderbim/scripts/generate_demo_library.py similarity index 100% rename from src/blenderbim/generate_demo_library.py rename to src/blenderbim/scripts/generate_demo_library.py diff --git a/src/blenderbim/generate_site_library.py b/src/blenderbim/scripts/generate_site_library.py similarity index 100% rename from src/blenderbim/generate_site_library.py rename to src/blenderbim/scripts/generate_site_library.py diff --git a/src/blenderbim/generate_util_type_json.py b/src/blenderbim/scripts/generate_util_type_json.py similarity index 100% rename from src/blenderbim/generate_util_type_json.py rename to src/blenderbim/scripts/generate_util_type_json.py diff --git a/src/blenderbim/getIfcElements.py b/src/blenderbim/scripts/getIfcElements.py similarity index 100% rename from src/blenderbim/getIfcElements.py rename to src/blenderbim/scripts/getIfcElements.py diff --git a/src/blenderbim/get_description.py b/src/blenderbim/scripts/get_description.py similarity index 100% rename from src/blenderbim/get_description.py rename to src/blenderbim/scripts/get_description.py diff --git a/src/blenderbim/get_volume_by_material.py b/src/blenderbim/scripts/get_volume_by_material.py similarity index 100% rename from src/blenderbim/get_volume_by_material.py rename to src/blenderbim/scripts/get_volume_by_material.py diff --git a/src/blenderbim/scripts/headless_import.py b/src/blenderbim/scripts/headless_import.py new file mode 100644 index 0000000000..07596d6c08 --- /dev/null +++ b/src/blenderbim/scripts/headless_import.py @@ -0,0 +1,54 @@ +# This can be run using `blender -b -P headless_import.py` + +import bpy +from blenderbim.bim.ifc import IfcStore + +# When federating, you may wish to manually specify the origin to ensure models +# with different or arbitrary origin conventions will turn up in the right spot. + +props = bpy.context.scene.BIMGeoreferenceProperties + +# A good idea it to test import a portion of the model (or grids only) and check +# georeferencing coordinates in the IFC Georeferencing panel before filling out +# these details. + +#props.blender_eastings = '334134181.0' +#props.blender_northings = '6254570511.0' +#props.blender_orthogonal_height = '0.0' +#props.blender_x_axis_abscissa = '0.147487884244522' +#props.blender_x_axis_ordinate = '0.989063862448262' +#props.has_blender_offset = True + +props = bpy.context.scene.BIMProjectProperties + +# Generally recommended to disable caching for stability right now +props.should_cache = False + +# If you are not authoring, it is recommended to enable this. +# When enabled, types, openings, and non geometric elements are not loaded. +props.is_coordinating = True + +# Merging is a good strategy to keep object counts low in huge models. + +# Leave it to none if you do not have a huge model. +props.merge_mode = "NONE" + +# A good merge strategy when the type is significant +props.merge_mode = "IFC_TYPE" + +# A good merge strategy to really get object counts low where types don't matter, like for structural models +props.merge_mode = "IFC_CLASS" + +# If you want to import a range of elements, say the first 30k elements, set the +# offset and limit here. 30k is generally useful as a guideline to keep models +# responsive (though my computer can handle 80k). +props.element_offset = 0 +props.element_limit = 30000 + +bpy.ops.bim.load_project(filepath="/path/to/your/model/input.ifc") + +# In coordination mode, it is unnecessary to maintain a link to the IFC +bpy.ops.bim.unload_project() + +# Save the processed file here +bpy.ops.wm.save_mainfile(filepath="/path/to/your/model/output.blend") diff --git a/src/blenderbim/obj2ifc.py b/src/blenderbim/scripts/obj2ifc.py similarity index 100% rename from src/blenderbim/obj2ifc.py rename to src/blenderbim/scripts/obj2ifc.py diff --git a/src/blenderbim/scripts/setup_pytest.py b/src/blenderbim/scripts/setup_pytest.py index 8a722bc015..552dbf55b0 100644 --- a/src/blenderbim/scripts/setup_pytest.py +++ b/src/blenderbim/scripts/setup_pytest.py @@ -25,3 +25,4 @@ subprocess.call([py_exec, "-m", "pip", "install", "--upgrade", "pip"]) subprocess.call([py_exec, "-m", "pip", "install", "pytest"]) subprocess.call([py_exec, "-m", "pip", "install", "pytest-blender"]) subprocess.call([py_exec, "-m", "pip", "install", "pytest-bdd"]) +subprocess.call([py_exec, "-m", "pip", "install", "pygments"]) diff --git a/src/blenderbim/site-library.blend b/src/blenderbim/scripts/site-library.blend similarity index 100% rename from src/blenderbim/site-library.blend rename to src/blenderbim/scripts/site-library.blend diff --git a/src/blenderbim/scripts/standalone_blender_import.py b/src/blenderbim/scripts/standalone_blender_import.py new file mode 100644 index 0000000000..c91c2af0da --- /dev/null +++ b/src/blenderbim/scripts/standalone_blender_import.py @@ -0,0 +1,125 @@ +import ifcopenshell +import ifcopenshell.api +import ifcopenshell.geom +import multiprocessing + + +class BlenderImporter: + def __init__(self): + self.file = ifcopenshell.open('/home/dion/untitled.ifc') + self.cache_path = "cache.h5" + self.should_use_cpu_multiprocessing = True + self.deflection_tolerance = 0.001 + self.angular_tolerance = 0.5 + + def execute(self): + self.created_guids = set() + + self.settings = ifcopenshell.geom.settings() + self.settings.set_deflection_tolerance(self.deflection_tolerance) + self.settings.set_angular_tolerance(self.angular_tolerance) + self.settings.set(self.settings.STRICT_TOLERANCE, True) + self.settings_2d = ifcopenshell.geom.settings() + self.settings_2d.set(self.settings_2d.INCLUDE_CURVES, True) + self.settings_2d.set(self.settings.STRICT_TOLERANCE, True) + + self.process_element_filter() + self.process_context_filter() + self.create_elements(self.elements) + + def process_element_filter(self): + # Blender users can typically customise a filtered set of elements to import. + # For simplicity, let's select everything: + self.elements = set(self.file.by_type("IfcProduct")) + + def process_context_filter(self): + # 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 + self.body_contexts = [ + c.id() + for c in self.file.by_type("IfcGeometricRepresentationSubContext") + if c.ContextIdentifier in ["Body", "Facetation"] + ] + # Ideally, all representations should be in a subcontext, but some BIM programs don't do this correctly + self.body_contexts.extend( + [ + c.id() + for c in self.file.by_type("IfcGeometricRepresentationContext", include_subtypes=False) + if c.ContextType == "Model" + ] + ) + if self.body_contexts: + self.settings.set_context_ids(self.body_contexts) + # Annotation is to accommodate broken Revit files + # See https://github.com/Autodesk/revit-ifc/issues/187 + self.plan_contexts = [ + c.id() + for c in self.file.by_type("IfcGeometricRepresentationContext") + if c.ContextType in ["Plan", "Annotation"] + ] + if self.plan_contexts: + self.settings_2d.set_context_ids(self.plan_contexts) + + def create_elements(self, elements): + # Based on my experience in viewing BIM models, representations are prioritised as follows: + # 1. 3D Body, 2. 2D Plans, 3. Point clouds, 4. No representation + # If an element has a representation that doesn't follow 1, 2, or 3, it will not show by default. + # The user can load them later if they want to view them. + products = self.create_products(elements) + elements -= products + products = self.create_products(elements, is_curve=True) + elements -= products + # Creating point clouds and non geometric objects are specific to Blender so no code is shown. + pass + + def create_products(self, products, is_curve=False): + results = set() + if not products: + return results + settings = self.settings_2d if is_curve else self.settings + if self.should_use_cpu_multiprocessing: + iterator = ifcopenshell.geom.iterator( + settings, self.file, multiprocessing.cpu_count(), include=products + ) + else: + iterator = ifcopenshell.geom.iterator(settings, self.file, include=products) + cache = self.get_cache() + if cache: + iterator.set_cache(cache) + valid_file = iterator.initialize() + if not valid_file: + return results + total = 0 + while True: + total += 1 + if total % 250 == 0: + print(f"{total} elements processed") + shape = iterator.get() + if shape: + product = self.file.by_id(shape.guid) + if self.body_contexts: + print("Created", product) + self.created_guids.add(shape.guid) + results.add(product) + else: + if shape.context not in ["Body", "Facetation"] and shape.guid in self.created_guids: + # We only load a single context, and we prioritise the Body context. See #1290. + pass + else: + print("Created", product) + self.created_guids.add(shape.guid) + results.add(product) + if not iterator.next(): + break + print("Done creating geometry") + return results + + def get_cache(self): + cache_settings = ifcopenshell.geom.settings() + cache_settings.set(cache_settings.STRICT_TOLERANCE, True) + try: + return ifcopenshell.geom.serializers.hdf5(self.cache_path, cache_settings) + except: + return + +BlenderImporter().execute() diff --git a/src/blenderbim/scripts/standalone_section_shader.py b/src/blenderbim/scripts/standalone_section_shader.py index 8068914183..7d732dad2a 100644 --- a/src/blenderbim/scripts/standalone_section_shader.py +++ b/src/blenderbim/scripts/standalone_section_shader.py @@ -13,11 +13,9 @@ bl_info = { import bpy -from bpy.types import Operator -from bpy.props import FloatVectorProperty +from bpy.types import Operator, PropertyGroup, Panel from mathutils import Vector, Matrix, Euler from math import radians -from bpy.types import PropertyGroup from bpy.props import ( PointerProperty, StringProperty, @@ -30,62 +28,131 @@ from bpy.props import ( ) -def update_section_color(self, context): - section_node_group = bpy.data.node_groups.get("Section Override") - if section_node_group is None: - return - try: - emission_node = next(n for n in section_node_group.nodes if isinstance(n, bpy.types.ShaderNodeEmission)) - emission_node.inputs[0].default_value = list(self.section_plane_colour) + [1] - except StopIteration: - pass +class SectionCutawayManager: + @staticmethod + def get_section_tree(): + return bpy.data.node_groups.get("Section Override") + @staticmethod + def get_sections_map(): + section_tree = SectionCutawayManager.get_section_tree() + return {n: n.object for n in section_tree.nodes if isinstance(n, bpy.types.ShaderNodeTexCoord)} -class BIM_OT_add_section_plane(bpy.types.Operator): - """Add a temporary empty object as a section cutaway. Cull all geometry rendering below the empty's local Z axis""" + @staticmethod + def purge_all_section_data(): + section_override_mat = bpy.data.materials.get("Section Override") + if section_override_mat: + bpy.data.materials.remove(section_override_mat) + for material in bpy.data.materials: + if not material.node_tree: + continue + override = material.node_tree.nodes.get("Section Override") + if not override: + continue + material.node_tree.links.new( + override.inputs[0].links[0].from_socket, override.outputs[0].links[0].to_socket + ) + material.node_tree.nodes.remove(override) + bpy.data.node_groups.remove(SectionCutawayManager.get_section_tree()) + bpy.data.node_groups.remove(bpy.data.node_groups.get("Section Compare")) - bl_idname = "bim.add_section_plane" - bl_label = "Add Temporary Section Cutaway" - bl_options = {"REGISTER", "UNDO"} + @staticmethod + def clean(): + sections_map = SectionCutawayManager.get_sections_map() + sections_map_iterator = list(sections_map.items()) + for tex_coord_node, section_obj in sections_map_iterator: + if section_obj is None or section_obj.users == 1: + SectionCutawayManager.unplug(tex_coord_node) + sections_map.pop(tex_coord_node) + if not any(o for o in sections_map.values() if o.users > 1): + SectionCutawayManager.purge_all_section_data() - def execute(self, context): - obj = self.create_section_obj(context) - if not self.has_section_override_node(): - self.create_section_compare_node() - self.create_section_override_node(obj, context) - else: - self.append_obj_to_section_override_node(obj) - self.add_default_material_if_none_exists(context) - self.override_materials() - return {"FINISHED"} + @staticmethod + def unplug(tex_coords): + section_tree = SectionCutawayManager.get_section_tree() + section_compare = tex_coords.outputs["Object"].links[0].to_node + if section_compare.inputs[0].links: + previous_section_compare = section_compare.inputs[0].links[0].from_node + next_section_compare = section_compare.outputs[0].links[0].to_node + section_tree.links.new(previous_section_compare.outputs[0], next_section_compare.inputs[0]) + SectionCutawayManager.offset_previous_nodes(section_compare, offset_x=200) + section_tree.nodes.remove(section_compare) + section_tree.nodes.remove(tex_coords) - def create_section_obj(self, context): + @staticmethod + def offset_previous_nodes(section_compare, offset_x=0, offset_y=0): + if section_compare.inputs[0].links: + previous_section_compare = section_compare.inputs[0].links[0].from_node + previous_section_compare.location += Vector((offset_x, offset_y)) + if previous_section_compare.inputs[1].links: + previous_section_compare.inputs[1].links[0].from_node.location += Vector((offset_x, offset_y)) + SectionCutawayManager.offset_previous_nodes(previous_section_compare, offset_x, offset_y) + + @staticmethod + def override_materials(): + override = SectionCutawayManager.get_section_tree() + for material in bpy.data.materials: + material.use_nodes = True + if material.node_tree.nodes.get(override.name): + continue + material.blend_method = "HASHED" + material.shadow_method = "HASHED" + material_output = next((n for n in material.node_tree.nodes if n.type == "OUTPUT_MATERIAL"), None) + if material_output is None: + continue + from_socket = material_output.inputs[0].links[0].from_socket + section_override = material.node_tree.nodes.new(type="ShaderNodeGroup") + section_override.name = "Section Override" + section_override.node_tree = override + material.node_tree.links.new(from_socket, section_override.inputs[0]) + material.node_tree.links.new(section_override.outputs[0], material_output.inputs[0]) + + @staticmethod + def create_section_obj(from_obj, scene): section = bpy.data.objects.new("Section", None) section.empty_display_type = "SINGLE_ARROW" section.empty_display_size = 5 section.show_in_front = True - if ( - context.active_object - and context.active_object.select_get() - and isinstance(context.active_object.data, bpy.types.Camera) - ): - section.matrix_world = ( - context.active_object.matrix_world @ Euler((radians(180.0), 0.0, 0.0), "XYZ").to_matrix().to_4x4() - ) + if from_obj and from_obj.select_get() and isinstance(from_obj.data, bpy.types.Camera): + section.matrix_world = from_obj.matrix_world @ Euler((radians(180.0), 0.0, 0.0), "XYZ").to_matrix().to_4x4() else: section.rotation_euler = Euler((radians(180.0), 0.0, 0.0), "XYZ") - section.location = context.scene.cursor.location + section.location = scene.cursor.location collection = bpy.data.collections.get("Sections") if not collection: collection = bpy.data.collections.new("Sections") - context.scene.collection.children.link(collection) + scene.collection.children.link(collection) collection.objects.link(section) return section - def has_section_override_node(self): - return bpy.data.node_groups.get("Section Override") + @classmethod + def add_section_plane(cls, context): + obj = cls.create_section_obj(context.active_object, context.scene) + if cls.get_section_tree() is not None: + cls.append_obj_to_section_override_node(obj) + else: + cls.create_section_compare_node() + cls.create_section_override_node(obj, context) + cls.add_default_material_if_none_exists(context) + cls.override_materials() - def create_section_compare_node(self): + @classmethod + def remove_all_section_planes(cls): + objs = [o for o in cls.get_sections_map().values() if o is not None] + cls.remove_section_planes(objs) + + @classmethod + def remove_section_planes(cls, objects): + sections_map = cls.get_sections_map() + for obj in objects: + tex_coords = next((n for n in sections_map if sections_map[n] == obj), None) + if tex_coords is not None: + cls.unplug(tex_coords) + sections_map.pop(tex_coords) + bpy.data.objects.remove(obj) + + @staticmethod + def create_section_compare_node(): group = bpy.data.node_groups.new("Section Compare", type="ShaderNodeTree") group_input = group.nodes.new(type="NodeGroupInput") group_input.location = 0, 50 @@ -112,7 +179,8 @@ class BIM_OT_add_section_plane(bpy.types.Operator): group.links.new(greater.outputs[0], multiply.inputs[1]) group.links.new(multiply.outputs[0], group_output.inputs[""]) - def create_section_override_node(self, obj, context): + @staticmethod + def create_section_override_node(obj, context): group = bpy.data.node_groups.new("Section Override", type="ShaderNodeTree") links = group.links nodes = group.nodes @@ -121,45 +189,53 @@ class BIM_OT_add_section_plane(bpy.types.Operator): group_output = nodes.new(type="NodeGroupOutput") group_output.location = 600, 250 + hide_mix = group.nodes.new(type="ShaderNodeMixShader") + hide_mix.name = "Hide Mix" + hide_mix.inputs[0].default_value = 0 + hide_mix.location = group_output.location - Vector((200, 0)) + backfacing_mix = nodes.new(type="ShaderNodeMixShader") - backfacing_mix.location = group_output.location - Vector((400, 350)) + backfacing_mix.location = group_output.location - Vector((600, 350)) backfacing = nodes.new(type="ShaderNodeNewGeometry") - backfacing.location = backfacing_mix.location + Vector((-200, 200)) - group_input.location = backfacing_mix.location - Vector((200, 50)) + backfacing.location = backfacing_mix.location + Vector((-400, 200)) + group_input.location = backfacing_mix.location - Vector((400, 50)) emission = nodes.new(type="ShaderNodeEmission") emission.inputs[0].default_value = list(context.scene.SectionProperties.section_plane_colour) + [1] - emission.location = backfacing_mix.location - Vector((200, 150)) + emission.location = backfacing_mix.location - Vector((400, 150)) transparent = nodes.new(type="ShaderNodeBsdfTransparent") - transparent.location = group_output.location - Vector((400, 100)) + transparent.location = group_output.location - Vector((600, 100)) section_mix = group.nodes.new(type="ShaderNodeMixShader") section_mix.name = "Section Mix" section_mix.inputs[0].default_value = 1 # Directly pass input shader when there is no cutaway - section_mix.location = group_output.location - Vector((200, 0)) + section_mix.location = group_output.location - Vector((400, 0)) cut_obj = nodes.new(type="ShaderNodeTexCoord") cut_obj.object = obj - cut_obj.location = group_output.location - Vector((800, 150)) + cut_obj.location = group_output.location - Vector((1000, 150)) section_compare = nodes.new(type="ShaderNodeGroup") section_compare.node_tree = bpy.data.node_groups.get("Section Compare") section_compare.name = "Last Section Compare" - section_compare.location = group_output.location - Vector((600, 0)) + section_compare.location = group_output.location - Vector((800, 0)) links.new(cut_obj.outputs["Object"], section_compare.inputs[1]) links.new(backfacing.outputs["Backfacing"], backfacing_mix.inputs[0]) links.new(group_input.outputs[""], backfacing_mix.inputs[1]) links.new(emission.outputs["Emission"], backfacing_mix.inputs[2]) links.new(section_compare.outputs[0], section_mix.inputs[0]) - links.new(transparent.outputs["BSDF"], section_mix.inputs[1]) - links.new(backfacing_mix.outputs["Shader"], section_mix.inputs[2]) - links.new(section_mix.outputs["Shader"], group_output.inputs[""]) + links.new(transparent.outputs[0], section_mix.inputs[1]) + links.new(backfacing_mix.outputs[0], section_mix.inputs[2]) + links.new(section_mix.outputs[0], hide_mix.inputs[1]) + links.new(group_input.outputs["Shader"], hide_mix.inputs[2]) + links.new(hide_mix.outputs[0], group_output.inputs[""]) - def append_obj_to_section_override_node(self, obj): - group = bpy.data.node_groups.get("Section Override") + @staticmethod + def append_obj_to_section_override_node(obj): + group = SectionCutawayManager.get_section_tree() try: last_section_node = next( n @@ -185,7 +261,8 @@ class BIM_OT_add_section_plane(bpy.types.Operator): section_compare.name = "Last Section Compare" - def add_default_material_if_none_exists(self, context): + @staticmethod + def add_default_material_if_none_exists(context): material = bpy.data.materials.get("Section Override") if not material: material = bpy.data.materials.new("Section Override") @@ -208,92 +285,74 @@ class BIM_OT_add_section_plane(bpy.types.Operator): else: obj.data.materials.append(material) - def override_materials(self): - override = bpy.data.node_groups.get("Section Override") - for material in bpy.data.materials: - material.use_nodes = True - if material.node_tree.nodes.get("Section Override"): - continue - material.blend_method = "HASHED" - material.shadow_method = "HASHED" - material_output = self.get_node(material.node_tree.nodes, "OUTPUT_MATERIAL") - if not material_output: - continue - from_socket = material_output.inputs[0].links[0].from_socket - section_override = material.node_tree.nodes.new(type="ShaderNodeGroup") - section_override.name = "Section Override" - section_override.node_tree = override - material.node_tree.links.new(from_socket, section_override.inputs[0]) - material.node_tree.links.new(section_override.outputs[0], material_output.inputs[0]) - def get_node(self, nodes, node_type): - for node in nodes: - if node.type == node_type: - return node +class BIM_OT_section_plane_refresh(Operator): + bl_idname = "bim.section_plane_refresh" + bl_label = "Refresh Section Cutaway Shader" + bl_options = {"REGISTER", "UNDO"} + + def execute(self, context): + update_visibility(None, context) + SectionCutawayManager.add_default_material_if_none_exists(context) + SectionCutawayManager.clean() + return {"FINISHED"} -class BIM_OT_remove_section_plane(bpy.types.Operator): - """Remove selected section plane. No effect if executed on a regular object""" +class BIM_OT_section_plane_add(Operator): + """Add a temporary empty object as a section cutaway. Cull all geometry rendering below the empty's local Z axis""" - bl_idname = "bim.remove_section_plane" + bl_idname = "bim.section_plane_add" + bl_label = "Add Temporary Section Cutaway" + bl_options = {"REGISTER", "UNDO"} + + def execute(self, context): + SectionCutawayManager.add_section_plane(context) + SectionCutawayManager.clean() + return {"FINISHED"} + + +class BIM_OT_section_plane_remove(Operator): + bl_idname = "bim.section_plane_remove" bl_label = "Remove Temporary Section Cutaway" bl_options = {"REGISTER", "UNDO"} + bl_description = "Remove section planes. No effect if executed on a regular object" + remove_all: BoolProperty(default=False, options={"HIDDEN"}) @classmethod def poll(cls, context): - return context.active_object and bpy.data.node_groups.get("Section Override") + return SectionCutawayManager.get_section_tree() is not None def execute(self, context): - name = context.active_object.name - section_override = bpy.data.node_groups.get("Section Override") - tex_coords = next( - ( - n - for n in section_override.nodes - if isinstance(n, bpy.types.ShaderNodeTexCoord) and n.object.name == name - ), - None, - ) - if tex_coords is not None: - section_compare = tex_coords.outputs["Object"].links[0].to_node - if section_compare.inputs[0].links: - previous_section_compare = section_compare.inputs[0].links[0].from_node - next_section_compare = section_compare.outputs[0].links[0].to_node - section_override.links.new(previous_section_compare.outputs[0], next_section_compare.inputs[0]) - self.offset_previous_nodes(section_compare, offset_x=200) - section_override.nodes.remove(section_compare) - section_override.nodes.remove(tex_coords) - bpy.data.objects.remove(context.active_object) - + if self.remove_all: + SectionCutawayManager.remove_all_section_planes() + else: + SectionCutawayManager.remove_section_planes(context.selected_objects) + SectionCutawayManager.clean() return {"FINISHED"} - def offset_previous_nodes(self, section_compare, offset_x=0, offset_y=0): - if section_compare.inputs[0].links: - previous_section_compare = section_compare.inputs[0].links[0].from_node - previous_section_compare.location += Vector((offset_x, offset_y)) - if previous_section_compare.inputs[1].links: - previous_section_compare.inputs[1].links[0].from_node.location += Vector((offset_x, offset_y)) - self.offset_previous_nodes(previous_section_compare, offset_x, offset_y) - def purge_all_section_data(self, context): - bpy.data.materials.remove(bpy.data.materials.get("Section Override")) - for material in bpy.data.materials: - if not material.node_tree: - continue - override = material.node_tree.nodes.get("Section Override") - if not override: - continue - material.node_tree.links.new( - override.inputs[0].links[0].from_socket, override.outputs[0].links[0].to_socket - ) - material.node_tree.nodes.remove(override) - bpy.data.node_groups.remove(bpy.data.node_groups.get("Section Override")) - bpy.data.node_groups.remove(bpy.data.node_groups.get("Section Compare")) - bpy.ops.object.delete({"selected_objects": [context.active_object]}) +def update_visibility(self, context): + tree = SectionCutawayManager.get_section_tree() + if tree: + node = tree.nodes.get("Hide Mix") + if node: + node.inputs[0].default_value = int(context.scene.SectionProperties.hide) + + +def update_section_color(self, context): + section_node_group = SectionCutawayManager.get_section_tree() + if section_node_group is None: + return + try: + emission_node = next(n for n in section_node_group.nodes if isinstance(n, bpy.types.ShaderNodeEmission)) + emission_node.inputs[0].default_value = list(self.section_plane_colour) + [1] + except StopIteration: + pass class SectionProperties(PropertyGroup): should_section_selected_objects: BoolProperty(name="Section Selected Objects", default=False) + hide: BoolProperty(default=False, name="Toggle", update=update_visibility) section_plane_colour: FloatVectorProperty( name="Temporary Section Cutaway Colour", subtype="COLOR", @@ -304,7 +363,7 @@ class SectionProperties(PropertyGroup): ) -class BIM_PT_section_plane(bpy.types.Panel): +class BIM_PT_section_plane(Panel): bl_label = "Temporary Section Cutaways" bl_idname = "BIM_PT_section_plane" bl_space_type = "VIEW_3D" @@ -316,30 +375,31 @@ class BIM_PT_section_plane(bpy.types.Panel): layout.use_property_split = True props = context.scene.SectionProperties - row = layout.row() - row.prop(props, "should_section_selected_objects") + layout.prop(props, "should_section_selected_objects", text="Only Selected", icon="RESTRICT_SELECT_OFF") + layout.prop(props, "section_plane_colour", text="Section Color") + layout.prop(props, "hide", icon="HIDE_ON" if props.hide else "HIDE_OFF") - row = layout.row() - row.prop(props, "section_plane_colour") - - row = layout.row(align=True) - row.operator("bim.add_section_plane") - row.operator("bim.remove_section_plane") + layout.operator("bim.section_plane_refresh", text="Refresh", icon="FILE_REFRESH") + layout.operator("bim.section_plane_add", text="Add Section Cutaway", icon="ADD") + layout.operator("bim.section_plane_remove", text="Remove Selected Sections", icon="REMOVE").remove_all = False + layout.operator("bim.section_plane_remove", text="Remove All Sections", icon="TRASH").remove_all = True def register(): bpy.utils.register_class(SectionProperties) - bpy.utils.register_class(BIM_OT_add_section_plane) - bpy.utils.register_class(BIM_OT_remove_section_plane) + bpy.utils.register_class(BIM_OT_section_plane_add) + bpy.utils.register_class(BIM_OT_section_plane_remove) bpy.utils.register_class(BIM_PT_section_plane) - bpy.types.Scene.SectionProperties = bpy.props.PointerProperty(type=SectionProperties) + bpy.utils.register_class(BIM_OT_section_plane_refresh) + bpy.types.Scene.SectionProperties = PointerProperty(type=SectionProperties) def unregister(): - bpy.utils.unregister_class(BIM_OT_add_section_plane) - bpy.utils.unregister_class(BIM_OT_remove_section_plane) + bpy.utils.unregister_class(BIM_OT_section_plane_add) + bpy.utils.unregister_class(BIM_OT_section_plane_remove) bpy.utils.unregister_class(BIM_PT_section_plane) bpy.utils.unregister_class(SectionProperties) + bpy.utils.unregister_class(BIM_OT_section_plane_refresh) del bpy.types.Scene.SectionProperties diff --git a/src/blenderbim/test/bim/feature/georeference.feature b/src/blenderbim/test/bim/feature/georeference.feature new file mode 100644 index 0000000000..85922285d6 --- /dev/null +++ b/src/blenderbim/test/bim/feature/georeference.feature @@ -0,0 +1,82 @@ +@georeference +Feature: Georeference + +Scenario: Add georeferencing + Given an empty IFC project + When I press "bim.add_georeferencing" + Then nothing happens + +Scenario: Enable editing georeferencing + Given an empty IFC project + And I press "bim.add_georeferencing" + When I press "bim.enable_editing_georeferencing" + Then nothing happens + +Scenario: Remove georeferencing + Given an empty IFC project + And I press "bim.add_georeferencing" + When I press "bim.remove_georeferencing" + Then nothing happens + +Scenario: Edit georeferencing + Given an empty IFC project + And I press "bim.add_georeferencing" + And I press "bim.enable_editing_georeferencing" + When I press "bim.edit_georeferencing" + Then nothing happens + +Scenario: Disable editing georeferencing + Given an empty IFC project + And I press "bim.add_georeferencing" + And I press "bim.enable_editing_georeferencing" + When I press "bim.disable_editing_georeferencing" + Then nothing happens + +Scenario: Set IFC grid north + Given an empty IFC project + And I press "bim.add_georeferencing" + And I press "bim.enable_editing_georeferencing" + When I press "bim.set_ifc_grid_north" + Then nothing happens + +Scenario: Set Blender grid north + Given an empty IFC project + And I press "bim.add_georeferencing" + And I press "bim.enable_editing_georeferencing" + And I press "bim.set_ifc_grid_north" + When I press "bim.set_blender_grid_north" + Then nothing happens + +Scenario: Get cursor location + Given an empty IFC project + When I press "bim.get_cursor_location" + Then nothing happens + +Scenario: Set cursor location + Given an empty IFC project + When I set "scene.BIMGeoreferenceProperties.coordinate_output" to "0,0,0" + And I press "bim.set_cursor_location" + Then nothing happens + +Scenario: Set IFC true north + Given an empty IFC project + When I press "bim.set_ifc_true_north" + Then nothing happens + +Scenario: Set Blender true north + Given an empty IFC project + And I press "bim.set_ifc_true_north" + When I press "bim.set_blender_true_north" + Then nothing happens + +Scenario: Convert local to global + Given an empty IFC project + When I set "scene.BIMGeoreferenceProperties.coordinate_input" to "0,0,0" + And I press "bim.convert_local_to_global" + Then "scene.BIMGeoreferenceProperties.coordinate_output" is "0.0,0.0,0.0" + +Scenario: Convert global to local + Given an empty IFC project + When I set "scene.BIMGeoreferenceProperties.coordinate_input" to "0,0,0" + And I press "bim.convert_global_to_local" + Then "scene.BIMGeoreferenceProperties.coordinate_output" is "0.0,0.0,0.0" diff --git a/src/blenderbim/test/bim/feature/material.feature b/src/blenderbim/test/bim/feature/material.feature index 125369586d..c3d89dbbb1 100644 --- a/src/blenderbim/test/bim/feature/material.feature +++ b/src/blenderbim/test/bim/feature/material.feature @@ -118,3 +118,18 @@ Scenario: Select by material And the variable "material" is "{ifc}.by_type('IfcMaterial')[0].id()" When I press "bim.select_by_material(material={material})" Then nothing happens + +Scenario: Expand material category + Given an empty IFC project + And I press "bim.load_materials" + And I press "bim.add_material(obj='')" + When I press "bim.expand_material_category(category='')" + Then nothing happens + +Scenario: Contract material category + Given an empty IFC project + And I press "bim.load_materials" + And I press "bim.add_material(obj='')" + And I press "bim.expand_material_category(category='')" + When I press "bim.contract_material_category(category='')" + Then nothing happens diff --git a/src/blenderbim/test/bim/feature/owner.feature b/src/blenderbim/test/bim/feature/owner.feature index 3e8f13513f..7852e2d70e 100644 --- a/src/blenderbim/test/bim/feature/owner.feature +++ b/src/blenderbim/test/bim/feature/owner.feature @@ -277,3 +277,30 @@ Scenario: Edit actor And I press "bim.enable_editing_actor(actor={actor})" When I press "bim.edit_actor" Then "scene.BIMOwnerProperties.active_actor_id" is "0" + +Scenario: Assign actor + Given an empty IFC project + And I press "bim.add_person" + And I press "bim.add_actor" + And I add a cube + And the object "Cube" is selected + And I set "scene.BIMRootProperties.ifc_class" to "IfcWall" + And I press "bim.assign_class" + And the variable "actor" is "{ifc}.by_type('IfcActor')[0].id()" + And the object "IfcWall/Cube" is selected + When I press "bim.assign_actor(actor={actor})" + Then nothing happens + +Scenario: Unassign actor + Given an empty IFC project + And I press "bim.add_person" + And I press "bim.add_actor" + And I add a cube + And the object "Cube" is selected + And I set "scene.BIMRootProperties.ifc_class" to "IfcWall" + And I press "bim.assign_class" + And the variable "actor" is "{ifc}.by_type('IfcActor')[0].id()" + And the object "IfcWall/Cube" is selected + And I press "bim.assign_actor(actor={actor})" + When I press "bim.unassign_actor(actor={actor})" + Then nothing happens diff --git a/src/blenderbim/test/bim/feature/project.feature b/src/blenderbim/test/bim/feature/project.feature index 189d244bd1..1fbddce925 100644 --- a/src/blenderbim/test/bim/feature/project.feature +++ b/src/blenderbim/test/bim/feature/project.feature @@ -269,16 +269,27 @@ Scenario: Load project elements - load with the spatial decomposition collection Scenario: Load project elements - manual offset of object placements Given an empty Blender session And I press "bim.load_project(filepath='{cwd}/test/files/manual-geolocation.ifc', is_advanced=True)" - When I set "scene.BIMProjectProperties.should_offset_model" to "True" - And I set "scene.BIMProjectProperties.model_offset_coordinates" to "-268388.5, -5774506.0, -21.899999618530273" + When I set "scene.BIMProjectProperties.false_origin" to "268388500, 5774506000, 21900" And I press "bim.load_project_elements" Then the object "IfcPlate/1780 x 270 PRECAST WALL" is at "0,0,0" +Scenario: Load project elements - manual offset of cartesian points + Given an empty Blender session + And I press "bim.load_project(filepath='{cwd}/test/files/manual-geolocation-coords.ifc', is_advanced=True)" + When I set "scene.BIMProjectProperties.false_origin" to "1990711,5971553,22700" + And I press "bim.load_project_elements" + Then the object "IfcBuildingElementProxy/NAME" is at "0,0,0" + Scenario: Load project elements - auto offset of object placements Given an empty Blender session When I press "bim.load_project(filepath='{cwd}/test/files/auto-geolocation.ifc')" Then the object "IfcPlate/1780 x 270 PRECAST WALL" is at "0,0,0" +Scenario: Load project elements - auto offset of cartesian points + Given an empty Blender session + When I press "bim.load_project(filepath='{cwd}/test/files/manual-geolocation-coords.ifc')" + Then the object "IfcBuildingElementProxy/NAME" is at "0,0,0" + Scenario: Unload project Given an empty Blender session When I press "bim.load_project(filepath='{cwd}/test/files/basic.ifc', is_advanced=True)" diff --git a/src/blenderbim/test/bim/feature/style.feature b/src/blenderbim/test/bim/feature/style.feature index 66ad775f2e..161c39d167 100644 --- a/src/blenderbim/test/bim/feature/style.feature +++ b/src/blenderbim/test/bim/feature/style.feature @@ -75,3 +75,13 @@ Scenario: Disable editing styles And I press "bim.load_styles(style_type='IfcSurfaceStyle')" When I press "bim.disable_editing_style" Then nothing happens + +Scenario: Select by style + Given an empty IFC project + And I add a cube + And I add a material + And I press "bim.add_style" + And I press "bim.load_styles(style_type='IfcSurfaceStyle')" + And the variable "style" is "{ifc}.by_type('IfcSurfaceStyle')[0].id()" + When I press "bim.select_by_style(style={style})" + Then nothing happens diff --git a/src/blenderbim/test/core/bootstrap.py b/src/blenderbim/test/core/bootstrap.py index d18f7e815c..686d23ab65 100644 --- a/src/blenderbim/test/core/bootstrap.py +++ b/src/blenderbim/test/core/bootstrap.py @@ -98,6 +98,13 @@ def geometry(): prophet.verify() +@pytest.fixture +def georeference(): + prophet = Prophecy(blenderbim.core.tool.Georeference) + yield prophet + prophet.verify() + + @pytest.fixture def library(): prophet = Prophecy(blenderbim.core.tool.Library) diff --git a/src/blenderbim/test/core/test_drawing.py b/src/blenderbim/test/core/test_drawing.py index a18d3fa140..3746379740 100644 --- a/src/blenderbim/test/core/test_drawing.py +++ b/src/blenderbim/test/core/test_drawing.py @@ -43,30 +43,30 @@ class TestEditText: subject.edit_text(ifc, drawing, obj="obj") -class TestEnableEditingTextProduct: +class TestEnableEditingAssignedProduct: def test_run(self, drawing): - drawing.enable_editing_text_product("obj").should_be_called() - drawing.import_text_product("obj").should_be_called() - subject.enable_editing_text_product(drawing, obj="obj") + drawing.enable_editing_assigned_product("obj").should_be_called() + drawing.import_assigned_product("obj").should_be_called() + subject.enable_editing_assigned_product(drawing, obj="obj") -class TestDisableEditingTextProduct: +class TestDisableEditingAssignedProduct: def test_run(self, drawing): - drawing.disable_editing_text_product("obj").should_be_called() - subject.disable_editing_text_product(drawing, obj="obj") + drawing.disable_editing_assigned_product("obj").should_be_called() + subject.disable_editing_assigned_product(drawing, obj="obj") -class TestEditTextProduct: +class TestEditAssignedProduct: def test_run(self, ifc, drawing): ifc.get_entity("obj").should_be_called().will_return("element") - drawing.get_text_product("element").should_be_called().will_return("existing_product") + drawing.get_assigned_product("element").should_be_called().will_return("existing_product") ifc.run( "drawing.unassign_product", relating_product="existing_product", related_object="element" ).should_be_called() ifc.run("drawing.assign_product", relating_product="product", related_object="element").should_be_called() drawing.update_text_value("obj").should_be_called() - drawing.disable_editing_text_product("obj").should_be_called() - subject.edit_text_product(ifc, drawing, obj="obj", product="product") + drawing.disable_editing_assigned_product("obj").should_be_called() + subject.edit_assigned_product(ifc, drawing, obj="obj", product="product") class TestLoadSheets: @@ -114,18 +114,83 @@ class TestAddSheet: class TestOpenSheet: def test_run(self, drawing): - drawing.get_sheet_filename("sheet").should_be_called().will_return("filename") - drawing.open_svg("filename").should_be_called() + drawing.get_document_uri("sheet").should_be_called().will_return("uri") + drawing.open_svg("uri").should_be_called() subject.open_sheet(drawing, sheet="sheet") class TestRemoveSheet: def test_run(self, ifc, drawing): - ifc.run("document.remove_document", document="sheet").should_be_called() + ifc.run("document.remove_information", information="sheet").should_be_called() drawing.import_sheets().should_be_called() subject.remove_sheet(ifc, drawing, sheet="sheet") +class TestLoadSchedules: + def test_run(self, drawing): + drawing.import_schedules().should_be_called() + drawing.enable_editing_schedules().should_be_called() + subject.load_schedules(drawing) + + +class TestDisableEditingSchedules: + def test_run(self, drawing): + drawing.disable_editing_schedules().should_be_called() + subject.disable_editing_schedules(drawing) + + +class TestAddSchedule: + def test_run(self, ifc, drawing): + ifc.run("document.add_information").should_be_called().will_return("schedule") + ifc.run("document.add_reference", information="schedule").should_be_called().will_return("reference") + ifc.get_schema().should_be_called().will_return("IFC4") + ifc.run( + "document.edit_information", + information="schedule", + attributes={"Identification": "X", "Name": "UNTITLED", "Scope": "SCHEDULE", "Location": "uri"}, + ).should_be_called() + drawing.import_schedules().should_be_called() + subject.add_schedule(ifc, drawing, uri="uri") + + def test_using_a_document_id_in_ifc2x3(self, ifc, drawing): + ifc.run("document.add_information").should_be_called().will_return("schedule") + ifc.run("document.add_reference", information="schedule").should_be_called().will_return("reference") + ifc.get_schema().should_be_called().will_return("IFC2X3") + ifc.run( + "document.edit_information", + information="schedule", + attributes={"DocumentId": "X", "Name": "UNTITLED", "Scope": "SCHEDULE"}, + ).should_be_called() + ifc.run("document.edit_reference", reference="reference", attributes={"Location": "uri"}).should_be_called() + drawing.import_schedules().should_be_called() + subject.add_schedule(ifc, drawing, uri="uri") + + +class TestRemoveSchedule: + def test_run(self, ifc, drawing): + ifc.run("document.remove_information", information="schedule").should_be_called() + drawing.import_schedules().should_be_called() + subject.remove_schedule(ifc, drawing, schedule="schedule") + + +class TestOpenSchedule: + def test_run(self, drawing): + drawing.get_schedule_location("schedule").should_be_called().will_return("uri") + drawing.open_spreadsheet("uri").should_be_called() + subject.open_schedule(drawing, schedule="schedule") + + +class TestUpdateScheduleName: + def test_do_not_update_if_name_unchanged(self, ifc, drawing): + drawing.get_name("schedule").should_be_called().will_return("name") + subject.update_schedule_name(ifc, drawing, schedule="schedule", name="name") + + def test_run(self, ifc, drawing): + drawing.get_name("schedule").should_be_called().will_return("oldname") + ifc.run("document.edit_information", information="schedule", attributes={"Name": "name"}).should_be_called() + subject.update_schedule_name(ifc, drawing, schedule="schedule", name="name") + + class TestLoadDrawings: def test_run(self, drawing): drawing.import_drawings().should_be_called() @@ -162,7 +227,17 @@ class TestAddDrawing: collector.assign("obj").should_be_called() ifc.run("pset.add_pset", product="element", name="EPset_Drawing").should_be_called().will_return("pset") ifc.run( - "pset.edit_pset", pset="pset", properties={"TargetView": "target_view", "Scale": "1/100"} + "pset.edit_pset", + pset="pset", + properties={ + "TargetView": "target_view", + "Scale": "1/100", + "HumanScale": "1:100", + "HasUnderlay": False, + "HasLinework": True, + "HasAnnotation": True, + "GlobalReferencing": True, + }, ).should_be_called() drawing.import_drawings().should_be_called() subject.add_drawing(ifc, collector, drawing, target_view="target_view", location_hint="location_hint") @@ -206,7 +281,7 @@ class TestAddAnnotation: drawing.show_decorations().should_be_called() drawing.get_drawing_target_view("drawing").should_be_called().will_return("target_view") drawing.get_annotation_context("target_view").should_be_called().will_return("context") - drawing.create_annotation_object("object_type").should_be_called().will_return("obj") + drawing.create_annotation_object("drawing", "object_type").should_be_called().will_return("obj") ifc.get_entity("obj").should_be_called().will_return(None) drawing.get_ifc_representation_class("object_type").should_be_called().will_return("ifc_representation_class") drawing.run_root_assign_class( diff --git a/src/blenderbim/test/core/test_geometry.py b/src/blenderbim/test/core/test_geometry.py index bb3da2f854..a22267cf8f 100644 --- a/src/blenderbim/test/core/test_geometry.py +++ b/src/blenderbim/test/core/test_geometry.py @@ -60,8 +60,8 @@ class TestAddRepresentation: profile_set_usage="profile_set_usage", ).should_be_called().will_return("representation") - # Styles are relevant for meshes with faces only - geometry.does_object_have_mesh_with_faces("obj").should_be_called().will_return(True) + # Styles are relevant for body representations only (as a simplification) + geometry.is_body_representation("representation").should_be_called().will_return(True) # Add styles geometry.get_object_materials_without_styles("obj").should_be_called().will_return(["material"]) @@ -102,7 +102,7 @@ class TestAddRepresentation: == "representation" ) - def test_not_handling_styles_if_representation_has_no_faces(self, ifc, geometry, style, surveyor): + def test_not_handling_styles_if_not_a_body_representation(self, ifc, geometry, style, surveyor): TestEditObjectPlacement.predict(self, ifc, geometry, surveyor) # Add representation @@ -126,8 +126,8 @@ class TestAddRepresentation: profile_set_usage="profile_set_usage", ).should_be_called().will_return("representation") - # Styles are relevant for meshes with faces only - geometry.does_object_have_mesh_with_faces("obj").should_be_called().will_return(False) + # Styles are relevant for body representations only (as a simplification) + geometry.is_body_representation("representation").should_be_called().will_return(False) # Assign representation to product ifc.run("geometry.assign_representation", product="element", representation="representation").should_be_called() diff --git a/src/blenderbim/test/core/test_georeference.py b/src/blenderbim/test/core/test_georeference.py new file mode 100644 index 0000000000..957e43b232 --- /dev/null +++ b/src/blenderbim/test/core/test_georeference.py @@ -0,0 +1,114 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2022 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + +import blenderbim.core.georeference as subject +from test.core.bootstrap import ifc, georeference + + +class TestAddGeoreferencing: + def test_run(self, ifc): + ifc.run("georeference.add_georeferencing").should_be_called() + subject.add_georeferencing(ifc) + + +class TestEnableGeoreferencing: + def test_run(self, georeference): + georeference.import_projected_crs().should_be_called() + georeference.import_map_conversion().should_be_called() + georeference.import_true_north().should_be_called() + georeference.enable_editing().should_be_called() + subject.enable_editing_georeferencing(georeference) + + +class TestRemoveGeoreferencing: + def test_run(self, ifc): + ifc.run("georeference.remove_georeferencing").should_be_called() + subject.remove_georeferencing(ifc) + + +class TestEditGeoreferencing: + def test_run(self, ifc, georeference): + georeference.get_projected_crs_attributes().should_be_called().will_return("projected_crs_attributes") + georeference.get_map_conversion_attributes().should_be_called().will_return("map_conversion_attributes") + georeference.get_true_north_attributes().should_be_called().will_return("true_north_attributes") + ifc.run( + "georeference.edit_georeferencing", + projected_crs="projected_crs_attributes", + map_conversion="map_conversion_attributes", + true_north="true_north_attributes", + ).should_be_called() + georeference.disable_editing().should_be_called() + subject.edit_georeferencing(ifc, georeference) + + +class TestSetIfcGridNorth: + def test_run(self, georeference): + georeference.set_ifc_grid_north().should_be_called() + subject.set_ifc_grid_north(georeference) + + +class TestSetBlenderGridNorth: + def test_run(self, georeference): + georeference.set_blender_grid_north().should_be_called() + subject.set_blender_grid_north(georeference) + + +class TestSetIfcTrueNorth: + def test_run(self, georeference): + georeference.set_ifc_true_north().should_be_called() + subject.set_ifc_true_north(georeference) + + +class TestSetBlenderTrueNorth: + def test_run(self, georeference): + georeference.set_blender_true_north().should_be_called() + subject.set_blender_true_north(georeference) + + +class TestGetCursorLocation: + def test_run(self, georeference): + georeference.get_cursor_location().should_be_called().will_return("coordinates") + georeference.set_coordinates("input", "coordinates").should_be_called() + subject.get_cursor_location(georeference) + + +class TestSetCursorLocation: + def test_run(self, georeference): + georeference.get_coordinates("output").should_be_called().will_return("coordinates") + georeference.set_cursor_location("coordinates").should_be_called() + subject.set_cursor_location(georeference) + + +class TestConvertLocalToGlobal: + def test_run(self, georeference): + georeference.get_coordinates("input").should_be_called().will_return("coordinates") + georeference.get_map_conversion().should_be_called().will_return("map_conversion") + georeference.xyz2enh("coordinates", "map_conversion").should_be_called().will_return("enh") + georeference.set_coordinates("output", "enh").should_be_called() + georeference.set_cursor_location("enh").should_be_called() + subject.convert_local_to_global(georeference) + + +class TestConvertGlobalToLocal: + def test_run(self, georeference): + georeference.get_coordinates("input").should_be_called().will_return("coordinates") + georeference.get_map_conversion().should_be_called().will_return("map_conversion") + georeference.enh2xyz("coordinates", "map_conversion").should_be_called().will_return("xyz") + georeference.set_coordinates("output", "xyz").should_be_called() + georeference.set_cursor_location("xyz").should_be_called() + subject.convert_global_to_local(georeference) diff --git a/src/blenderbim/test/core/test_owner.py b/src/blenderbim/test/core/test_owner.py index 91e23281c6..0587e3b8cd 100644 --- a/src/blenderbim/test/core/test_owner.py +++ b/src/blenderbim/test/core/test_owner.py @@ -259,3 +259,15 @@ class TestEditActor: ifc.run("owner.edit_actor", actor="actor", attributes="attributes").should_be_called() owner.clear_actor().should_be_called() subject.edit_actor(ifc, owner) + + +class TestAssignActor: + def test_run(self, ifc, owner): + ifc.run("owner.assign_actor", relating_actor="actor", related_object="element").should_be_called() + subject.assign_actor(ifc, actor="actor", element="element") + + +class TestUnassignActor: + def test_run(self, ifc, owner): + ifc.run("owner.unassign_actor", relating_actor="actor", related_object="element").should_be_called() + subject.unassign_actor(ifc, actor="actor", element="element") diff --git a/src/blenderbim/test/core/test_root.py b/src/blenderbim/test/core/test_root.py index 79abb8bcf6..1e37e1d926 100644 --- a/src/blenderbim/test/core/test_root.py +++ b/src/blenderbim/test/core/test_root.py @@ -28,6 +28,7 @@ class TestCopyClass: def test_copy_with_new_geometry_derived_from_the_type(self, ifc, collector, root): ifc.get_entity("obj").should_be_called().will_return("original_element") + root.get_object_representation("obj").should_be_called().will_return("representation") ifc.run("root.copy_class", product="original_element").should_be_called().will_return("element") ifc.link("element", "obj").should_be_called() root.get_element_type("element").should_be_called().will_return("type") @@ -41,12 +42,12 @@ class TestCopyClass: def test_copy_with_new_geometry_added_afresh_for_speed(self, ifc, collector, geometry, root): ifc.get_entity("obj").should_be_called().will_return("original_element") + root.get_object_representation("obj").should_be_called().will_return("representation") ifc.run("root.copy_class", product="original_element").should_be_called().will_return("element") ifc.link("element", "obj").should_be_called() root.get_element_type("element").should_be_called().will_return("type") root.does_type_have_representations("type").should_be_called().will_return(False) - root.get_object_representation("obj").should_be_called().will_return("representation") root.get_representation_context("representation").should_be_called().will_return("context") geometry.get_ifc_representation_class("element", "representation").should_be_called().will_return( "ifc_representation_class" @@ -64,17 +65,18 @@ class TestCopyClass: def test_copy_with_no_new_geometry(self, ifc, collector, geometry, root): ifc.get_entity("obj").should_be_called().will_return("original_element") + root.get_object_representation("obj").should_be_called().will_return(None) ifc.run("root.copy_class", product="original_element").should_be_called().will_return("element") ifc.link("element", "obj").should_be_called() root.get_element_type("element").should_be_called().will_return("type") root.does_type_have_representations("type").should_be_called().will_return(False) - root.get_object_representation("obj").should_be_called().will_return(None) collector.assign("obj").should_be_called() root.is_opening_element("element").should_be_called().will_return(False) subject.copy_class(ifc, collector, geometry, root, obj="obj") def test_copied_openings_have_dynamic_voids_added(self, ifc, collector, root): ifc.get_entity("obj").should_be_called().will_return("original_element") + root.get_object_representation("obj").should_be_called().will_return(None) ifc.run("root.copy_class", product="original_element").should_be_called().will_return("element") ifc.link("element", "obj").should_be_called() root.get_element_type("element").should_be_called().will_return("type") diff --git a/src/blenderbim/test/core/test_system.py b/src/blenderbim/test/core/test_system.py index 2cf955bf4b..01c4171def 100644 --- a/src/blenderbim/test/core/test_system.py +++ b/src/blenderbim/test/core/test_system.py @@ -91,30 +91,73 @@ class TestSelectSystemProducts: class TestShowPorts: - def test_run(self, system): + def test_run(self, ifc, system): + ifc.get_object("element").should_be_called().will_return("obj") + ifc.is_moved("obj").should_be_called().will_return(False) + system.get_ports("element").should_be_called().will_return(["port"]) - system.load_ports(["port"]).should_be_called() + system.load_ports("element", ["port"]).should_be_called() system.select_elements(["port"]).should_be_called() - subject.show_ports(system, element="element") + subject.show_ports(ifc, system, element="element") + + def test_syncing_locations_if_objects_moved_prior_to_showing_ports(self, ifc, system): + ifc.get_object("element").should_be_called().will_return("obj") + ifc.is_moved("obj").should_be_called().will_return(True) + system.run_geometry_edit_object_placement(obj="obj").should_be_called() + + system.get_ports("element").should_be_called().will_return(["port"]) + system.load_ports("element", ["port"]).should_be_called() + system.select_elements(["port"]).should_be_called() + subject.show_ports(ifc, system, element="element") class TestHidePorts: - def test_run(self, system): + def test_run(self, ifc, system): + ifc.get_object("element").should_be_called().will_return("obj") + ifc.is_moved("obj").should_be_called().will_return(False) + system.get_ports("element").should_be_called().will_return(["port"]) + + ifc.get_object("port").should_be_called().will_return("port_obj") + ifc.is_moved("port_obj").should_be_called().will_return(True) + system.run_geometry_edit_object_placement(obj="port_obj").should_be_called() + system.delete_element_objects(["port"]).should_be_called() - subject.hide_ports(system, element="element") + subject.hide_ports(ifc, system, element="element") + + + def test_syncing_locations_if_objects_moved_prior_to_hiding_ports(self, ifc, system): + ifc.get_object("element").should_be_called().will_return("obj") + ifc.is_moved("obj").should_be_called().will_return(True) + system.run_geometry_edit_object_placement(obj="obj").should_be_called() + + system.get_ports("element").should_be_called().will_return(["port"]) + + ifc.get_object("port").should_be_called().will_return("port_obj") + ifc.is_moved("port_obj").should_be_called().will_return(True) + system.run_geometry_edit_object_placement(obj="port_obj").should_be_called() + + system.delete_element_objects(["port"]).should_be_called() + subject.hide_ports(ifc, system, element="element") class TestAddPort: def test_run(self, ifc, system): system.get_ports("element").should_be_called().will_return(["port"]) - system.load_ports(["port"]).should_be_called() + system.load_ports("element", ["port"]).should_be_called() system.create_empty_at_cursor_with_element_orientation("element").should_be_called().will_return("obj") system.run_root_assign_class(obj="obj", ifc_class="IfcDistributionPort").should_be_called().will_return("port") ifc.run("system.assign_port", element="element", port="port").should_be_called() subject.add_port(ifc, system, element="element") +class TestRemovePort: + def test_run(self, ifc, system): + system.delete_element_objects(["port"]).should_be_called() + ifc.run("root.remove_product", product="port").should_be_called() + subject.remove_port(ifc, system, port="port") + + class TestSetFlowDirection: def test_run(self, ifc, system): system.get_connected_port("port").should_be_called().will_return("port2") diff --git a/src/blenderbim/test/core/test_unit.py b/src/blenderbim/test/core/test_unit.py index 5c7143ceaa..3e77d582a8 100644 --- a/src/blenderbim/test/core/test_unit.py +++ b/src/blenderbim/test/core/test_unit.py @@ -142,7 +142,7 @@ class TestDisableEditingUnit: class TestEditUnit: def test_editing_monetary_units(self, ifc, unit): unit.export_unit_attributes().should_be_called().will_return("attributes") - unit.get_unit_class("unit").should_be_called().will_return("IfcMonetaryUnit") + unit.is_unit_class("unit", "IfcMonetaryUnit").should_be_called().will_return(True) ifc.run("unit.edit_monetary_unit", unit="unit", attributes="attributes").should_be_called() unit.import_units().should_be_called() unit.clear_active_unit().should_be_called() @@ -150,7 +150,8 @@ class TestEditUnit: def test_editing_derived_units(self, ifc, unit): unit.export_unit_attributes().should_be_called().will_return("attributes") - unit.get_unit_class("unit").should_be_called().will_return("IfcDerivedUnit") + unit.is_unit_class("unit", "IfcMonetaryUnit").should_be_called().will_return(False) + unit.is_unit_class("unit", "IfcDerivedUnit").should_be_called().will_return(True) ifc.run("unit.edit_derived_unit", unit="unit", attributes="attributes").should_be_called() unit.import_units().should_be_called() unit.clear_active_unit().should_be_called() @@ -158,7 +159,9 @@ class TestEditUnit: def test_editing_named_units(self, ifc, unit): unit.export_unit_attributes().should_be_called().will_return("attributes") - unit.get_unit_class("unit").should_be_called().will_return("IfcNamedUnit") + unit.is_unit_class("unit", "IfcMonetaryUnit").should_be_called().will_return(False) + unit.is_unit_class("unit", "IfcDerivedUnit").should_be_called().will_return(False) + unit.is_unit_class("unit", "IfcNamedUnit").should_be_called().will_return(True) ifc.run("unit.edit_named_unit", unit="unit", attributes="attributes").should_be_called() unit.import_units().should_be_called() unit.clear_active_unit().should_be_called() diff --git a/src/blenderbim/test/files/manual-geolocation-coords.ifc b/src/blenderbim/test/files/manual-geolocation-coords.ifc new file mode 100644 index 0000000000..c0d843baf7 --- /dev/null +++ b/src/blenderbim/test/files/manual-geolocation-coords.ifc @@ -0,0 +1,122 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION ((''), '2;1'); +FILE_NAME ('', '2022-04-06T07:53:12', (''), (''), 'Xbim File Processor version 4.0.0.0', 'Xbim version 4.0.0.0', ''); +FILE_SCHEMA (('IFC2X3')); +ENDSEC; +DATA; +#1=IFCBUILDINGELEMENTPROXY('0WxtKqfTD7uRQVvprDAkUF',#13,'NAME','PourObject','PourObject',#14,#26,'ID20ef7534-a5d3-47e1-b69f-e73d4d2ae78f',.ELEMENT.); +#2=IFCOWNERHISTORY(#5,#6,$,.ADDED.,$,$,$,0); +#3=IFCPERSON($,'Davies','Tim',$,$,$,$,$); +#4=IFCORGANIZATION($,'ORG1',$,$,$); +#5=IFCPERSONANDORGANIZATION(#3,#4,$); +#7=IFCORGANIZATION($,'ORG2',$,$,$); +#6=IFCAPPLICATION(#7,'1.1','IfcTool','1234567890'); +#8=IFCOWNERHISTORY(#9,#12,$,.NOCHANGE.,$,$,$,1629180000); +#9=IFCPERSONANDORGANIZATION(#10,#11,$); +#10=IFCPERSON('PERSON_NAME','Undefined',$,$,$,$,$,$); +#11=IFCORGANIZATION($,'Trimble Solutions Corporation',$,$,$); +#12=IFCAPPLICATION(#11,'VERSION','APPLICATION','Multi material modeling'); +#13=IFCOWNERHISTORY(#5,#6,$,.MODIFIED.,$,$,$,0); +#14=IFCLOCALPLACEMENT(#15,#24); +#15=IFCLOCALPLACEMENT(#16,#23); +#16=IFCLOCALPLACEMENT(#17,#22); +#17=IFCLOCALPLACEMENT($,#18); +#18=IFCAXIS2PLACEMENT3D(#19,#20,#21); +#19=IFCCARTESIANPOINT((0.,0.,0.)); +#20=IFCDIRECTION((0.,0.,1.)); +#21=IFCDIRECTION((1.,0.,0.)); +#22=IFCAXIS2PLACEMENT3D(#19,#20,#21); +#23=IFCAXIS2PLACEMENT3D(#19,#20,#21); +#24=IFCAXIS2PLACEMENT3D(#19,#25,#21); +#25=IFCDIRECTION((0.,1.,0.)); +#26=IFCPRODUCTDEFINITIONSHAPE($,$,(#27)); +#27=IFCSHAPEREPRESENTATION(#28,'Body','Brep',(#32)); +#28=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#29,$,.MODEL_VIEW.,$); +#29=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#30,#31); +#30=IFCAXIS2PLACEMENT3D(#19,#20,#21); +#31=IFCDIRECTION((0.,1.)); +#32=IFCFACETEDBREP(#33); +#33=IFCCLOSEDSHELL((#34,#41,#46,#51,#54,#57)); +#34=IFCFACE((#35)); +#35=IFCFACEOUTERBOUND(#36,.T.); +#36=IFCPOLYLOOP((#37,#38,#39,#40)); +#37=IFCCARTESIANPOINT((1990711.,-22699.9999999999,5971553.)); +#38=IFCCARTESIANPOINT((1990711.,-24899.9999999999,5971553.)); +#39=IFCCARTESIANPOINT((1989711.,-24899.9999999999,5971553.)); +#40=IFCCARTESIANPOINT((1989711.,-22699.9999999999,5971553.)); +#41=IFCFACE((#42)); +#42=IFCFACEOUTERBOUND(#43,.T.); +#43=IFCPOLYLOOP((#38,#44,#45,#39)); +#44=IFCCARTESIANPOINT((1990711.,-24899.9999999999,5972053.)); +#45=IFCCARTESIANPOINT((1989711.,-24899.9999999999,5972053.)); +#46=IFCFACE((#47)); +#47=IFCFACEOUTERBOUND(#48,.T.); +#48=IFCPOLYLOOP((#44,#49,#50,#45)); +#49=IFCCARTESIANPOINT((1990711.,-22699.9999999999,5972053.)); +#50=IFCCARTESIANPOINT((1989711.,-22699.9999999999,5972053.)); +#51=IFCFACE((#52)); +#52=IFCFACEOUTERBOUND(#53,.T.); +#53=IFCPOLYLOOP((#49,#37,#40,#50)); +#54=IFCFACE((#55)); +#55=IFCFACEOUTERBOUND(#56,.T.); +#56=IFCPOLYLOOP((#45,#50,#40,#39)); +#57=IFCFACE((#58)); +#58=IFCFACEOUTERBOUND(#59,.T.); +#59=IFCPOLYLOOP((#49,#44,#38,#37)); +#60=IFCSTYLEDITEM(#32,(#61),$); +#61=IFCPRESENTATIONSTYLEASSIGNMENT((#62)); +#62=IFCSURFACESTYLE($,.BOTH.,(#63)); +#63=IFCSURFACESTYLERENDERING(#64,0.,$,$,$,$,$,$,.NOTDEFINED.); +#64=IFCCOLOURRGB($,0.333333333333333,1.,0.333333333333333); +#65=IFCRELAGGREGATES('3dUdx5Kov6leXMbv_Evj3F',#13,$,$,#72,(#74)); +#66=IFCOWNERHISTORY(#67,#70,$,.ADDED.,$,$,$,1648232845); +#67=IFCPERSONANDORGANIZATION(#68,#69,$); +#68=IFCPERSON($,'',$,$,$,$,$,$); +#69=IFCORGANIZATION($,'Simplebim',$,$,$); +#70=IFCAPPLICATION(#71,'Not Defined','Not Defined','Not Defined'); +#71=IFCORGANIZATION($,'Datacubist',$,$,$); +#72=IFCBUILDING('1cVfOSwd0DwZRaHgXu8a_f',#13,'Undefined',$,'',#16,$,$,.ELEMENT.,$,$,$); +#73=IFCOWNERHISTORY(#9,#12,$,.NOCHANGE.,$,$,$,1648135363); +#74=IFCBUILDINGSTOREY('1PRG1GisebkPvVjTc0dKhA',#13,'Undefined',$,'',#15,$,$,.ELEMENT.,0.); +#75=IFCRELAGGREGATES('0mzX8SC9TE2x9h5brYnb63',#13,$,$,#76,(#72)); +#76=IFCSITE('2AlxJCEVKnYUYG6VRdFCmy',#13,'SITE_NAME',$,'',#17,$,$,.ELEMENT.,(0,0,0),(0,0,0),$,$,$); +#77=IFCRELAGGREGATES('10$gKGL8H5nRoXtsiwnv6O',#13,$,$,#78,(#76)); +#78=IFCPROJECT('2tm8iIrI_$r8NRzOY_fHvI',#13,'PROJECT',$,$,$,$,(#29,#79),#81); +#79=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Plan',3,1.E-05,#80,$); +#80=IFCAXIS2PLACEMENT3D(#19,#20,#21); +#81=IFCUNITASSIGNMENT((#82,#83,#84,#85,#86,#87,#88,#89,#90,#91,#92,#93,#94,#98,#101,#106)); +#82=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#83=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#84=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.); +#85=IFCSIUNIT(*,.MASSUNIT.,.KILO.,.GRAM.); +#86=IFCSIUNIT(*,.POWERUNIT.,$,.WATT.); +#87=IFCSIUNIT(*,.PRESSUREUNIT.,.KILO.,.PASCAL.); +#88=IFCSIUNIT(*,.FORCEUNIT.,.KILO.,.NEWTON.); +#89=IFCSIUNIT(*,.ELECTRICVOLTAGEUNIT.,$,.VOLT.); +#90=IFCSIUNIT(*,.ELECTRICCURRENTUNIT.,$,.AMPERE.); +#91=IFCSIUNIT(*,.THERMODYNAMICTEMPERATUREUNIT.,$,.DEGREE_CELSIUS.); +#92=IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.); +#93=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#94=IFCDERIVEDUNIT((#95,#97),.LINEARVELOCITYUNIT.,$); +#95=IFCDERIVEDUNITELEMENT(#96,1); +#96=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#97=IFCDERIVEDUNITELEMENT(#92,-1); +#98=IFCDERIVEDUNIT((#99,#100),.VOLUMETRICFLOWRATEUNIT.,$); +#99=IFCDERIVEDUNITELEMENT(#93,1); +#100=IFCDERIVEDUNITELEMENT(#92,-1); +#101=IFCDERIVEDUNIT((#102,#103,#105),.THERMALTRANSMITTANCEUNIT.,$); +#102=IFCDERIVEDUNITELEMENT(#86,1); +#103=IFCDERIVEDUNITELEMENT(#104,-1); +#104=IFCSIUNIT(*,.THERMODYNAMICTEMPERATUREUNIT.,$,.KELVIN.); +#105=IFCDERIVEDUNITELEMENT(#83,-1); +#106=IFCDERIVEDUNIT((#107),.SOUNDPRESSUREUNIT.,$); +#107=IFCDERIVEDUNITELEMENT(#108,1); +#108=IFCSIUNIT(*,.PRESSUREUNIT.,$,.PASCAL.); +#109=IFCRELCONTAINEDINSPATIALSTRUCTURE('2et5jeJgD1OBJkFAZevcaR',#13,$,$,(#1),#74); +#159=IFCRELDEFINESBYTYPE('0l7quQJkD3hv69HoK6sZxD',#13,$,$,(#1),#160); +#160=IFCBUILDINGELEMENTPROXYTYPE('0wvZ60EKXBihi$_raqzBCm',#13,'PourObject',$,$,$,$,$,$,.NOTDEFINED.); +#161=IFCRELASSOCIATESMATERIAL('1RfoofYsj288$ePu$MZZC_',#13,$,$,(#1),#162); +#162=IFCMATERIAL('Undefined/C40/50'); +ENDSEC; +END-ISO-10303-21; diff --git a/src/blenderbim/test/tool/test_drawing.py b/src/blenderbim/test/tool/test_drawing.py index 91b96f46dd..64048c8192 100644 --- a/src/blenderbim/test/tool/test_drawing.py +++ b/src/blenderbim/test/tool/test_drawing.py @@ -51,7 +51,7 @@ class TestCreateCamera(NewFile): class TestCreateSvgSheet(NewFile): def test_run(self): ifc = ifcopenshell.file() - document = ifc.createIfcDocumentInformation(Identification="X", Name="FOOBAR") + document = ifc.createIfcDocumentInformation(Identification="X", Name="FOOBAR", Scope="DOCUMENTATION") subject.create_svg_sheet(document, "A1") assert os.path.isfile(os.path.join(bpy.context.scene.BIMProperties.data_dir, "sheets", "X - FOOBAR.svg")) @@ -87,6 +87,13 @@ class TestDisableEditingDrawings(NewFile): assert bpy.context.scene.DocProperties.is_editing_drawings == False +class TestDisableEditingSchedules(NewFile): + def test_run(self): + bpy.context.scene.DocProperties.is_editing_schedules = True + subject.disable_editing_schedules() + assert bpy.context.scene.DocProperties.is_editing_schedules == False + + class TestDisableEditingSheets(NewFile): def test_run(self): bpy.context.scene.DocProperties.is_editing_sheets = True @@ -102,12 +109,12 @@ class TestDisableEditingText(NewFile): assert obj.BIMTextProperties.is_editing == False -class TestDisableEditingTextProduct(NewFile): +class TestDisableEditingAssignedProduct(NewFile): def test_run(self): obj = bpy.data.objects.new("Object", None) - obj.BIMTextProperties.is_editing_product = True - subject.disable_editing_text_product(obj) - assert obj.BIMTextProperties.is_editing_product == False + obj.BIMAssignedProductProperties.is_editing_product = True + subject.disable_editing_assigned_product(obj) + assert obj.BIMAssignedProductProperties.is_editing_product == False class TestEnableEditing(NewFile): @@ -125,6 +132,13 @@ class TestEnableEditingDrawings(NewFile): assert bpy.context.scene.DocProperties.is_editing_drawings == True +class TestEnableEditingSchedules(NewFile): + def test_run(self): + bpy.context.scene.DocProperties.is_editing_schedules = False + subject.enable_editing_schedules() + assert bpy.context.scene.DocProperties.is_editing_schedules == True + + class TestEnableEditingSheets(NewFile): def test_run(self): bpy.context.scene.DocProperties.is_editing_sheets = False @@ -139,11 +153,11 @@ class TestEnableEditingText(NewFile): assert obj.BIMTextProperties.is_editing == True -class TestEnableEditingTextProduct(NewFile): +class TestEnableEditingAssignedProduct(NewFile): def test_run(self): obj = bpy.data.objects.new("Object", None) - subject.enable_editing_text_product(obj) - assert obj.BIMTextProperties.is_editing_product == True + subject.enable_editing_assigned_product(obj) + assert obj.BIMAssignedProductProperties.is_editing_product == True class TestEnsureUniqueDrawingName(NewFile): @@ -207,6 +221,26 @@ class TestGetBodyContext(NewFile): assert subject.get_body_context() == context +class TestGetDocumentUri(NewFile): + def test_get_sheet_uri(self): + ifc = ifcopenshell.file() + document = ifc.createIfcDocumentInformation(Identification="X", Name="FOOBAR", Scope="DOCUMENTATION") + result = subject.get_document_uri(document) + assert result == os.path.join(bpy.context.scene.BIMProperties.data_dir, "sheets", "X - FOOBAR.svg") + + def test_get_schedule_uri(self): + ifc = ifcopenshell.file() + document = ifc.createIfcDocumentInformation(Identification="X", Name="FOOBAR", Scope="SCHEDULE") + result = subject.get_document_uri(document) + assert result == os.path.join(bpy.context.scene.BIMProperties.data_dir, "schedules", "X - FOOBAR.svg") + + def test_run_ifc2x3(self): + ifc = ifcopenshell.file(schema="IFC2X3") + document = ifc.createIfcDocumentInformation(DocumentId="X", Name="FOOBAR", Scope="DOCUMENTATION") + result = subject.get_document_uri(document) + assert result == os.path.join(bpy.context.scene.BIMProperties.data_dir, "sheets", "X - FOOBAR.svg") + + class TestGetDrawingCollection(NewFile): def test_run(self): ifc = ifcopenshell.file() @@ -263,16 +297,21 @@ class TestGetName(NewFile): assert subject.get_name(ifc.createIfcWall(Name="Foobar")) == "Foobar" -class TestGetSheetFilename(NewFile): +class TestGetScheduleLocation(NewFile): def test_run(self): ifc = ifcopenshell.file() - document = ifc.createIfcDocumentInformation(Identification="X", Name="FOOBAR", Scope="DOCUMENTATION") - subject.get_sheet_filename(document) == "X - FOOBAR" + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + schedule = ifcopenshell.api.run("document.add_information", ifc) + schedule.Location = "uri" + reference = ifcopenshell.api.run("document.add_reference", ifc, information=schedule) + subject.get_schedule_location(schedule) == "uri" def test_run_ifc2x3(self): ifc = ifcopenshell.file(schema="IFC2X3") - document = ifc.createIfcDocumentInformation(DocumentId="X", Name="FOOBAR", Scope="DOCUMENTATION") - subject.get_sheet_filename(document) == "X - FOOBAR" + tool.Ifc.set(ifc) + reference = ifc.createIfcDocumentReference(Location="uri") + schedule = ifc.createIfcDocumentInformation(DocumentReferences=[reference]) + subject.get_schedule_location(schedule) == "uri" class TestGenerateDrawingMatrix(NewFile): @@ -384,14 +423,14 @@ class TestGetTextLiteral(NewFile): assert subject.get_text_literal(obj) == item -class TestGetTextProduct(NewFile): +class TestGetAssignedProduct(NewFile): def test_run(self): ifc = ifcopenshell.file() tool.Ifc.set(ifc) wall = ifc.createIfcWall() label = ifc.createIfcAnnotation() ifcopenshell.api.run("drawing.assign_product", ifc, relating_product=wall, related_object=label) - assert subject.get_text_product(label) == wall + assert subject.get_assigned_product(label) == wall class TestImportDrawings(NewFile): @@ -408,6 +447,30 @@ class TestImportDrawings(NewFile): assert props.drawings[0].target_view == "PLAN_VIEW" +class TestImportSchedules(NewFile): + def test_run(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifc.createIfcDocumentInformation(Identification="Y", Name="FOOBAZ") + document = ifc.createIfcDocumentInformation(Identification="X", Name="FOOBAR", Scope="SCHEDULE") + subject.import_schedules() + props = bpy.context.scene.DocProperties + assert props.schedules[0].ifc_definition_id == document.id() + assert props.schedules[0].identification == "X" + assert props.schedules[0].name == "FOOBAR" + + def test_run_ifc2x3(self): + ifc = ifcopenshell.file(schema="IFC2X3") + tool.Ifc.set(ifc) + ifc.createIfcDocumentInformation(DocumentId="Y", Name="FOOBAZ") + document = ifc.createIfcDocumentInformation(DocumentId="X", Name="FOOBAR", Scope="SCHEDULE") + subject.import_schedules() + props = bpy.context.scene.DocProperties + assert props.schedules[0].ifc_definition_id == document.id() + assert props.schedules[0].identification == "X" + assert props.schedules[0].name == "FOOBAR" + + class TestImportSheets(NewFile): def test_run(self): ifc = ifcopenshell.file() @@ -451,7 +514,7 @@ class TestImportTextAttributes(NewFile): assert props.attributes.get("BoxAlignment").string_value == "BoxAlignment" -class TestImportTextProduct(NewFile): +class TestImportAssignedProduct(NewFile): def test_run(self): ifc = ifcopenshell.file() tool.Ifc.set(ifc) @@ -462,8 +525,8 @@ class TestImportTextProduct(NewFile): label_obj = bpy.data.objects.new("Object", None) tool.Ifc.link(wall, wall_obj) tool.Ifc.link(label, label_obj) - subject.import_text_product(label_obj) - assert label_obj.BIMTextProperties.relating_product == wall_obj + subject.import_assigned_product(label_obj) + assert label_obj.BIMAssignedProductProperties.relating_product == wall_obj def test_doing_nothing_if_no_product_to_import(self): ifc = ifcopenshell.file() @@ -471,8 +534,13 @@ class TestImportTextProduct(NewFile): label = ifc.createIfcAnnotation() label_obj = bpy.data.objects.new("Object", None) tool.Ifc.link(label, label_obj) - subject.import_text_product(label_obj) - assert label_obj.BIMTextProperties.relating_product is None + subject.import_assigned_product(label_obj) + assert label_obj.BIMAssignedProductProperties.relating_product is None + + +class TestOpenSchedule(NewFile): + def open_spreadsheet(self): + pass class TestOpenSvg(NewFile): diff --git a/src/blenderbim/test/tool/test_geometry.py b/src/blenderbim/test/tool/test_geometry.py index 43bb06c419..b6bd2ce162 100644 --- a/src/blenderbim/test/tool/test_geometry.py +++ b/src/blenderbim/test/tool/test_geometry.py @@ -102,25 +102,6 @@ class TestDeleteData(NewFile): assert not bpy.data.meshes.get("Mesh") -class TestDoesObjectHaveMeshWithFaces(NewFile): - def test_empties_return_false(self): - obj = bpy.data.objects.new("Object", None) - assert subject.does_object_have_mesh_with_faces(obj) is False - - def test_non_meshes_return_false(self): - obj = bpy.data.objects.new("Object", bpy.data.cameras.new("Curve")) - assert subject.does_object_have_mesh_with_faces(obj) is False - - def test_meshes_without_faces_return_false(self): - obj = bpy.data.objects.new("Object", bpy.data.meshes.new("Mesh")) - assert subject.does_object_have_mesh_with_faces(obj) is False - - def test_meshes_with_faces_return_true(self): - bpy.ops.mesh.primitive_cube_add() - obj = bpy.data.objects.get("Cube") - assert subject.does_object_have_mesh_with_faces(obj) is True - - class TestDoesRepresentationIdExist(NewFile): def test_run(self): ifc = ifcopenshell.file() diff --git a/src/blenderbim/test/tool/test_georeference.py b/src/blenderbim/test/tool/test_georeference.py new file mode 100644 index 0000000000..4dd8661e25 --- /dev/null +++ b/src/blenderbim/test/tool/test_georeference.py @@ -0,0 +1,381 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2021 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + +import bpy +import math +import ifcopenshell +import blenderbim.core.tool +import blenderbim.tool as tool +from mathutils import Vector +from test.bim.bootstrap import NewFile +from blenderbim.tool.georeference import Georeference as subject + + +class TestImplementsTool(NewFile): + def test_run(self): + assert isinstance(subject(), blenderbim.core.tool.Georeference) + + +class TestImportProjectedCRS(NewFile): + def test_importing_nothing_with_no_georeferencing(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + subject.import_projected_crs() + props = bpy.context.scene.BIMGeoreferenceProperties + assert len(props.projected_crs) == 0 + + def test_importing_projected_crs(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + ifcopenshell.api.run("georeference.add_georeferencing", ifc) + projected_crs = ifc.by_type("IfcProjectedCRS")[0] + projected_crs.Name = "Name" + projected_crs.Description = "Description" + projected_crs.GeodeticDatum = "GeodeticDatum" + projected_crs.VerticalDatum = "VerticalDatum" + projected_crs.MapProjection = "MapProjection" + projected_crs.MapZone = "MapZone" + unit = ifcopenshell.api.run("unit.add_si_unit", ifc, unit_type="LENGTHUNIT", name="METRE") + projected_crs.MapUnit = unit + subject.import_projected_crs() + props = bpy.context.scene.BIMGeoreferenceProperties + assert props.projected_crs.get("Name").string_value == "Name" + assert props.projected_crs.get("Description").string_value == "Description" + assert props.projected_crs.get("GeodeticDatum").string_value == "GeodeticDatum" + assert props.projected_crs.get("VerticalDatum").string_value == "VerticalDatum" + assert props.projected_crs.get("MapProjection").string_value == "MapProjection" + assert props.projected_crs.get("MapZone").string_value == "MapZone" + assert props.projected_crs.get("MapUnit").enum_value == str(unit.id()) + + def test_run_ifc2x3(self): + ifc = ifcopenshell.file(schema="IFC2X3") + tool.Ifc.set(ifc) + subject.import_projected_crs() + props = bpy.context.scene.BIMGeoreferenceProperties + assert len(props.projected_crs) == 0 + + +class TestImportMapConversion(NewFile): + def test_importing_nothing_with_no_georeferencing(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + subject.import_map_conversion() + props = bpy.context.scene.BIMGeoreferenceProperties + assert len(props.map_conversion) == 0 + + def test_importing_map_conversion(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + ifcopenshell.api.run("georeference.add_georeferencing", ifc) + map_conversion = ifc.by_type("IfcMapConversion")[0] + map_conversion.Eastings = 1 + map_conversion.Northings = 2 + map_conversion.OrthogonalHeight = 3 + map_conversion.XAxisAbscissa = 4 + map_conversion.XAxisOrdinate = 5 + map_conversion.Scale = 6 + subject.import_map_conversion() + props = bpy.context.scene.BIMGeoreferenceProperties + assert props.map_conversion.get("Eastings").string_value == "1.0" + assert props.map_conversion.get("Northings").string_value == "2.0" + assert props.map_conversion.get("OrthogonalHeight").string_value == "3.0" + assert props.map_conversion.get("XAxisAbscissa").string_value == "4.0" + assert props.map_conversion.get("XAxisOrdinate").string_value == "5.0" + assert props.map_conversion.get("Scale").string_value == "6.0" + + def test_run_ifc2x3(self): + ifc = ifcopenshell.file(schema="IFC2X3") + tool.Ifc.set(ifc) + subject.import_map_conversion() + props = bpy.context.scene.BIMGeoreferenceProperties + assert len(props.map_conversion) == 0 + + +class TestImportTrueNorth(NewFile): + def test_detecting_no_true_north(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + context = ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + subject.import_true_north() + props = bpy.context.scene.BIMGeoreferenceProperties + assert props.has_true_north is False + + def test_run(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + context = ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + context.TrueNorth = ifc.createIfcDirection((1.0, 2.0, 0.0)) + subject.import_true_north() + props = bpy.context.scene.BIMGeoreferenceProperties + assert props.true_north_abscissa == "1.0" + assert props.true_north_ordinate == "2.0" + assert props.has_true_north is True + + +class TestGetProjectedCRSAttributes(NewFile): + def test_run(self): + TestImportProjectedCRS().test_importing_projected_crs() + assert subject.get_projected_crs_attributes() == { + "Name": "Name", + "Description": "Description", + "GeodeticDatum": "GeodeticDatum", + "VerticalDatum": "VerticalDatum", + "MapProjection": "MapProjection", + "MapZone": "MapZone", + "MapUnit": tool.Ifc.get().by_type("IfcNamedUnit")[0], + } + + +class TestGetMapConversionAttributes(NewFile): + def test_run(self): + TestImportMapConversion().test_importing_map_conversion() + assert subject.get_map_conversion_attributes() == { + "Eastings": 1.0, + "Northings": 2.0, + "OrthogonalHeight": 3.0, + "XAxisAbscissa": 4.0, + "XAxisOrdinate": 5.0, + "Scale": 6.0, + } + +class TestGetTrueNorthAttributes(NewFile): + def test_run(self): + TestImportTrueNorth().test_run() + assert subject.get_true_north_attributes() == [1.0, 2.0] + + +class TestEnableEditing(NewFile): + def test_run(self): + bpy.context.scene.BIMGeoreferenceProperties.is_editing = False + subject.enable_editing() + assert bpy.context.scene.BIMGeoreferenceProperties.is_editing is True + + +class TestDisableEditing(NewFile): + def test_run(self): + bpy.context.scene.BIMGeoreferenceProperties.is_editing = True + subject.disable_editing() + assert bpy.context.scene.BIMGeoreferenceProperties.is_editing is False + + +class TestSetCoordinates(NewFile): + def test_run(self): + subject.set_coordinates("input", [1., 2., 3.]) + assert bpy.context.scene.BIMGeoreferenceProperties.coordinate_input == "1.0,2.0,3.0" + subject.set_coordinates("output", [4., 5., 6.]) + assert bpy.context.scene.BIMGeoreferenceProperties.coordinate_output == "4.0,5.0,6.0" + + +class TestGetCoordinates(NewFile): + def test_run(self): + bpy.context.scene.BIMGeoreferenceProperties.coordinate_input = "1.0,2.0,3.0" + assert subject.get_coordinates("input") == [1., 2., 3.] + bpy.context.scene.BIMGeoreferenceProperties.coordinate_output = "4.0,5.0,6.0" + assert subject.get_coordinates("output") == [4., 5., 6.] + + +class TestGetCursorLocation(NewFile): + def test_run(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + unit = ifcopenshell.api.run("unit.add_si_unit", ifc, unit_type="LENGTHUNIT", prefix="MILLI", name="METRE") + ifcopenshell.api.run("unit.assign_unit", ifc, units=[unit]) + bpy.context.scene.cursor.location = (1., 2., 3.) + assert subject.get_cursor_location() == [1000., 2000., 3000.] + + +class TestSetCursorLocation(NewFile): + def test_run(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + unit = ifcopenshell.api.run("unit.add_si_unit", ifc, unit_type="LENGTHUNIT", prefix="MILLI", name="METRE") + ifcopenshell.api.run("unit.assign_unit", ifc, units=[unit]) + subject.set_cursor_location([1000., 2000., 3000.]) + assert list(bpy.context.scene.cursor.location) == [1., 2., 3.] + + +class TestSetIfcTrueNorth(NewFile): + def test_run(self): + subject.set_ifc_true_north() + assert round(float(bpy.context.scene.BIMGeoreferenceProperties.true_north_abscissa), 3) == 0.0 + assert round(float(bpy.context.scene.BIMGeoreferenceProperties.true_north_ordinate), 3) == 1.0 + bpy.context.scene.sun_pos_properties.north_offset = math.radians(45) + subject.set_ifc_true_north() + assert round(float(bpy.context.scene.BIMGeoreferenceProperties.true_north_abscissa), 3) == 0.707 + assert round(float(bpy.context.scene.BIMGeoreferenceProperties.true_north_ordinate), 3) == 0.707 + + +class TestSetBlenderTrueNorth(NewFile): + def test_run(self): + bpy.context.scene.BIMGeoreferenceProperties.true_north_abscissa = "0.0" + bpy.context.scene.BIMGeoreferenceProperties.true_north_ordinate = "1.0" + subject.set_blender_true_north() + assert bpy.context.scene.sun_pos_properties.north_offset == 0 + bpy.context.scene.BIMGeoreferenceProperties.true_north_abscissa = "0.707" + bpy.context.scene.BIMGeoreferenceProperties.true_north_ordinate = "0.707" + subject.set_blender_true_north() + assert round(math.degrees(bpy.context.scene.sun_pos_properties.north_offset)) == 45 + + +class TestGetMapConversion(NewFile): + def test_run(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + ifcopenshell.api.run("georeference.add_georeferencing", ifc) + assert subject.get_map_conversion().is_a("IfcMapConversion") + + +class TestXyz2Enh(NewFile): + def test_run(self): + assert subject.xyz2enh([0., 0., 0.], None) == [0., 0., 0.] + + def test_using_the_blender_offset(self): + props = bpy.context.scene.BIMGeoreferenceProperties + props.has_blender_offset = True + props.blender_eastings = "1.0" + assert subject.xyz2enh([0., 0., 0.], None) == (1., 0., 0.) + + def test_using_the_map_conversion(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + ifcopenshell.api.run("georeference.add_georeferencing", ifc) + map_conversion = ifc.by_type("IfcMapConversion")[0] + map_conversion.Eastings = 1.0 + assert subject.xyz2enh([0., 0., 0.], map_conversion) == (1., 0., 0.) + + def test_applying_both_blender_offset_and_map_conversion(self): + props = bpy.context.scene.BIMGeoreferenceProperties + props.has_blender_offset = True + props.blender_eastings = "1.0" + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + ifcopenshell.api.run("georeference.add_georeferencing", ifc) + map_conversion = ifc.by_type("IfcMapConversion")[0] + map_conversion.Northings = 1.0 + assert subject.xyz2enh([0., 0., 0.], map_conversion) == (1., 1., 0.) + + +class TestEnh2Xyz(NewFile): + def test_run(self): + assert subject.enh2xyz([0., 0., 0.], None) == [0., 0., 0.] + + def test_using_the_blender_offset(self): + props = bpy.context.scene.BIMGeoreferenceProperties + props.has_blender_offset = True + props.blender_eastings = "1.0" + assert subject.enh2xyz([0., 0., 0.], None) == (-1., 0., 0.) + + def test_using_the_map_conversion(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + ifcopenshell.api.run("georeference.add_georeferencing", ifc) + map_conversion = ifc.by_type("IfcMapConversion")[0] + map_conversion.Eastings = 1.0 + assert subject.enh2xyz([0., 0., 0.], map_conversion) == (-1., 0., 0.) + + def test_applying_both_blender_offset_and_map_conversion(self): + props = bpy.context.scene.BIMGeoreferenceProperties + props.has_blender_offset = True + props.blender_eastings = "1.0" + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") + ifcopenshell.api.run("context.add_context", ifc, context_type="Model") + ifcopenshell.api.run("georeference.add_georeferencing", ifc) + map_conversion = ifc.by_type("IfcMapConversion")[0] + map_conversion.Northings = 1.0 + assert subject.enh2xyz([0., 0., 0.], map_conversion) == (-1., -1., 0.) + + +class TestSetIfcGridNorth(NewFile): + def test_run(self): + props = bpy.context.scene.BIMGeoreferenceProperties + new = props.map_conversion.add() + new.name = "XAxisAbscissa" + new = props.map_conversion.add() + new.name = "XAxisOrdinate" + subject.set_ifc_grid_north() + assert round(float(props.map_conversion.get("XAxisAbscissa").string_value), 3) == 1.0 + assert round(float(props.map_conversion.get("XAxisOrdinate").string_value), 3) == 0.0 + bpy.context.scene.sun_pos_properties.north_offset = math.radians(-45) + subject.set_ifc_grid_north() + assert round(float(props.map_conversion.get("XAxisAbscissa").string_value), 3) == 0.707 + assert round(float(props.map_conversion.get("XAxisOrdinate").string_value), 3) == -0.707 + bpy.context.scene.sun_pos_properties.north_offset = math.radians(45) + subject.set_ifc_grid_north() + assert round(float(props.map_conversion.get("XAxisAbscissa").string_value), 3) == 0.707 + assert round(float(props.map_conversion.get("XAxisOrdinate").string_value), 3) == 0.707 + bpy.context.scene.sun_pos_properties.north_offset = math.radians(135) + subject.set_ifc_grid_north() + assert round(float(props.map_conversion.get("XAxisAbscissa").string_value), 3) == -0.707 + assert round(float(props.map_conversion.get("XAxisOrdinate").string_value), 3) == 0.707 + bpy.context.scene.sun_pos_properties.north_offset = math.radians(-135) + subject.set_ifc_grid_north() + assert round(float(props.map_conversion.get("XAxisAbscissa").string_value), 3) == -0.707 + assert round(float(props.map_conversion.get("XAxisOrdinate").string_value), 3) == -0.707 + + +class TestSetBlenderGridNorth(NewFile): + def test_run(self): + props = bpy.context.scene.BIMGeoreferenceProperties + new = props.map_conversion.add() + new.name = "XAxisAbscissa" + new = props.map_conversion.add() + new.name = "XAxisOrdinate" + props.map_conversion.get("XAxisAbscissa").string_value = "1.0" + props.map_conversion.get("XAxisOrdinate").string_value = "0.0" + subject.set_blender_grid_north() + assert bpy.context.scene.sun_pos_properties.north_offset == 0 + props.map_conversion.get("XAxisAbscissa").string_value = "0.707" + props.map_conversion.get("XAxisOrdinate").string_value = "-0.707" + subject.set_blender_grid_north() + assert round(math.degrees(bpy.context.scene.sun_pos_properties.north_offset)) == -45 + props.map_conversion.get("XAxisAbscissa").string_value = "0.707" + props.map_conversion.get("XAxisOrdinate").string_value = "0.707" + subject.set_blender_grid_north() + assert round(math.degrees(bpy.context.scene.sun_pos_properties.north_offset)) == 45 + props.map_conversion.get("XAxisAbscissa").string_value = "-0.707" + props.map_conversion.get("XAxisOrdinate").string_value = "0.707" + subject.set_blender_grid_north() + assert round(math.degrees(bpy.context.scene.sun_pos_properties.north_offset)) == 135 + props.map_conversion.get("XAxisAbscissa").string_value = "-0.707" + props.map_conversion.get("XAxisOrdinate").string_value = "-0.707" + subject.set_blender_grid_north() + assert round(math.degrees(bpy.context.scene.sun_pos_properties.north_offset)) == -135 diff --git a/src/blenderbim/test/tool/test_material.py b/src/blenderbim/test/tool/test_material.py index 4ce5af138f..430acbb04e 100644 --- a/src/blenderbim/test/tool/test_material.py +++ b/src/blenderbim/test/tool/test_material.py @@ -84,15 +84,30 @@ class TestGetName(NewFile): class TestImportMaterialDefinitions(NewFile): - def test_import_materials(self): + def test_import_materials_grouped_by_categories(self): ifc = ifcopenshell.file() tool.Ifc.set(ifc) - material = ifc.createIfcMaterial(Name="Name") + material = ifc.createIfcMaterial(Name="Name", Category="Category") subject.import_material_definitions("IfcMaterial") props = bpy.context.scene.BIMMaterialProperties - assert props.materials[0].ifc_definition_id == material.id() - assert props.materials[0].name == "Name" - assert props.materials[0].total_elements == 0 + assert props.materials[0].ifc_definition_id == 0 + assert props.materials[0].name == "Category" + assert props.materials[0].is_category is True + assert props.materials[0].is_expanded is False + assert len(props.materials) == 1 + + def test_importing_expanded_material_categories(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + material = ifc.createIfcMaterial(Name="Name", Category="Category") + subject.import_material_definitions("IfcMaterial") + props = bpy.context.scene.BIMMaterialProperties + props.materials[0].is_expanded = True + subject.import_material_definitions("IfcMaterial") + assert len(props.materials) == 2 + assert props.materials[1].ifc_definition_id == material.id() + assert props.materials[1].name == "Name" + assert props.materials[1].total_elements == 0 def test_import_material_layer_sets(self): ifc = ifcopenshell.file() diff --git a/src/blenderbim/test/tool/test_style.py b/src/blenderbim/test/tool/test_style.py index dd39292dc7..53e147f9d9 100644 --- a/src/blenderbim/test/tool/test_style.py +++ b/src/blenderbim/test/tool/test_style.py @@ -95,6 +95,20 @@ class TestGetContext(NewFile): assert subject.get_context("obj") == context +class TestGetElementsByStyle(NewFile): + def test_run(self): + ifc = ifcopenshell.file() + tool.Ifc.set(ifc) + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + style = ifc.createIfcSurfaceStyle() + item = ifc.createIfcExtrudedAreaSolid() + ifc.createIfcStyledItem(Item=item, Styles=[style]) + element.Representation = ifc.createIfcProductDefinitionShape( + Representations=[ifc.createIfcShapeRepresentation(Items=[item])] + ) + assert subject.get_elements_by_style(style) == {element} + + class TestGetName(NewFile): def test_run(self): assert subject.get_name(bpy.data.materials.new("Material")) == "Material" @@ -426,3 +440,15 @@ class TestIsEditingStyles(NewFile): subject.is_editing_styles() is False bpy.context.scene.BIMStylesProperties.is_editing = True subject.is_editing_styles() is True + + +class TestSelectElements(NewFile): + def test_run(self): + ifc = ifcopenshell.file() + tool.Ifc().set(ifc) + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcPump") + obj = bpy.data.objects.new("Object", None) + bpy.context.scene.collection.objects.link(obj) + tool.Ifc.link(element, obj) + subject.select_elements([element]) + assert obj in bpy.context.selected_objects diff --git a/src/blenderbim/test/tool/test_system.py b/src/blenderbim/test/tool/test_system.py index 0e8fc3f021..2d70c6adde 100644 --- a/src/blenderbim/test/tool/test_system.py +++ b/src/blenderbim/test/tool/test_system.py @@ -177,15 +177,21 @@ class TestLoadPorts(NewFile): ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcProject") ifcopenshell.api.run("unit.assign_unit", ifc) tool.Ifc().set(ifc) + element = ifc.createIfcChiller() port = ifc.createIfcDistributionPort() - subject.load_ports([port]) + subject.load_ports(element, [port]) obj = tool.Ifc.get_object(port) assert obj assert obj.users_collection assert list(obj.location) == [0, 0, 0] -class TestRunAssignClassOperator(NewFile): +class TestRunGeometryEditObjectPlacement(NewFile): + def test_nothing(self): + pass + + +class TestRunRootAssignClass(NewFile): def test_nothing(self): pass diff --git a/src/blenderbim/test/tool/test_unit.py b/src/blenderbim/test/tool/test_unit.py index 41250a9d77..626b6d0247 100644 --- a/src/blenderbim/test/tool/test_unit.py +++ b/src/blenderbim/test/tool/test_unit.py @@ -154,13 +154,6 @@ class TestGetSINameFromUnitType: assert subject.get_si_name_from_unit_type(key) == value -class TestGetUnitClass: - def test_run(self): - ifc = ifcopenshell.file() - assert subject.get_unit_class(ifc.createIfcSIUnit()) == "IfcSIUnit" - assert subject.get_unit_class(ifc.createIfcNamedUnit()) == "IfcNamedUnit" - - class TestImportUnitAttributes(NewFile): def test_importing_derived_units(self): ifc = ifcopenshell.file() @@ -307,6 +300,13 @@ class TestIsSceneUnitMetric(NewFile): assert subject.is_scene_unit_metric() is True +class TestIsUnitClass: + def test_run(self): + ifc = ifcopenshell.file() + assert subject.is_unit_class(ifc.createIfcSIUnit(), "IfcNamedUnit") is True + assert subject.is_unit_class(ifc.createIfcSIUnit(), "IfcMonetaryUnit") is False + + class TestSetActiveUnit(NewFile): def test_run(self): ifc = ifcopenshell.file() diff --git a/src/ifc4d/ifc4d/ifc2p6.py b/src/ifc4d/ifc4d/ifc2p6.py index 8ff8d426a1..eb93fc3116 100644 --- a/src/ifc4d/ifc4d/ifc2p6.py +++ b/src/ifc4d/ifc4d/ifc2p6.py @@ -34,6 +34,8 @@ class Ifc2P6: self.element_map = {} self.hours_per_day = 8 self.project_tasks = [] + self.starts = [] + self.finishes = [] # P6XML does not understand patterns in holiday dates. Instead, it # expects a list of every day that is a holiday between a date range. # This allows you to specify the date range where the export should @@ -51,8 +53,8 @@ class Ifc2P6: self.schedule = self.file.by_type("IfcWorkSchedule")[0] - self.create_obs() - self.create_calendars() + # It seems as though OBSes aren't necessary and cause permission issues on P6 enterprise setups + # self.create_obs() self.create_projects() tree = ET.ElementTree(self.root) @@ -65,14 +67,23 @@ class Ifc2P6: ET.SubElement(obs, "Id").text = element.Name or "X" ET.SubElement(obs, "Name").text = element.LongName or "Unnamed" - def create_calendars(self): + def create_calendars(self, work_schedule): for calendar in self.file.by_type("IfcWorkCalendar"): - self.create_calendar(calendar) + self.create_calendar(calendar, work_schedule) - def create_calendar(self, calendar): - el = ET.SubElement(self.root, "Calendar") + def create_calendar(self, calendar, work_schedule): + el = ET.SubElement(self.element_map[work_schedule], "Calendar") ET.SubElement(el, "Name").text = calendar.Name or "Unnamed" self.link_element(calendar, el) + ET.SubElement(el, "BaseCalendarObjectId") + ET.SubElement(el, "HoursPerDay").text = "8" + ET.SubElement(el, "HoursPerMonth").text = "172" + ET.SubElement(el, "HoursPerWeek").text = "40" + ET.SubElement(el, "HoursPerYear").text = "2000" + ET.SubElement(el, "IsDefault").text = "0" + ET.SubElement(el, "IsPersonal").text = "0" + ET.SubElement(el, "ProjectObjectId").text = self.id_map[work_schedule] + ET.SubElement(el, "Type").text = "Project" working_week = self.auto_detect_working_week(calendar) @@ -81,13 +92,17 @@ class Ifc2P6: work_week = ET.SubElement(el, "StandardWorkWeek") - for day, time_periods in working_week.items(): + for day in ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]: work_hours = ET.SubElement(work_week, "StandardWorkHours") - day = ET.SubElement(work_hours, "DayOfWeek").text = day - for time_period in time_periods: - work_time = ET.SubElement(work_hours, "WorkTime") - ET.SubElement(work_time, "Start").text = time_period["Start"] - ET.SubElement(work_time, "Finish").text = time_period["Finish"] + ET.SubElement(work_hours, "DayOfWeek").text = day + if day in working_week: + print(working_week) + for time_period in working_week[day]: + work_time = ET.SubElement(work_hours, "WorkTime") + ET.SubElement(work_time, "Start").text = time_period["Start"] + ET.SubElement(work_time, "Finish").text = time_period["Finish"] + else: + ET.SubElement(work_hours, "WorkTime") holidays = ET.SubElement(el, "HolidayOrExceptions") for holiday in self.auto_detect_holidays(calendar): @@ -110,7 +125,7 @@ class Ifc2P6: 6: "Saturday", 7: "Sunday", } - for working_time in calendar.WorkingTimes: + for working_time in calendar.WorkingTimes or []: if not working_time.RecurrencePattern or working_time.RecurrencePattern.RecurrenceType != "WEEKLY": continue @@ -152,24 +167,34 @@ class Ifc2P6: def create_project(self, work_schedule): project = ET.SubElement(self.root, "Project") self.link_element(work_schedule, project) - - ET.SubElement(project, "ActivityDefaultCalendarObjectId").text = self.id_map[ - self.file.by_type("IfcWorkCalendar")[0] - ] + activity_calendar = ET.SubElement(project, "ActivityDefaultCalendarObjectId") ET.SubElement(project, "Name").text = work_schedule.Name or "Unnamed" ET.SubElement(project, "Id").text = work_schedule.Identification or "X" - ET.SubElement(project, "OBSObjectId").text = self.id_map[self.file.by_type("IfcProject")[0]] + data_date = ET.SubElement(project, "DataDate") + planned_start_date = ET.SubElement(project, "PlannedStartDate") + # ET.SubElement(project, "OBSObjectId").text = self.id_map[self.file.by_type("IfcProject")[0]] + # Note: order matters for P6 enterprise imports. + # Root elements like Name must come first. Then calendar, WBS, activities, and relationships. + # Changing the order will result in import failures (but not for all P6 versions, it seems?) + self.create_calendars(work_schedule) self.project_tasks = [] + self.activities = [] self.create_wbs(self.get_subtasks(work_schedule), work_schedule) + self.create_activities() self.create_relationships(self.project_tasks, work_schedule) + activity_calendar.text = self.id_map[self.file.by_type("IfcWorkCalendar")[0]] + start_date = sorted(self.starts)[0] + data_date.text = start_date + planned_start_date.text = start_date + def create_wbs(self, tasks, work_schedule, parent=None): self.project_tasks.extend(tasks) for task in tasks: subtasks = self.get_subtasks(task) - if not subtasks: - self.create_activity(task, work_schedule, parent=parent) + if not subtasks and task.TaskTime: + self.activities.append({"task": task, "work_schedule": work_schedule, "parent": parent}) continue wbs = ET.SubElement(self.element_map[work_schedule], "WBS") self.link_element(task, wbs) @@ -181,36 +206,29 @@ class Ifc2P6: ET.SubElement(wbs, "ProjectObjectId").text = self.id_map[work_schedule] self.create_wbs(subtasks, work_schedule, parent=task) + def create_activities(self): + for activity in self.activities: + self.create_activity(activity["task"], activity["work_schedule"], parent=activity["parent"]) + def create_activity(self, task, work_schedule, parent=None): - if not parent: - return activity = ET.SubElement(self.element_map[work_schedule], "Activity") self.link_element(task, activity) ET.SubElement(activity, "Id").text = task.Identification or "X" ET.SubElement(activity, "Name").text = task.Name or "Unnamed" if parent: ET.SubElement(activity, "WBSObjectId").text = self.id_map[parent] - if task.TaskTime: - if task.TaskTime.ScheduleDuration: - duration = ifcopenshell.util.date.ifc2datetime(task.TaskTime.ScheduleDuration) - ET.SubElement(activity, "PlannedDuration").text = str(duration.days * self.hours_per_day) - ET.SubElement(activity, "RemainingDuration").text = str(duration.days * self.hours_per_day) - if task.TaskTime.ScheduleStart: - ET.SubElement(activity, "PlannedStartDate").text = task.TaskTime.ScheduleStart - ET.SubElement(activity, "StartDate").text = task.TaskTime.ScheduleStart - if task.TaskTime.ScheduleFinish: - ET.SubElement(activity, "PlannedFinishDate").text = task.TaskTime.ScheduleFinish - ET.SubElement(activity, "FinishDate").text = task.TaskTime.ScheduleFinish - ET.SubElement(activity, "ProjectObjectId").text = self.id_map[work_schedule] - ET.SubElement(activity, "ActualDuration").text = "0" - ET.SubElement(activity, "ActualFinishDate") - ET.SubElement(activity, "ActualStartDate") - calendar = ifcopenshell.util.sequence.derive_calendar(task) - ET.SubElement(activity, "CalendarObjectId").text = self.id_map[calendar] - ET.SubElement(activity, "DurationPercentComplete").text = "0" - ET.SubElement(activity, "Type").text = "Task Dependent" - ET.SubElement(activity, "Status").text = "Not Started" - + if task.TaskTime.ScheduleDuration: + duration = ifcopenshell.util.date.ifc2datetime(task.TaskTime.ScheduleDuration) + ET.SubElement(activity, "PlannedDuration").text = str(duration.days * self.hours_per_day) + ET.SubElement(activity, "RemainingDuration").text = str(duration.days * self.hours_per_day) + if task.TaskTime.ScheduleStart: + ET.SubElement(activity, "PlannedStartDate").text = task.TaskTime.ScheduleStart + ET.SubElement(activity, "StartDate").text = task.TaskTime.ScheduleStart + self.starts.append(task.TaskTime.ScheduleStart) + if task.TaskTime.ScheduleFinish: + ET.SubElement(activity, "PlannedFinishDate").text = task.TaskTime.ScheduleFinish + ET.SubElement(activity, "FinishDate").text = task.TaskTime.ScheduleFinish + self.finishes.append(task.TaskTime.ScheduleFinish) data_map = { "RemainingEarlyStartDate": task.TaskTime.EarlyStart, "RemainingEarlyFinishDate": task.TaskTime.EarlyFinish, @@ -218,9 +236,19 @@ class Ifc2P6: "RemainingLateFinishDate": task.TaskTime.LateFinish, } for key, value in data_map.items(): - el = ET.SubElement(activity, "RemainingEarlyStartDate") + el = ET.SubElement(activity, key) if value: el.text = value + ET.SubElement(activity, "ProjectObjectId").text = self.id_map[work_schedule] + ET.SubElement(activity, "ActualDuration").text = "0" + ET.SubElement(activity, "ActualFinishDate") + ET.SubElement(activity, "ActualStartDate") + calendar = ifcopenshell.util.sequence.derive_calendar(task) + if calendar: + ET.SubElement(activity, "CalendarObjectId").text = self.id_map[calendar] + ET.SubElement(activity, "DurationPercentComplete").text = "0" + ET.SubElement(activity, "Type").text = "Task Dependent" + ET.SubElement(activity, "Status").text = "Not Started" def create_relationships(self, tasks, work_schedule): for task in tasks: diff --git a/src/ifc4d/ifc4d/msp2ifc.py b/src/ifc4d/ifc4d/msp2ifc.py index 8a4a7d4587..470bcc435b 100644 --- a/src/ifc4d/ifc4d/msp2ifc.py +++ b/src/ifc4d/ifc4d/msp2ifc.py @@ -110,7 +110,9 @@ class MSP2Ifc: for calendar in project.find("pr:Calendars", self.ns).findall("pr:Calendar", self.ns): calendar_id = calendar.find("pr:UID", self.ns).text week_days = [] - for week_day in calendar.find("pr:WeekDays", self.ns).findall("pr:WeekDay", self.ns): + week_days_element = calendar.find("pr:WeekDays", self.ns) + week_day_elements = week_days_element.findall("pr:WeekDay", self.ns) if week_days_element else [] + for week_day in week_day_elements: working_times = [] if week_day.find("pr:WorkingTimes", self.ns): for working_time in week_day.find("pr:WorkingTimes", self.ns).findall("pr:WorkingTime", self.ns): diff --git a/src/ifcgeom/IfcAdvancedBrep.cpp b/src/ifcgeom/IfcAdvancedBrep.cpp new file mode 100644 index 0000000000..a165bc7ee4 --- /dev/null +++ b/src/ifcgeom/IfcAdvancedBrep.cpp @@ -0,0 +1,30 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcAdvancedBrep + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcAdvancedBrep* l, TopoDS_Shape& shape) { + return convert(l->Outer(), shape); +} + +#endif diff --git a/src/ifcgeom/IfcAnnotationFillArea.cpp b/src/ifcgeom/IfcAnnotationFillArea.cpp new file mode 100644 index 0000000000..1fd33ba896 --- /dev/null +++ b/src/ifcgeom/IfcAnnotationFillArea.cpp @@ -0,0 +1,55 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcAnnotationFillArea* l, TopoDS_Shape& face) { + TopoDS_Wire outer_boundary; + if (!convert_wire(l->OuterBoundary(), outer_boundary)) { + return false; + } + + assert_closed_wire(outer_boundary); + + BRepBuilderAPI_MakeFace mf(outer_boundary); + + if (l->InnerBoundaries()) { + IfcSchema::IfcCurve::list::ptr inner_boundaries = *l->InnerBoundaries(); + + for(IfcSchema::IfcCurve::list::it it = inner_boundaries->begin(); it != inner_boundaries->end(); ++it) { + TopoDS_Wire hole; + if (convert_wire(*it, hole)) { + assert_closed_wire(hole); + mf.Add(hole); + } + } + } + + ShapeFix_Shape sfs(mf.Face()); + sfs.Perform(); + face = sfs.Shape(); + + return true; +} diff --git a/src/ifcgeom/IfcArbitraryClosedProfileDef.cpp b/src/ifcgeom/IfcArbitraryClosedProfileDef.cpp new file mode 100644 index 0000000000..fb4955164e --- /dev/null +++ b/src/ifcgeom/IfcArbitraryClosedProfileDef.cpp @@ -0,0 +1,39 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcArbitraryClosedProfileDef* l, TopoDS_Shape& face) { + TopoDS_Wire wire; + if (!convert_wire(l->OuterCurve(), wire)) { + return false; + } + + assert_closed_wire(wire); + + TopoDS_Compound f; + bool success = convert_wire_to_faces(wire, f); + if (success) { + face = f; + } + return success; +} diff --git a/src/ifcgeom/IfcArbitraryOpenProfileDef.cpp b/src/ifcgeom/IfcArbitraryOpenProfileDef.cpp new file mode 100644 index 0000000000..a68ab93085 --- /dev/null +++ b/src/ifcgeom/IfcArbitraryOpenProfileDef.cpp @@ -0,0 +1,27 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include "../ifcgeom/IfcGeom.h" + +#define _USE_MATH_DEFINES +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcArbitraryOpenProfileDef* l, TopoDS_Wire& result) { + return convert_wire(l->Curve(), result); +} diff --git a/src/ifcgeom/IfcArbitraryProfileDefWithVoids.cpp b/src/ifcgeom/IfcArbitraryProfileDefWithVoids.cpp new file mode 100644 index 0000000000..c418edf369 --- /dev/null +++ b/src/ifcgeom/IfcArbitraryProfileDefWithVoids.cpp @@ -0,0 +1,53 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcArbitraryProfileDefWithVoids* l, TopoDS_Shape& face) { + TopoDS_Wire profile; + if (!convert_wire(l->OuterCurve(), profile)) { + return false; + } + + assert_closed_wire(profile); + + BRepBuilderAPI_MakeFace mf(profile); + + IfcSchema::IfcCurve::list::ptr voids = l->InnerCurves(); + + for(IfcSchema::IfcCurve::list::it it = voids->begin(); it != voids->end(); ++it) { + TopoDS_Wire hole; + if (convert_wire(*it, hole)) { + assert_closed_wire(hole); + mf.Add(hole); + } + } + + ShapeFix_Shape sfs(mf.Face()); + sfs.Perform(); + face = sfs.Shape(); + + return true; +} diff --git a/src/ifcgeom/IfcAxis1Placement.cpp b/src/ifcgeom/IfcAxis1Placement.cpp new file mode 100644 index 0000000000..55973e2de3 --- /dev/null +++ b/src/ifcgeom/IfcAxis1Placement.cpp @@ -0,0 +1,41 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcAxis1Placement* l, gp_Ax1& ax) { + IN_CACHE(IfcAxis1Placement,l,gp_Ax1,ax) + gp_Pnt o;gp_Dir axis = gp_Dir(0,0,1); + + if (!l->Location()->declaration().is("IfcCartesianPoint")) { + // only applicable to 4x3 rc2 + Logger::Error("Not implemented", l->Location()); + return false; + } + + IfcGeom::Kernel::convert((const IfcSchema::IfcCartesianPoint*) l->Location(),o); + if ( l->Axis() ) IfcGeom::Kernel::convert(l->Axis(), axis); + ax = gp_Ax1(o, axis); + CACHE(IfcAxis1Placement,l,ax) + return true; +} diff --git a/src/ifcgeom/IfcAxis2Placement2D.cpp b/src/ifcgeom/IfcAxis2Placement2D.cpp new file mode 100644 index 0000000000..fe8a849a59 --- /dev/null +++ b/src/ifcgeom/IfcAxis2Placement2D.cpp @@ -0,0 +1,53 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcAxis2Placement2D* l, gp_Trsf2d& trsf) { + IN_CACHE(IfcAxis2Placement2D,l,gp_Trsf2d,trsf) + gp_Pnt P; gp_Dir V (1,0,0); + + if (!l->Location()->declaration().is("IfcCartesianPoint")) { + // only applicable to 4x3 rc2 + Logger::Error("Not implemented", l->Location()); + return false; + } + + IfcGeom::Kernel::convert((const IfcSchema::IfcCartesianPoint*) l->Location(),P); + if (l->RefDirection()) { + IfcGeom::Kernel::convert(l->RefDirection(), V); + } + + gp_Ax2d axis(gp_Pnt2d(P.X(),P.Y()), gp_Dir2d(V.X(),V.Y())); + + if (!axis_equal(axis, gp_Ax2d(), getValue(GV_PRECISION))) { + trsf.SetTransformation(axis, gp_Ax2d()); + } + + CACHE(IfcAxis2Placement2D,l,trsf) + return true; +} diff --git a/src/ifcgeom/IfcAxis2Placement3D.cpp b/src/ifcgeom/IfcAxis2Placement3D.cpp new file mode 100644 index 0000000000..8b41e67cf2 --- /dev/null +++ b/src/ifcgeom/IfcAxis2Placement3D.cpp @@ -0,0 +1,75 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcAxis2Placement3D* l, gp_Trsf& trsf) { + IN_CACHE(IfcAxis2Placement3D, l, gp_Trsf, trsf) + + gp_Pnt o; + gp_Dir axis(0, 0, 1); + gp_Dir refDirection; + + if (!l->Location()->declaration().is("IfcCartesianPoint")) { + // only applicable to 4x3 rc2 + Logger::Error("Not implemented", l->Location()); + return false; + } + + IfcGeom::Kernel::convert((const IfcSchema::IfcCartesianPoint*) l->Location(), o); + const bool hasAxis = !!l->Axis(); + const bool hasRef = !!l->RefDirection(); + + if (hasAxis != hasRef) { + Logger::Warning("Axis and RefDirection should be specified together", l); + } + + if (hasAxis) { + IfcGeom::Kernel::convert(l->Axis(), axis); + } + + if (hasRef) { + IfcGeom::Kernel::convert(l->RefDirection(), refDirection); + } else { + if (!axis.IsParallel(gp::DX(), 1.e-5)) { + refDirection = gp::DX(); + } else { + refDirection = gp::DZ(); + } + gp_Vec Xvec = axis.Dot(refDirection) * axis; + gp_Vec Xaxis = refDirection.XYZ() - Xvec.XYZ(); + refDirection = Xaxis; + } + + gp_Ax3 ax3(o, axis, refDirection); + + if (!axis_equal(ax3, (gp_Ax3) gp::XOY(), getValue(GV_PRECISION))) { + trsf.SetTransformation(ax3, gp::XOY()); + } + + CACHE(IfcAxis2Placement3D,l,trsf) + return true; +} diff --git a/src/ifcgeom/IfcBSplineCurveWithKnots.cpp b/src/ifcgeom/IfcBSplineCurveWithKnots.cpp new file mode 100644 index 0000000000..b6f536606f --- /dev/null +++ b/src/ifcgeom/IfcBSplineCurveWithKnots.cpp @@ -0,0 +1,83 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" +#include + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcBSplineCurveWithKnots +bool IfcGeom::Kernel::convert(const IfcSchema::IfcBSplineCurveWithKnots* l, Handle(Geom_Curve)& curve) { + + const bool is_rational = l->declaration().is(IfcSchema::IfcRationalBSplineCurveWithKnots::Class()); + + const IfcSchema::IfcCartesianPoint::list::ptr cps = l->ControlPointsList(); + const std::vector mults = l->KnotMultiplicities(); + const std::vector knots = l->Knots(); + + TColgp_Array1OfPnt Poles(0, cps->size() - 1); + TColStd_Array1OfReal Weights(0, cps->size() - 1); + TColStd_Array1OfReal Knots(0, (int)knots.size() - 1); + TColStd_Array1OfInteger Mults(0, (int)mults.size() - 1); + Standard_Integer Degree = l->Degree(); + Standard_Boolean Periodic = false; + // @tfk: it appears to be wrong to expect a period curve when the curve is closed, see #586 + // Standard_Boolean Periodic = l->ClosedCurve(); + + int i; + + if (is_rational) { + IfcSchema::IfcRationalBSplineCurveWithKnots* rl = (IfcSchema::IfcRationalBSplineCurveWithKnots*)l; + std::vector weights = rl->WeightsData(); + + i = 0; + for (std::vector::const_iterator it = weights.begin(); it != weights.end(); ++it, ++i) { + Weights(i) = *it; + } + } + + i = 0; + for (IfcSchema::IfcCartesianPoint::list::it it = cps->begin(); it != cps->end(); ++it, ++i) { + gp_Pnt pnt; + if (!convert(*it, pnt)) return false; + Poles(i) = pnt; + } + + i = 0; + for (std::vector::const_iterator it = mults.begin(); it != mults.end(); ++it, ++i) { + Mults(i) = *it; + } + + i = 0; + for (std::vector::const_iterator it = knots.begin(); it != knots.end(); ++it, ++i) { + Knots(i) = *it; + } + + if (is_rational) { + curve = new Geom_BSplineCurve(Poles, Weights, Knots, Mults, Degree, Periodic); + } else { + curve = new Geom_BSplineCurve(Poles, Knots, Mults, Degree, Periodic); + } + return true; +} +#endif \ No newline at end of file diff --git a/src/ifcgeom/IfcBSplineSurfaceWithKnots.cpp b/src/ifcgeom/IfcBSplineSurfaceWithKnots.cpp new file mode 100644 index 0000000000..910e713939 --- /dev/null +++ b/src/ifcgeom/IfcBSplineSurfaceWithKnots.cpp @@ -0,0 +1,85 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" +#include +#include + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcBSplineSurfaceWithKnots + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcBSplineSurfaceWithKnots* l, TopoDS_Shape& face) { + boost::shared_ptr< aggregate_of_aggregate_of > cps = l->ControlPointsList(); + std::vector uknots = l->UKnots(); + std::vector vknots = l->VKnots(); + std::vector umults = l->UMultiplicities(); + std::vector vmults = l->VMultiplicities(); + + TColgp_Array2OfPnt Poles (0, (int)cps->size() - 1, 0, (int)(*cps->begin()).size() - 1); + TColStd_Array1OfReal UKnots(0, (int)uknots.size() - 1); + TColStd_Array1OfReal VKnots(0, (int)vknots.size() - 1); + TColStd_Array1OfInteger UMults(0, (int)umults.size() - 1); + TColStd_Array1OfInteger VMults(0, (int)vmults.size() - 1); + Standard_Integer UDegree = l->UDegree(); + Standard_Integer VDegree = l->VDegree(); + + int i = 0, j; + for (aggregate_of_aggregate_of::outer_it it = cps->begin(); it != cps->end(); ++it, ++i) { + j = 0; + for (aggregate_of_aggregate_of::inner_it jt = (*it).begin(); jt != (*it).end(); ++jt, ++j) { + IfcSchema::IfcCartesianPoint* p = *jt; + gp_Pnt pnt; + if (!convert(p, pnt)) return false; + Poles(i, j) = pnt; + } + } + i = 0; + for (std::vector::const_iterator it = uknots.begin(); it != uknots.end(); ++it, ++i) { + UKnots(i) = *it; + } + i = 0; + for (std::vector::const_iterator it = vknots.begin(); it != vknots.end(); ++it, ++i) { + VKnots(i) = *it; + } + i = 0; + for (std::vector::const_iterator it = umults.begin(); it != umults.end(); ++it, ++i) { + UMults(i) = *it; + } + i = 0; + for (std::vector::const_iterator it = vmults.begin(); it != vmults.end(); ++it, ++i) { + VMults(i) = *it; + } + Handle_Geom_Surface surf = new Geom_BSplineSurface(Poles, UKnots, VKnots, UMults, VMults, UDegree, VDegree); + +#if OCC_VERSION_HEX < 0x60502 + face = BRepBuilderAPI_MakeFace(surf); +#else + face = BRepBuilderAPI_MakeFace(surf, getValue(GV_PRECISION)); +#endif + + return true; +} + +#endif diff --git a/src/ifcgeom/IfcBlock.cpp b/src/ifcgeom/IfcBlock.cpp new file mode 100644 index 0000000000..0007b97729 --- /dev/null +++ b/src/ifcgeom/IfcBlock.cpp @@ -0,0 +1,39 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcBlock* l, TopoDS_Shape& shape) { + const double dx = l->XLength() * getValue(GV_LENGTH_UNIT); + const double dy = l->YLength() * getValue(GV_LENGTH_UNIT); + const double dz = l->ZLength() * getValue(GV_LENGTH_UNIT); + + BRepPrimAPI_MakeBox builder(dx, dy, dz); + gp_Trsf trsf; + IfcGeom::Kernel::convert(l->Position(),trsf); + + // IfcCsgPrimitive3D.Position has unit scale factor + shape = builder.Solid().Moved(trsf); + + return true; +} diff --git a/src/ifcgeom/IfcBooleanResult.cpp b/src/ifcgeom/IfcBooleanResult.cpp new file mode 100644 index 0000000000..046c5d647a --- /dev/null +++ b/src/ifcgeom/IfcBooleanResult.cpp @@ -0,0 +1,231 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcBooleanResult* l, TopoDS_Shape& shape) { + + TopoDS_Shape s1; + IfcRepresentationShapeItems items1; + TopoDS_Wire boundary_wire; + IfcSchema::IfcBooleanOperand* operand1 = l->FirstOperand(); + IfcSchema::IfcBooleanOperand* operand2 = l->SecondOperand(); + bool has_halfspace_operand = false; + + BOPAlgo_Operation occ_op; + + const IfcSchema::IfcBooleanOperator::Value op = l->Operator(); + if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE) { + occ_op = BOPAlgo_CUT; + } else if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_INTERSECTION) { + occ_op = BOPAlgo_COMMON; + } else if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_UNION) { + occ_op = BOPAlgo_FUSE; + } else { + return false; + } + + std::vector second_operands; + second_operands.push_back(operand2); + + if (occ_op == BOPAlgo_CUT) { + int n_half_space_operands = 0; + bool process_as_list = true; + while (true) { + auto res1 = operand1->as(); + if (res1 && res1->SecondOperand()->as() && ++n_half_space_operands > 8) { + // There is something peculiar about many half space subtraction operands that OCCT does not like. + // Often these are used to create a semi-curved arch, as is the case in 693. Supplying all these + // operands at once apparently leads to too many edge-edge interference checks. + process_as_list = false; + break; + } + if (res1) { + if (res1->Operator() == op) { + operand1 = res1->FirstOperand(); + second_operands.push_back(res1->SecondOperand()); + } else { + process_as_list = false; + break; + } + } else { + break; + } + } + + if (!process_as_list) { + operand1 = l->FirstOperand(); + second_operands = { operand2 }; + } + } + + if ( shape_type(operand1) == ST_SHAPELIST ) { + if (!(convert_shapes(operand1, items1) && flatten_shape_list(items1, s1, true))) { + return false; + } + } else if ( shape_type(operand1) == ST_SHAPE ) { + if ( ! convert_shape(operand1, s1) ) { + return false; + } + { TopoDS_Solid temp_solid; + s1 = ensure_fit_for_subtraction(s1, temp_solid); } + } else { + Logger::Message(Logger::LOG_ERROR, "Invalid representation item for boolean operation", operand1); + return false; + } + + if (getValue(GV_DISABLE_BOOLEAN_RESULT) > 0.0) { + shape = s1; + return true; + } + + const double first_operand_volume = shape_volume(s1); + if (first_operand_volume <= ALMOST_ZERO) { + Logger::Message(Logger::LOG_WARNING, "Empty solid for:", l->FirstOperand()); + } + + TopTools_ListOfShape second_operand_shapes; + + for (auto& op2 : second_operands) { + TopoDS_Shape s2; + + bool shape2_processed = false; + + bool is_halfspace = op2->declaration().is(IfcSchema::IfcHalfSpaceSolid::Class()); + bool is_unbounded_halfspace = is_halfspace && !op2->declaration().is(IfcSchema::IfcPolygonalBoundedHalfSpace::Class()); + has_halfspace_operand |= is_halfspace; + + { + if (shape_type(op2) == ST_SHAPELIST) { + IfcRepresentationShapeItems items2; + shape2_processed = convert_shapes(op2, items2) && flatten_shape_list(items2, s2, true); + } else if (shape_type(op2) == ST_SHAPE) { + shape2_processed = convert_shape(op2, s2); + if (shape2_processed) { + TopoDS_Solid temp_solid; + s2 = ensure_fit_for_subtraction(s2, temp_solid); + } + } else { + Logger::Message(Logger::LOG_ERROR, "Invalid representation item for boolean operation", op2); + } + } + + if (is_unbounded_halfspace) { + TopoDS_Shape temp; + double d; + if (fit_halfspace(s1, s2, temp, d)) { + if (d < getValue(GV_PRECISION)) { + Logger::Message(Logger::LOG_WARNING, "Halfspace subtraction yields unchanged volume:", l); + continue; + } else { + s2 = temp; + } + } + } + + if (!shape2_processed) { + Logger::Message(Logger::LOG_ERROR, "Failed to convert SecondOperand:", op2); + continue; + } + + if (op2->declaration().is(IfcSchema::IfcHalfSpaceSolid::Class())) { + const double second_operand_volume = shape_volume(s2); + if (second_operand_volume <= ALMOST_ZERO) { + Logger::Message(Logger::LOG_WARNING, "Empty solid for:", op2); + } + } + + second_operand_shapes.Append(s2); + } + + /* + // TK: A little debugging trick to output both operands for visual inspection + + BRep_Builder builder; + TopoDS_Compound compound; + builder.MakeCompound(compound); + builder.Add(compound, s1); + for (const auto& s2 : second_operand_shapes) { + builder.Add(compound, s2); + } + shape = compound; + return true; + */ + +#if OCC_VERSION_HEX < 0x60900 + // @todo: this currently does not compile anymore, do we still need this? + bool valid_result = boolean_operation(s1, s2, occ_op, shape); +#else + + bool valid_result; + + if (s1.ShapeType() == TopAbs_COMPOUND && TopoDS_Iterator(s1).More() && util::is_nested_compound_of_solid(s1)) { + TopoDS_Compound C; + BRep_Builder B; + B.MakeCompound(C); + TopoDS_Iterator it(s1); + valid_result = true; + for (; it.More(); it.Next()) { + TopoDS_Shape part; + if (boolean_operation(it.Value(), second_operand_shapes, occ_op, part)) { + B.Add(C, part); + } else { + valid_result = false; + } + } + shape = C; + } else { + valid_result = boolean_operation(s1, second_operand_shapes, occ_op, shape); + } + +#endif + + if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE) { + // In case of a subtraction, a check on volume is performed. + if (valid_result) { + const double volume_after_subtraction = shape_volume(shape); + if ( ALMOST_THE_SAME(first_operand_volume,volume_after_subtraction) ) + Logger::Message(Logger::LOG_WARNING,"Subtraction yields unchanged volume:",l); + } else { + Logger::Message(Logger::LOG_ERROR,"Failed to process subtraction:",l); + shape = s1; + } + // NB: After issuing error the first operand is returned! + return true; + } else if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_UNION && !valid_result) { + BRep_Builder B; + TopoDS_Compound C; + B.MakeCompound(C); + B.Add(C, s1); + TopTools_ListIteratorOfListOfShape it(second_operand_shapes); + for (; it.More(); it.Next()) { + B.Add(C, it.Value()); + } + Logger::Message(Logger::LOG_ERROR, "Failed to process union, creating compound:", l); + shape = C; + return true; + } else { + return valid_result; + } + return false; +} diff --git a/src/ifcgeom/IfcBoundingBox.cpp b/src/ifcgeom/IfcBoundingBox.cpp new file mode 100644 index 0000000000..5c164f5d91 --- /dev/null +++ b/src/ifcgeom/IfcBoundingBox.cpp @@ -0,0 +1,38 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcBoundingBox* l, TopoDS_Shape& shape) { + const double dx = l->XDim() * getValue(GV_LENGTH_UNIT); + const double dy = l->YDim() * getValue(GV_LENGTH_UNIT); + const double dz = l->ZDim() * getValue(GV_LENGTH_UNIT); + + gp_Pnt corner; + IfcGeom::Kernel::convert(l->Corner(), corner); + BRepPrimAPI_MakeBox builder(corner, dx, dy, dz); + + shape = builder.Solid(); + + return true; +} diff --git a/src/ifcgeom/IfcCShapeProfileDef.cpp b/src/ifcgeom/IfcCShapeProfileDef.cpp new file mode 100644 index 0000000000..cab56aae3e --- /dev/null +++ b/src/ifcgeom/IfcCShapeProfileDef.cpp @@ -0,0 +1,56 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCShapeProfileDef* l, TopoDS_Shape& face) { + const double y = l->Depth() / 2.0f * getValue(GV_LENGTH_UNIT); + const double x = l->Width() / 2.0f * getValue(GV_LENGTH_UNIT); + const double d1 = l->WallThickness() * getValue(GV_LENGTH_UNIT); + const double d2 = l->Girth() * getValue(GV_LENGTH_UNIT); + bool doFillet = !!l->InternalFilletRadius(); + double f1 = 0; + double f2 = 0; + if ( doFillet ) { + f1 = *l->InternalFilletRadius() * getValue(GV_LENGTH_UNIT); + f2 = f1 + d1; + } + + if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || d2 < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords[24] = {-x,-y,x,-y,x,-y+d2,x-d1,-y+d2,x-d1,-y+d1,-x+d1,-y+d1,-x+d1,y-d1,x-d1,y-d1,x-d1,y-d2,x,y-d2,x,y,-x,y}; + int fillets[8] = {0,1,4,5,6,7,10,11}; + double radii[8] = {f2,f2,f1,f1,f1,f1,f2,f2}; + return profile_helper(12,coords,doFillet ? 8 : 0,fillets,radii,trsf2d,face); +} diff --git a/src/ifcgeom/IfcCartesianPoint.cpp b/src/ifcgeom/IfcCartesianPoint.cpp new file mode 100644 index 0000000000..93a6ae50ba --- /dev/null +++ b/src/ifcgeom/IfcCartesianPoint.cpp @@ -0,0 +1,35 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCartesianPoint* l, gp_Pnt& point) { + IN_CACHE(IfcCartesianPoint,l,gp_Pnt,point) + std::vector xyz = l->Coordinates(); + point = gp_Pnt( + xyz.size() ? (xyz[0]*getValue(GV_LENGTH_UNIT)) : 0.0f, + xyz.size() > 1 ? (xyz[1]*getValue(GV_LENGTH_UNIT)) : 0.0f, + xyz.size() > 2 ? (xyz[2]*getValue(GV_LENGTH_UNIT)) : 0.0f + ); + CACHE(IfcCartesianPoint,l,point) + return true; +} diff --git a/src/ifcgeom/IfcCartesianTransformationOperator2D.cpp b/src/ifcgeom/IfcCartesianTransformationOperator2D.cpp new file mode 100644 index 0000000000..d91e0c707f --- /dev/null +++ b/src/ifcgeom/IfcCartesianTransformationOperator2D.cpp @@ -0,0 +1,69 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCartesianTransformationOperator2D* l, gp_Trsf2d& trsf) { + IN_CACHE(IfcCartesianTransformationOperator2D,l,gp_Trsf2d,trsf) + + gp_Pnt origin; + gp_Dir axis1 (1.,0.,0.); + gp_Dir axis2 (0.,1.,0.); + + IfcGeom::Kernel::convert(l->LocalOrigin(),origin); + if ( l->Axis1() ) IfcGeom::Kernel::convert(l->Axis1(),axis1); + if ( l->Axis2() ) IfcGeom::Kernel::convert(l->Axis2(),axis2); + + const gp_Pnt2d origin2d(origin.X(), origin.Y()); + const gp_Dir2d axis12d(axis1.X(), axis1.Y()); + const gp_Dir2d axis22d(axis2.X(), axis2.Y()); + + // A better match to represent the IfcCartesianTransformationOperator2D would + // be the gp_Ax22d, but to my knowledge no easy way exists to convert it into + // a gp_Trsf2d. Easiest would probably be to simply update the underlying + // gp_Mat2d directly. + + const gp_Ax2d ax2d (origin2d, axis12d); + trsf.SetTransformation(ax2d); + + if ( ax2d.Direction().Rotated(M_PI / 2.).Dot(axis22d) < 0. ) { + gp_Trsf2d mirror; mirror.SetMirror(ax2d); + trsf.Multiply(mirror); + } + + trsf.Invert(); + if (l->Scale() && !ALMOST_THE_SAME(*l->Scale(), 1.)) { + trsf.SetScaleFactor(*l->Scale()); + } + + if (is_identity(trsf, getValue(GV_PRECISION))) { + trsf = gp_Trsf2d(); + } + + CACHE(IfcCartesianTransformationOperator2D,l,trsf) + return true; +} diff --git a/src/ifcgeom/IfcCartesianTransformationOperator2DnonUniform.cpp b/src/ifcgeom/IfcCartesianTransformationOperator2DnonUniform.cpp new file mode 100644 index 0000000000..c1735399c4 --- /dev/null +++ b/src/ifcgeom/IfcCartesianTransformationOperator2DnonUniform.cpp @@ -0,0 +1,70 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCartesianTransformationOperator2DnonUniform* l, gp_GTrsf2d& gtrsf) { + IN_CACHE(IfcCartesianTransformationOperator2DnonUniform,l,gp_GTrsf2d,gtrsf) + + gp_Trsf2d trsf; + gp_Pnt origin; + gp_Dir axis1 (1.,0.,0.); + gp_Dir axis2 (0.,1.,0.); + + IfcGeom::Kernel::convert(l->LocalOrigin(),origin); + if ( l->Axis1() ) IfcGeom::Kernel::convert(l->Axis1(),axis1); + if ( l->Axis2() ) IfcGeom::Kernel::convert(l->Axis2(),axis2); + + const gp_Pnt2d origin2d(origin.X(), origin.Y()); + const gp_Dir2d axis12d(axis1.X(), axis1.Y()); + const gp_Dir2d axis22d(axis2.X(), axis2.Y()); + + const gp_Ax2d ax2d (origin2d, axis12d); + trsf.SetTransformation(ax2d); + + if ( ax2d.Direction().Rotated(M_PI / 2.).Dot(axis22d) < 0. ) { + gp_Trsf2d mirror; mirror.SetMirror(ax2d); + trsf.Multiply(mirror); + } + + trsf.Invert(); + + const double scale1 = l->Scale().get_value_or(1.); + const double scale2 = l->Scale2().get_value_or(scale1); + gtrsf = gp_GTrsf2d(); + gtrsf.SetValue(1,1,scale1); + gtrsf.SetValue(2,2,scale2); + gtrsf.Multiply(trsf); + + if (is_identity(gtrsf, getValue(GV_PRECISION))) { + gtrsf = gp_GTrsf2d(); + } + + CACHE(IfcCartesianTransformationOperator2DnonUniform,l,gtrsf) + return true; +} diff --git a/src/ifcgeom/IfcCartesianTransformationOperator3D.cpp b/src/ifcgeom/IfcCartesianTransformationOperator3D.cpp new file mode 100644 index 0000000000..730a2e9960 --- /dev/null +++ b/src/ifcgeom/IfcCartesianTransformationOperator3D.cpp @@ -0,0 +1,52 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCartesianTransformationOperator3D* l, gp_Trsf& trsf) { + IN_CACHE(IfcCartesianTransformationOperator3D,l,gp_Trsf,trsf) + gp_Pnt origin; + IfcGeom::Kernel::convert(l->LocalOrigin(),origin); + gp_Dir axis1 (1.,0.,0.); + gp_Dir axis2 (0.,1.,0.); + gp_Dir axis3 (0.,0.,1.); + if ( l->Axis1() ) IfcGeom::Kernel::convert(l->Axis1(),axis1); + if ( l->Axis2() ) IfcGeom::Kernel::convert(l->Axis2(),axis2); + if ( l->Axis3() ) IfcGeom::Kernel::convert(l->Axis3(),axis3); + gp_Ax3 ax3 (origin,axis3,axis1); + if ( axis2.Dot(ax3.YDirection()) < 0 ) ax3.YReverse(); + + if (!axis_equal(ax3, (gp_Ax3) gp::XOY(), getValue(GV_PRECISION))) { + trsf.SetTransformation(ax3); + trsf.Invert(); + } + + if (l->Scale() && !ALMOST_THE_SAME(*l->Scale(), 1.)) { + trsf.SetScaleFactor(*l->Scale()); + } + + CACHE(IfcCartesianTransformationOperator3D,l,trsf) + return true; +} diff --git a/src/ifcgeom/IfcCartesianTransformationOperator3DnonUniform.cpp b/src/ifcgeom/IfcCartesianTransformationOperator3DnonUniform.cpp new file mode 100644 index 0000000000..9bedf1c115 --- /dev/null +++ b/src/ifcgeom/IfcCartesianTransformationOperator3DnonUniform.cpp @@ -0,0 +1,59 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCartesianTransformationOperator3DnonUniform* l, gp_GTrsf& gtrsf) { + IN_CACHE(IfcCartesianTransformationOperator3DnonUniform,l,gp_GTrsf,gtrsf) + gp_Trsf trsf; + gp_Pnt origin; + IfcGeom::Kernel::convert(l->LocalOrigin(),origin); + gp_Dir axis1 (1.,0.,0.); + gp_Dir axis2 (0.,1.,0.); + gp_Dir axis3 (0.,0.,1.); + if ( l->Axis1() ) IfcGeom::Kernel::convert(l->Axis1(),axis1); + if ( l->Axis2() ) IfcGeom::Kernel::convert(l->Axis2(),axis2); + if ( l->Axis3() ) IfcGeom::Kernel::convert(l->Axis3(),axis3); + gp_Ax3 ax3 (origin,axis3,axis1); + if ( axis2.Dot(ax3.YDirection()) < 0 ) ax3.YReverse(); + trsf.SetTransformation(ax3); + trsf.Invert(); + const double scale1 = l->Scale().get_value_or(1.); + const double scale2 = l->Scale2().get_value_or(scale1); + const double scale3 = l->Scale3().get_value_or(scale1); + gtrsf = gp_GTrsf(); + gtrsf.SetValue(1,1,scale1); + gtrsf.SetValue(2,2,scale2); + gtrsf.SetValue(3,3,scale3); + gtrsf.PreMultiply(trsf); + + if (is_identity(gtrsf, getValue(GV_PRECISION))) { + gtrsf = gp_GTrsf(); + } + + CACHE(IfcCartesianTransformationOperator3DnonUniform,l,gtrsf) + return true; +} diff --git a/src/ifcgeom/IfcCenterLineProfileDef.cpp b/src/ifcgeom/IfcCenterLineProfileDef.cpp new file mode 100644 index 0000000000..03f701a3ee --- /dev/null +++ b/src/ifcgeom/IfcCenterLineProfileDef.cpp @@ -0,0 +1,84 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCenterLineProfileDef* l, TopoDS_Shape& face) { + const double d = l->Thickness() * getValue(GV_LENGTH_UNIT) / 2.; + + TopoDS_Wire wire; + if (!convert_wire(l->Curve(), wire)) return false; + + // BRepOffsetAPI_MakeOffset insists on creating circular arc + // segments for joining the curves that constitute the center + // line. This is probably not in accordance with the IFC spec. + // Although it does not specify a method to join segments + // explicitly, it does dictate 'a constant thickness along the + // curve'. Therefore for simple singular wires a quick + // alternative is provided that uses a straight join. + + TopExp_Explorer exp(wire, TopAbs_EDGE); + TopoDS_Edge edge = TopoDS::Edge(exp.Current()); + exp.Next(); + + if (!exp.More()) { + double u1, u2; + Handle(Geom_Curve) curve = BRep_Tool::Curve(edge, u1, u2); + + Handle(Geom_TrimmedCurve) trim = new Geom_TrimmedCurve(curve, u1, u2); + + Handle(Geom_OffsetCurve) c1 = new Geom_OffsetCurve(trim, d, gp::DZ()); + Handle(Geom_OffsetCurve) c2 = new Geom_OffsetCurve(trim, -d, gp::DZ()); + + gp_Pnt c1a, c1b, c2a, c2b; + c1->D0(c1->FirstParameter(), c1a); + c1->D0(c1->LastParameter(), c1b); + c2->D0(c2->FirstParameter(), c2a); + c2->D0(c2->LastParameter(), c2b); + + BRepBuilderAPI_MakeWire mw; + mw.Add(BRepBuilderAPI_MakeEdge(c1)); + mw.Add(BRepBuilderAPI_MakeEdge(c1a, c2a)); + mw.Add(BRepBuilderAPI_MakeEdge(c2)); + mw.Add(BRepBuilderAPI_MakeEdge(c2b, c1b)); + + face = BRepBuilderAPI_MakeFace(mw.Wire()); + } else { + BRepOffsetAPI_MakeOffset offset(BRepBuilderAPI_MakeFace(gp_Pln(gp::Origin(), gp::DZ()))); + offset.AddWire(wire); + offset.Perform(d); + face = BRepBuilderAPI_MakeFace(TopoDS::Wire(offset)); + } + return true; +} diff --git a/src/ifcgeom/IfcCircle.cpp b/src/ifcgeom/IfcCircle.cpp new file mode 100644 index 0000000000..731fa13130 --- /dev/null +++ b/src/ifcgeom/IfcCircle.cpp @@ -0,0 +1,45 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCircle* l, Handle(Geom_Curve)& curve) { + const double r = l->Radius() * getValue(GV_LENGTH_UNIT); + if ( r < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_ERROR, "Radius not greater than zero for:", l); + return false; + } + gp_Trsf trsf; + IfcSchema::IfcAxis2Placement* placement = l->Position(); + if (placement->as()) { + IfcGeom::Kernel::convert(placement->as(),trsf); + } else { + gp_Trsf2d trsf2d; + IfcGeom::Kernel::convert(placement->as(),trsf2d); + trsf = trsf2d; + } + gp_Ax2 ax = gp_Ax2().Transformed(trsf); + curve = new Geom_Circle(ax, r); + return true; +} diff --git a/src/ifcgeom/IfcCircleHollowProfileDef.cpp b/src/ifcgeom/IfcCircleHollowProfileDef.cpp new file mode 100644 index 0000000000..6a9e7fbf3e --- /dev/null +++ b/src/ifcgeom/IfcCircleHollowProfileDef.cpp @@ -0,0 +1,67 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCircleHollowProfileDef* l, TopoDS_Shape& face) { + const double r = l->Radius() * getValue(GV_LENGTH_UNIT); + const double t = l->WallThickness() * getValue(GV_LENGTH_UNIT); + + if ( r == 0.0f || t == 0.0f ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + gp_Ax2 ax = gp_Ax2().Transformed(trsf2d); + + BRepBuilderAPI_MakeWire outer; + Handle(Geom_Circle) outerCircle = new Geom_Circle(ax, r); + outer.Add(BRepBuilderAPI_MakeEdge(outerCircle)); + BRepBuilderAPI_MakeFace mf(outer.Wire(), false); + + BRepBuilderAPI_MakeWire inner; + Handle(Geom_Circle) innerCirlce = new Geom_Circle(ax, r-t); + inner.Add(BRepBuilderAPI_MakeEdge(innerCirlce)); + mf.Add(inner); + + ShapeFix_Shape sfs(mf.Face()); + sfs.Perform(); + face = TopoDS::Face(sfs.Shape()); + return true; +} diff --git a/src/ifcgeom/IfcCircleProfileDef.cpp b/src/ifcgeom/IfcCircleProfileDef.cpp new file mode 100644 index 0000000000..d97ff05041 --- /dev/null +++ b/src/ifcgeom/IfcCircleProfileDef.cpp @@ -0,0 +1,58 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCircleProfileDef* l, TopoDS_Shape& face) { + const double r = l->Radius() * getValue(GV_LENGTH_UNIT); + if ( r == 0.0f ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + gp_Ax2 ax = gp_Ax2().Transformed(trsf2d); + + + Handle(Geom_Circle) circle = new Geom_Circle(ax, r); + TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(circle); + + BRepBuilderAPI_MakeWire w; + w.Add(edge); + + TopoDS_Face f; + bool success = convert_wire_to_face(w, f); + if (success) face = f; + return success; +} diff --git a/src/ifcgeom/IfcCompositeCurve.cpp b/src/ifcgeom/IfcCompositeCurve.cpp new file mode 100644 index 0000000000..a6345c3b02 --- /dev/null +++ b/src/ifcgeom/IfcCompositeCurve.cpp @@ -0,0 +1,183 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#include "../ifcgeom_schema_agnostic/wire_builder.h" + +#define _USE_MATH_DEFINES +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCompositeCurve* l, TopoDS_Wire& wire) { + if ( getValue(GV_PLANEANGLE_UNIT)<0 ) { + Logger::Message(Logger::LOG_WARNING,"Creating a composite curve without unit information:",l); + + // Temporarily pretend we do have unit information + setValue(GV_PLANEANGLE_UNIT,1.0); + + bool succes_radians = false; + bool succes_degrees = false; + bool use_radians = false; + bool use_degrees = false; + + // First try radians + TopoDS_Wire wire_radians, wire_degrees; + try { + succes_radians = IfcGeom::Kernel::convert(l,wire_radians); + } catch (const std::exception& e) { + Logger::Notice(e); + } catch (const Standard_Failure& e) { + if (e.GetMessageString() && strlen(e.GetMessageString())) { + Logger::Notice(e.GetMessageString()); + } else { + Logger::Notice("Unknown error using radians"); + } + } catch (...) { + Logger::Notice("Unknown error using radians"); + } + + // Now try degrees + setValue(GV_PLANEANGLE_UNIT,0.0174532925199433); + try { + succes_degrees = IfcGeom::Kernel::convert(l,wire_degrees); + } catch (const std::exception& e) { + Logger::Notice(e); + } catch (const Standard_Failure& e) { + if (e.GetMessageString() && strlen(e.GetMessageString())) { + Logger::Notice(e.GetMessageString()); + } else { + Logger::Notice("Unknown error using degrees"); + } + } catch (...) { + Logger::Notice("Unknown error using degrees"); + } + + // Restore to unknown unit state + setValue(GV_PLANEANGLE_UNIT,-1.0); + + if ( succes_degrees && ! succes_radians ) { + use_degrees = true; + } else if ( succes_radians && ! succes_degrees ) { + use_radians = true; + } else if ( succes_radians && succes_degrees ) { + if ( wire_degrees.Closed() && ! wire_radians.Closed() ) { + use_degrees = true; + } else if ( wire_radians.Closed() && ! wire_degrees.Closed() ) { + use_radians = true; + } else { + // No heuristic left to prefer the one over the other, + // apparently both variants are equally successful. + // The curve might be composed of only straight segments. + // Let's go with the wire created using radians as that + // at least is a SI unit. + use_radians = true; + } + } + + if ( use_radians ) { + Logger::Message(Logger::LOG_NOTICE,"Used radians to create composite curve"); + wire = wire_radians; + } else if ( use_degrees ) { + Logger::Message(Logger::LOG_NOTICE,"Used degrees to create composite curve"); + wire = wire_degrees; + } + + return use_radians || use_degrees; + } + +#ifdef SCHEMA_HAS_IfcSegment + // 4x3 + IfcSchema::IfcSegment::list::ptr segments = l->Segments(); +#else + IfcSchema::IfcCompositeCurveSegment::list::ptr segments = l->Segments(); +#endif + + TopTools_ListOfShape converted_segments; + + for (auto it = segments->begin(); it != segments->end(); ++it) { + + if (!(*it)->declaration().is(IfcSchema::IfcCompositeCurveSegment::Class())) { + Logger::Error("Not implemented", *it); + return false; + } + + IfcSchema::IfcCurve* curve = ((IfcSchema::IfcCompositeCurveSegment*)(*it))->ParentCurve(); + + // The type of ParentCurve is IfcCurve, but the documentation says: + // ParentCurve: The *bounded curve* which defines the geometry of the segment. + // At least let's exclude IfcLine as an infinite linear segment + // definitely does not make any sense. + TopoDS_Wire segment; + + if (curve->as()) { + Logger::Notice("Infinite IfcLine used as ParentCurve of segment, treating as a segment", *it); + Handle_Geom_Curve handle; + convert_curve(curve, handle); + double u0 = 0.0; + double u1 = curve->as()->Dir()->Magnitude() * getValue(GV_LENGTH_UNIT); + if (u1 < getValue(GV_PRECISION)) { + Logger::Warning("Segment length below tolerance", *it); + } + BRepBuilderAPI_MakeEdge me(handle, u0, u1); + if (me.IsDone()) { + BRep_Builder B; + B.MakeWire(segment); + B.Add(segment, me.Edge()); + } + } else if (!convert_wire(curve, segment)) { + const bool failed_on_purpose = curve->as() && !segment.IsNull(); + Logger::Message(failed_on_purpose ? Logger::LOG_WARNING : Logger::LOG_ERROR, "Failed to convert curve:", curve); + continue; + } + + if (!((IfcSchema::IfcCompositeCurveSegment*)(*it))->SameSense()) { + segment.Reverse(); + } + + ShapeFix_ShapeTolerance FTol; + FTol.SetTolerance(segment, getValue(GV_PRECISION), TopAbs_WIRE); + + converted_segments.Append(segment); + + } + + if (converted_segments.Extent() == 0) { + Logger::Message(Logger::LOG_ERROR, "No segment succesfully converted:", l); + return false; + } + + BRepBuilderAPI_MakeWire w; + TopoDS_Vertex wire_first_vertex, wire_last_vertex, edge_first_vertex, edge_last_vertex; + + TopTools_ListIteratorOfListOfShape it(converted_segments); + + aggregate_of_instance::ptr profile = l->data().getInverse(&IfcSchema::IfcProfileDef::Class(), -1); + const bool force_close = profile && profile->size() > 0; + + util::wire_builder bld(getValue(GV_PRECISION), l); + util::shape_pair_enumerate(it, bld, force_close); + wire = bld.wire(); + + return true; +} diff --git a/src/ifcgeom/IfcCompositeProfileDef.cpp b/src/ifcgeom/IfcCompositeProfileDef.cpp new file mode 100644 index 0000000000..4c3ae3ea57 --- /dev/null +++ b/src/ifcgeom/IfcCompositeProfileDef.cpp @@ -0,0 +1,53 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCompositeProfileDef* l, TopoDS_Shape& face) { + // BRepBuilderAPI_MakeFace mf; + + TopoDS_Compound compound; + BRep_Builder builder; + builder.MakeCompound(compound); + + IfcSchema::IfcProfileDef::list::ptr profiles = l->Profiles(); + //bool first = true; + for (IfcSchema::IfcProfileDef::list::it it = profiles->begin(); it != profiles->end(); ++it) { + TopoDS_Face f; + if (convert_face(*it, f)) { + builder.Add(compound, f); + /* TopExp_Explorer exp(f, TopAbs_WIRE); + for (; exp.More(); exp.Next()) { + const TopoDS_Wire& wire = TopoDS::Wire(exp.Current()); + if (first) { + mf.Init(BRepBuilderAPI_MakeFace(wire)); + } else { + mf.Add(wire); + } + first = false; + } */ + } + } + + face = compound; + return !face.IsNull(); +} diff --git a/src/ifcgeom/IfcConnectedFaceSet.cpp b/src/ifcgeom/IfcConnectedFaceSet.cpp new file mode 100644 index 0000000000..b9a419c990 --- /dev/null +++ b/src/ifcgeom/IfcConnectedFaceSet.cpp @@ -0,0 +1,114 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include "../ifcgeom/IfcGeom.h" +#include + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcConnectedFaceSet* l, TopoDS_Shape& shape) { + std::unique_ptr> helper_scope; + + IfcSchema::IfcCartesianPoint::list::ptr points = IfcParse::traverse((IfcUtil::IfcBaseClass*) l)->as(); + std::vector points_(points->begin(), points->end()); + + IfcSchema::IfcPolyLoop::list::ptr loops = IfcParse::traverse((IfcUtil::IfcBaseClass*)l)->as(); + std::vector loops_(loops->begin(), loops->end()); + + helper_scope.reset(new faceset_helper<>( + this, + points_, + loops_, + l->declaration().is(IfcSchema::IfcClosedShell::Class()) + )); + + faceset_helper_ = helper_scope.get(); + + IfcSchema::IfcFace::list::ptr faces = l->CfsFaces(); + + double min_face_area = faceset_helper_ + ? (faceset_helper_->epsilon() * faceset_helper_->epsilon() / 20.) + : getValue(GV_MINIMAL_FACE_AREA); + + TopTools_ListOfShape face_list; + for (IfcSchema::IfcFace::list::it it = faces->begin(); it != faces->end(); ++it) { + bool success = false; + TopoDS_Face face; + + try { + success = convert_face(*it, face); + } catch (const std::exception& e) { + Logger::Error(e); + } catch (const Standard_Failure& e) { + if (e.GetMessageString() && strlen(e.GetMessageString())) { + Logger::Error(e.GetMessageString()); + } else { + Logger::Error("Unknown error creating face"); + } + } catch (...) { + Logger::Error("Unknown error creating face"); + } + + if (!success) { + Logger::Message(Logger::LOG_WARNING, "Failed to convert face:", (*it)); + continue; + } + + if (face.ShapeType() == TopAbs_COMPOUND) { + TopoDS_Iterator face_it(face, false); + for (; face_it.More(); face_it.Next()) { + if (face_it.Value().ShapeType() == TopAbs_FACE) { + // This should really be the case. This is not asserted. + const TopoDS_Face& triangle = TopoDS::Face(face_it.Value()); + if (face_area(triangle) > min_face_area) { + face_list.Append(triangle); + } else { + Logger::Message(Logger::LOG_WARNING, "Degenerate face:", (*it)); + } + } + } + } else { + if (face_area(face) > min_face_area) { + face_list.Append(face); + } else { + Logger::Message(Logger::LOG_WARNING, "Degenerate face:", (*it)); + } + } + } + + if (face_list.Extent() == 0) { + return false; + } + + if (face_list.Extent() > getValue(GV_MAX_FACES_TO_ORIENT) || !create_solid_from_faces(face_list, shape)) { + TopoDS_Compound compound; + BRep_Builder builder; + builder.MakeCompound(compound); + + TopTools_ListIteratorOfListOfShape face_iterator; + for (face_iterator.Initialize(face_list); face_iterator.More(); face_iterator.Next()) { + builder.Add(compound, face_iterator.Value()); + } + shape = compound; + } + + return true; +} diff --git a/src/ifcgeom/IfcCraneRailAShapeProfileDef.cpp b/src/ifcgeom/IfcCraneRailAShapeProfileDef.cpp new file mode 100644 index 0000000000..95d2306616 --- /dev/null +++ b/src/ifcgeom/IfcCraneRailAShapeProfileDef.cpp @@ -0,0 +1,65 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcCraneRailAShapeProfileDef +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCraneRailAShapeProfileDef* l, TopoDS_Shape& face) { + double oh = l->OverallHeight() * getValue(GV_LENGTH_UNIT); + double bw2 = l->BaseWidth2() * getValue(GV_LENGTH_UNIT); + double hw = l->HeadWidth() * getValue(GV_LENGTH_UNIT); + double hd2 = l->HeadDepth2() * getValue(GV_LENGTH_UNIT); + double hd3 = l->HeadDepth3() * getValue(GV_LENGTH_UNIT); + double wt = l->WebThickness() * getValue(GV_LENGTH_UNIT); + double bw4 = l->BaseWidth4() * getValue(GV_LENGTH_UNIT); + double bd1 = l->BaseDepth1() * getValue(GV_LENGTH_UNIT); + double bd2 = l->BaseDepth2() * getValue(GV_LENGTH_UNIT); + double bd3 = l->BaseDepth3() * getValue(GV_LENGTH_UNIT); + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords[28] = { + -hw / 2., +oh / 2., + -hw / 2., +oh / 2. - hd3, + -wt / 2., +oh / 2. - hd2, + -wt / 2., -oh / 2. + bd2, + -bw4 / 2., -oh / 2. + bd3, + -bw2 / 2., -oh / 2. + bd1, + -bw2 / 2., -oh / 2., + +bw2 / 2., -oh / 2., + +bw2 / 2., -oh / 2. + bd1, + +bw4 / 2., -oh / 2. + bd3, + +wt / 2., -oh / 2. + bd2, + +wt / 2., +oh / 2. - hd2, + +hw / 2., +oh / 2. - hd3, + +hw / 2., +oh / 2. + }; + + return profile_helper(14, coords, 0, 0, 0, trsf2d, face); +} +#endif diff --git a/src/ifcgeom/IfcCsgSolid.cpp b/src/ifcgeom/IfcCsgSolid.cpp new file mode 100644 index 0000000000..1a53a25509 --- /dev/null +++ b/src/ifcgeom/IfcCsgSolid.cpp @@ -0,0 +1,26 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCsgSolid* l, TopoDS_Shape& shape) { + return convert_shape(l->TreeRootExpression(), shape); +} diff --git a/src/ifcgeom/IfcCurveBoundedPlane.cpp b/src/ifcgeom/IfcCurveBoundedPlane.cpp new file mode 100644 index 0000000000..07f25981c6 --- /dev/null +++ b/src/ifcgeom/IfcCurveBoundedPlane.cpp @@ -0,0 +1,69 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCurveBoundedPlane* l, TopoDS_Shape& face) { + gp_Pln pln; + if (!IfcGeom::Kernel::convert(l->BasisSurface(), pln)) { + return false; + } + + gp_Trsf trsf; + trsf.SetTransformation(pln.Position(), gp::XOY()); + + TopoDS_Wire outer; + if (!convert_wire(l->OuterBoundary(), outer)) { + return false; + } + + BRepBuilderAPI_MakeFace mf(outer); + + if (!mf.IsDone() || mf.Shape().IsNull()) { + Logger::Error("Invalid outer boundary:", l->OuterBoundary()); + return false; + } + + IfcSchema::IfcCurve::list::ptr boundaries = l->InnerBoundaries(); + + for (IfcSchema::IfcCurve::list::it it = boundaries->begin(); it != boundaries->end(); ++it) { + TopoDS_Wire inner; + if (convert_wire(*it, inner)) { + mf.Add(inner); + } + } + + ShapeFix_Shape sfs(mf.Face()); + sfs.Perform(); + + // `trsf` consitutes the placement of the plane and therefore has unit scale factor + face = TopoDS::Face(sfs.Shape()).Moved(trsf); + + return true; +} diff --git a/src/ifcgeom/IfcCylindricalSurface.cpp b/src/ifcgeom/IfcCylindricalSurface.cpp new file mode 100644 index 0000000000..a74fc41f1b --- /dev/null +++ b/src/ifcgeom/IfcCylindricalSurface.cpp @@ -0,0 +1,39 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcCylindricalSurface + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcCylindricalSurface* l, TopoDS_Shape& face) { + gp_Trsf trsf; + IfcGeom::Kernel::convert(l->Position(),trsf); + + // IfcElementarySurface.Position has unit scale factor + face = BRepBuilderAPI_MakeFace(new Geom_CylindricalSurface(gp::XOY(), l->Radius() * getValue(GV_LENGTH_UNIT)), getValue(GV_PRECISION)).Face().Moved(trsf); + return true; +} + +#endif diff --git a/src/ifcgeom/IfcDerivedProfileDef.cpp b/src/ifcgeom/IfcDerivedProfileDef.cpp new file mode 100644 index 0000000000..1bf666540a --- /dev/null +++ b/src/ifcgeom/IfcDerivedProfileDef.cpp @@ -0,0 +1,38 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcDerivedProfileDef* l, TopoDS_Shape& face) { + TopoDS_Face f; + gp_Trsf2d trsf2d; + if (convert_face(l->ParentProfile(), f) && IfcGeom::Kernel::convert(l->Operator(), trsf2d)) { + gp_Trsf trsf = trsf2d; + face = BRepBuilderAPI_Transform(f, trsf).Shape(); + return true; + } else { + return false; + } +} diff --git a/src/ifcgeom/IfcDirection.cpp b/src/ifcgeom/IfcDirection.cpp new file mode 100644 index 0000000000..21e84df886 --- /dev/null +++ b/src/ifcgeom/IfcDirection.cpp @@ -0,0 +1,35 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcDirection* l, gp_Dir& dir) { + IN_CACHE(IfcDirection,l,gp_Dir,dir) + std::vector xyz = l->DirectionRatios(); + dir = gp_Dir( + xyz.size() ? xyz[0] : 0.0f, + xyz.size() > 1 ? xyz[1] : 0.0f, + xyz.size() > 2 ? xyz[2] : 0.0f + ); + CACHE(IfcDirection,l,dir) + return true; +} diff --git a/src/ifcgeom/IfcEdge.cpp b/src/ifcgeom/IfcEdge.cpp new file mode 100644 index 0000000000..ea119ca2ad --- /dev/null +++ b/src/ifcgeom/IfcEdge.cpp @@ -0,0 +1,54 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define _USE_MATH_DEFINES +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcEdge* l, TopoDS_Wire& result) { + if (!l->EdgeStart()->declaration().is(IfcSchema::IfcVertexPoint::Class()) || !l->EdgeEnd()->declaration().is(IfcSchema::IfcVertexPoint::Class())) { + Logger::Message(Logger::LOG_ERROR, "Only IfcVertexPoints are supported for EdgeStart and -End", l); + return false; + } + + IfcSchema::IfcPoint* pnt1 = ((IfcSchema::IfcVertexPoint*) l->EdgeStart())->VertexGeometry(); + IfcSchema::IfcPoint* pnt2 = ((IfcSchema::IfcVertexPoint*) l->EdgeEnd())->VertexGeometry(); + if (!pnt1->declaration().is(IfcSchema::IfcCartesianPoint::Class()) || !pnt2->declaration().is(IfcSchema::IfcCartesianPoint::Class())) { + Logger::Message(Logger::LOG_ERROR, "Only IfcCartesianPoints are supported for VertexGeometry", l); + return false; + } + + gp_Pnt p1, p2; + if (!convert(((IfcSchema::IfcCartesianPoint*)pnt1), p1) || + !convert(((IfcSchema::IfcCartesianPoint*)pnt2), p2)) + { + return false; + } + + BRepBuilderAPI_MakeWire mw; + mw.Add(BRepBuilderAPI_MakeEdge(p1, p2)); + + result = mw.Wire(); + return true; +} diff --git a/src/ifcgeom/IfcEdgeCurve.cpp b/src/ifcgeom/IfcEdgeCurve.cpp new file mode 100644 index 0000000000..7cf5a34452 --- /dev/null +++ b/src/ifcgeom/IfcEdgeCurve.cpp @@ -0,0 +1,118 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#include "../ifcgeom_schema_agnostic/wire_builder.h" + +#define _USE_MATH_DEFINES +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcEdgeCurve* l, TopoDS_Wire& result) { + IfcSchema::IfcPoint* pnt1 = ((IfcSchema::IfcVertexPoint*) l->EdgeStart())->VertexGeometry(); + IfcSchema::IfcPoint* pnt2 = ((IfcSchema::IfcVertexPoint*) l->EdgeEnd())->VertexGeometry(); + if (!pnt1->declaration().is(IfcSchema::IfcCartesianPoint::Class()) || !pnt2->declaration().is(IfcSchema::IfcCartesianPoint::Class())) { + Logger::Message(Logger::LOG_ERROR, "Only IfcCartesianPoints are supported for VertexGeometry", l); + return false; + } + + gp_Pnt p1, p2; + if (!IfcGeom::Kernel::convert(((IfcSchema::IfcCartesianPoint*)pnt1), p1) || + !IfcGeom::Kernel::convert(((IfcSchema::IfcCartesianPoint*)pnt2), p2)) + { + return false; + } + + BRepBuilderAPI_MakeWire mw; + Handle_Geom_Curve crv; + + // The lack of a clear separation between topological and geometrical entities + // is starting to get problematic. If the underlying curve is bounded it is + // assumed that a topological wire can be crafted from it. After which an + // attempt is made to reconstruct it from the individual curves and the vertices + // of the IfcEdgeCurve. + const bool is_bounded = l->EdgeGeometry()->declaration().is(IfcSchema::IfcBoundedCurve::Class()); + + if (!is_bounded && convert_curve(l->EdgeGeometry(), crv)) { + TopoDS_Edge e; + if (util::create_edge_over_curve_with_log_messages(crv, getValue(GV_PRECISION), p1, p2, e)) { + mw.Add(e); + result = mw; + return true; + } else { + return false; + } + } else if (is_bounded && convert_wire(l->EdgeGeometry(), result)) { + if (!l->SameSense()) { + result.Reverse(); + } + + bool first = true; + TopExp_Explorer exp(result, TopAbs_EDGE); + + while (exp.More()) { + const TopoDS_Edge& ed = TopoDS::Edge(exp.Current()); + Standard_Real u1, u2; + Handle(Geom_Curve) ecrv = BRep_Tool::Curve(ed, u1, u2); + exp.Next(); + const bool last = !exp.More(); + + gp_Pnt a, b; + + if (first && last) { + a = p1; + b = p2; + } else if (first) { + a = p1; + ecrv->D0(u2, b); + } else if (last) { + ecrv->D0(u1, a); + b = p2; + } else { + BRepBuilderAPI_MakeEdge me(ecrv, u1, u2); + if (!me.IsDone()) { + return false; + } + mw.Add(me.Edge()); + first = false; + continue; + } + + TopoDS_Edge e; + if (util::create_edge_over_curve_with_log_messages(ecrv, getValue(GV_PRECISION), a, b, e)) { + mw.Add(e); + } else { + return false; + } + + first = false; + } + result = mw; + return true; + } else { + return false; + } +} diff --git a/src/ifcgeom/IfcEdgeLoop.cpp b/src/ifcgeom/IfcEdgeLoop.cpp new file mode 100644 index 0000000000..b3c49d933a --- /dev/null +++ b/src/ifcgeom/IfcEdgeLoop.cpp @@ -0,0 +1,42 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define _USE_MATH_DEFINES +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcEdgeLoop* l, TopoDS_Wire& result) { + IfcSchema::IfcOrientedEdge::list::ptr li = l->EdgeList(); + BRepBuilderAPI_MakeWire mw; + for (IfcSchema::IfcOrientedEdge::list::it it = li->begin(); it != li->end(); ++it) { + TopoDS_Wire w; + if (convert_wire(*it, w)) { + mw.Add(TopoDS::Edge(TopoDS_Iterator(w).Value())); + } + } + if (!mw.IsDone()) { + return false; + } + result = mw.Wire(); + return true; +} diff --git a/src/ifcgeom/IfcEllipse.cpp b/src/ifcgeom/IfcEllipse.cpp new file mode 100644 index 0000000000..c76cc9d118 --- /dev/null +++ b/src/ifcgeom/IfcEllipse.cpp @@ -0,0 +1,58 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcEllipse* l, Handle(Geom_Curve)& curve) { + double x = l->SemiAxis1() * getValue(GV_LENGTH_UNIT); + double y = l->SemiAxis2() * getValue(GV_LENGTH_UNIT); + if (x < ALMOST_ZERO || y < ALMOST_ZERO) { + Logger::Message(Logger::LOG_ERROR, "Radius not greater than zero for:", l); + return false; + } + // Open Cascade does not allow ellipses of which the minor radius + // is greater than the major radius. Hence, in this case, the + // ellipse is rotated. Note that special care needs to be taken + // when creating a trimmed curve off of an ellipse like this. + const bool rotated = y > x; + gp_Trsf trsf; + + IfcSchema::IfcAxis2Placement* placement = l->Position(); + if (placement->as()) { + IfcGeom::Kernel::convert(placement->as(), trsf); + } else { + gp_Trsf2d trsf2d; + IfcGeom::Kernel::convert(placement->as(), trsf2d); + trsf = trsf2d; + } + + gp_Ax2 ax = gp_Ax2(); + if (rotated) { + ax.Rotate(ax.Axis(), M_PI / 2.); + std::swap(x, y); + } + ax.Transform(trsf); + curve = new Geom_Ellipse(ax, x, y); + return true; +} diff --git a/src/ifcgeom/IfcEllipseProfileDef.cpp b/src/ifcgeom/IfcEllipseProfileDef.cpp new file mode 100644 index 0000000000..77de9babc5 --- /dev/null +++ b/src/ifcgeom/IfcEllipseProfileDef.cpp @@ -0,0 +1,66 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcEllipseProfileDef* l, TopoDS_Shape& face) { + double rx = l->SemiAxis1() * getValue(GV_LENGTH_UNIT); + double ry = l->SemiAxis2() * getValue(GV_LENGTH_UNIT); + + if ( rx < ALMOST_ZERO || ry < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + const bool rotated = ry > rx; + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + gp_Ax2 ax = gp_Ax2(); + if (rotated) { + ax.Rotate(ax.Axis(), M_PI / 2.); + std::swap(rx, ry); + } + ax.Transform(trsf2d); + + BRepBuilderAPI_MakeWire w; + Handle(Geom_Ellipse) ellipse = new Geom_Ellipse(ax, rx, ry); + TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(ellipse); + w.Add(edge); + + TopoDS_Face f; + bool success = convert_wire_to_face(w, f); + if (success) face = f; + return success; +} diff --git a/src/ifcgeom/IfcExtrudedAreaSolid.cpp b/src/ifcgeom/IfcExtrudedAreaSolid.cpp new file mode 100644 index 0000000000..0f354d5de8 --- /dev/null +++ b/src/ifcgeom/IfcExtrudedAreaSolid.cpp @@ -0,0 +1,100 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +// uncomment if you'd like negative or close to zero extrusion depths to succeed +// #define PERMISSIVE_EXTRUSION + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcExtrudedAreaSolid* l, TopoDS_Shape& shape) { + const double height = l->Depth() * getValue(GV_LENGTH_UNIT); + if (height < getValue(GV_PRECISION)) { + Logger::Message(Logger::LOG_ERROR, "Non-positive extrusion height encountered for:", l); +#ifndef PERMISSIVE_EXTRUSION + return false; +#endif + } + + TopoDS_Shape face; + if ( !convert_face(l->SweptArea(),face) ) return false; + +#ifdef PERMISSIVE_EXTRUSION + if (abs(height) < getValue(GV_PRECISION)) { + shape = face; + return true; + } +#endif + + gp_Trsf trsf; + bool has_position = true; +#ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf); + } + + gp_Dir dir; + convert(l->ExtrudedDirection(),dir); + + shape.Nullify(); + + /* + // @nb This logic was probably flawed always as this does not by itself result in a valid compsolid... + if (face.ShapeType() == TopAbs_COMPOUND) { + + // For compounds (most likely the result of a IfcCompositeProfileDef) + // create a compound solid shape. + + TopExp_Explorer exp(face, TopAbs_FACE); + + TopoDS_CompSolid compound; + BRep_Builder builder; + builder.MakeCompSolid(compound); + + int num_faces_extruded = 0; + for (; exp.More(); exp.Next(), ++num_faces_extruded) { + builder.Add(compound, BRepPrimAPI_MakePrism(exp.Current(), height*dir)); + } + + if (num_faces_extruded) { + shape = compound; + } + + } + */ + + if (shape.IsNull()) { + shape = BRepPrimAPI_MakePrism(face, height*dir); + } + + if (has_position && !shape.IsNull()) { + // IfcSweptAreaSolid.Position (trsf) is an IfcAxis2Placement3D + // and therefore has a unit scale factor + shape.Move(trsf); + } + + return !shape.IsNull(); +} diff --git a/src/ifcgeom/IfcExtrudedAreaSolidTapered.cpp b/src/ifcgeom/IfcExtrudedAreaSolidTapered.cpp new file mode 100644 index 0000000000..bcf0dc6d5e --- /dev/null +++ b/src/ifcgeom/IfcExtrudedAreaSolidTapered.cpp @@ -0,0 +1,140 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcExtrudedAreaSolidTapered +bool IfcGeom::Kernel::convert(const IfcSchema::IfcExtrudedAreaSolidTapered* l, TopoDS_Shape& shape) { + const double height = l->Depth() * getValue(GV_LENGTH_UNIT); + if (height < getValue(GV_PRECISION)) { + Logger::Message(Logger::LOG_ERROR, "Non-positive extrusion height encountered for:", l); + return false; + } + + TopoDS_Shape face1, face2; + if (!convert_face(l->SweptArea(), face1)) return false; + if (!convert_face(l->EndSweptArea(), face2)) return false; + + gp_Trsf trsf; + bool has_position = true; +#ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf); + } + + gp_Dir dir; + convert(l->ExtrudedDirection(), dir); + + gp_Trsf end_profile; + end_profile.SetTranslation(height * dir); + + TopoDS_Edge spine_edge = BRepBuilderAPI_MakeEdge(gp_Pnt(), gp_Pnt((height * dir).XYZ())).Edge(); + TopoDS_Wire wire = BRepBuilderAPI_MakeWire(spine_edge).Wire(); + + shape.Nullify(); + + TopExp_Explorer exp1(face1, TopAbs_WIRE); + TopExp_Explorer exp2(face2, TopAbs_WIRE); + + TopoDS_Vertex v1, v2; + TopExp::Vertices(wire, v1, v2); + + TopoDS_Shape shell; + TopoDS_Compound compound; + BRep_Builder compound_builder; + + for (; exp1.More() && exp2.More(); exp1.Next(), exp2.Next()) { + const TopoDS_Wire& w1 = TopoDS::Wire(exp1.Current()); + const TopoDS_Wire& w2 = TopoDS::Wire(exp2.Current()); + + BRepOffsetAPI_MakePipeShell builder(wire); + builder.Add(w1, v1); + builder.Add(w2.Moved(end_profile), v2); + + TopoDS_Shape result = builder.Shape(); + + TopTools_ListOfShape li; + shape_to_face_list(result, li); + li.Append(BRepBuilderAPI_MakeFace(w1).Face().Reversed()); + li.Append(BRepBuilderAPI_MakeFace(w2).Face().Moved(end_profile)); + + create_solid_from_faces(li, result, true); + + // @todo ugly hack + + // The reason for this distinction is that at this point of the loop we're not sure anymore + // whether this was constructed from an inner or outer bound. So rather than iterating over + // wires of `face1` and `face2` we should iterate over the faces and then properly check with + // BRepTools::OuterBound(). + // Currently this distinction happens based on profile type which is not robust and probably + // not complete. + if (shell.IsNull()) { + shell = result; + } else if (l->SweptArea()->declaration().is(IfcSchema::IfcCircleHollowProfileDef::Class()) || + l->SweptArea()->declaration().is(IfcSchema::IfcRectangleHollowProfileDef::Class()) || + l->SweptArea()->declaration().is(IfcSchema::IfcArbitraryProfileDefWithVoids::Class())) + { + // @todo properly check for failure and all. + shell = BRepAlgoAPI_Cut(shell, result).Shape(); + } else { + if (compound.IsNull()) { + compound_builder.MakeCompound(compound); + compound_builder.Add(compound, shell); + } + compound_builder.Add(compound, result); + } + } + + if (!compound.IsNull()) { + shell = compound; + } + + shape = shell; + + if (exp1.More() != exp2.More()) { + Logger::Message(Logger::LOG_ERROR, "Inconsistent profiles encountered for:", l); + } + + if (has_position && !shape.IsNull()) { + // IfcSweptAreaSolid.Position (trsf) is an IfcAxis2Placement3D + // and therefore has a unit scale factor + shape.Move(trsf); + } + + return !shape.IsNull(); +} +#endif diff --git a/src/ifcgeom/IfcFace.cpp b/src/ifcgeom/IfcFace.cpp new file mode 100644 index 0000000000..1c615d032d --- /dev/null +++ b/src/ifcgeom/IfcFace.cpp @@ -0,0 +1,309 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#include "../ifcgeom_schema_agnostic/face_definition.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcFace* l, TopoDS_Shape& result) { + IfcSchema::IfcFaceBound::list::ptr bounds = l->Bounds(); + + util::face_definition fd; + + const bool is_face_surface = l->declaration().is(IfcSchema::IfcFaceSurface::Class()); + + if (is_face_surface) { + IfcSchema::IfcFaceSurface* fs = (IfcSchema::IfcFaceSurface*) l; + fs->FaceSurface(); + // FIXME: Surfaces are interpreted as a TopoDS_Shape + TopoDS_Shape surface_shape; + if (!convert_shape(fs->FaceSurface(), surface_shape)) return false; + + // FIXME: Assert this obtaines the only face + TopExp_Explorer exp(surface_shape, TopAbs_FACE); + if (!exp.More()) return false; + + TopoDS_Face surface = TopoDS::Face(exp.Current()); + fd.surface() = BRep_Tool::Surface(surface); + } + + const int num_bounds = bounds->size(); + int num_outer_bounds = 0; + + for (IfcSchema::IfcFaceBound::list::it it = bounds->begin(); it != bounds->end(); ++it) { + IfcSchema::IfcFaceBound* bound = *it; + if (bound->declaration().is(IfcSchema::IfcFaceOuterBound::Class())) num_outer_bounds ++; + } + + // The number of outer bounds should be one according to the schema. Also Open Cascade + // expects this, but it is not strictly checked. Regardless, if the number is greater, + // the face will still be processed as long as there are no holes. A compound of faces + // is returned in that case. + if (num_bounds > 1 && num_outer_bounds > 1 && num_bounds != num_outer_bounds) { + Logger::Message(Logger::LOG_ERROR, "Invalid configuration of boundaries for:", l); + return false; + } + + if (num_outer_bounds > 1) { + Logger::Message(Logger::LOG_WARNING, "Multiple outer boundaries for:", l); + fd.all_outer() = true; + } + + TopTools_DataMapOfShapeInteger wire_senses; + + for (int process_interior = 0; process_interior <= 1; ++process_interior) { + for (IfcSchema::IfcFaceBound::list::it it = bounds->begin(); it != bounds->end(); ++it) { + IfcSchema::IfcFaceBound* bound = *it; + IfcSchema::IfcLoop* loop = bound->Bound(); + + bool same_sense = bound->Orientation(); + const bool is_interior = + !bound->declaration().is(IfcSchema::IfcFaceOuterBound::Class()) && + (num_bounds > 1) && + (num_outer_bounds < num_bounds); + + // The exterior face boundary is processed first + if (is_interior == !process_interior) continue; + + TopoDS_Wire wire; + if (faceset_helper_ && loop->as()) { + if (!faceset_helper_->wire(loop->as(), wire)) { + Logger::Message(Logger::LOG_WARNING, "Face boundary loop not included", loop); + continue; + } + } else if (!convert_wire(loop, wire)) { + Logger::Message(Logger::LOG_ERROR, "Failed to process face boundary loop", loop); + return false; + } + + if (!same_sense) { + wire.Reverse(); + } + + wire_senses.Bind(wire.Oriented(TopAbs_FORWARD), same_sense ? TopAbs_FORWARD : TopAbs_REVERSED); + + fd.wires().emplace_back(wire); + } + } + + if (fd.wires().empty()) { + Logger::Warning("Face with no boundaries", l); + return false; + } + + if (fd.surface().IsNull()) { + // Use the first wire to find a plane manually for polygonal wires + const TopoDS_Wire& wire = fd.wires().front(); + if (util::is_polyhedron(wire)) { + TopExp_Explorer exp(wire, TopAbs_EDGE); + int count = 0; + TopoDS_Edge edges[2]; + for (; exp.More(); exp.Next(), count++) { + if (count < 2) { + edges[count] = TopoDS::Edge(exp.Current()); + } + } + + if (count == 3) { + // Help Open Cascade by finding the plane more efficiently + double _, __; + Handle(Geom_Line) c1 = Handle(Geom_Line)::DownCast(BRep_Tool::Curve(edges[0], _, __)); + Handle(Geom_Line) c2 = Handle(Geom_Line)::DownCast(BRep_Tool::Curve(edges[1], _, __)); + + const gp_Vec ab = c1->Position().Direction(); + const gp_Vec ac = c2->Position().Direction(); + const gp_Vec cross = ab.Crossed(ac); + + if (cross.SquareMagnitude() > ALMOST_ZERO) { + const gp_Dir n = cross; + fd.surface() = new Geom_Plane(c1->Position().Location(), n); + } + } else { + gp_Pln pln; + if (approximate_plane_through_wire(wire, pln)) { + fd.surface() = new Geom_Plane(pln); + } + } + } + } + + if (fd.surface().IsNull()) { + // BRepLib_FindSurface is used in case no surface is found or provided + + const TopoDS_Wire& wire = fd.wires().front(); + + BRepLib_FindSurface fs(wire, getValue(GV_PRECISION), true, true); + if (fs.Found()) { + fd.surface() = fs.Surface(); + ShapeFix_ShapeTolerance ftol; + ftol.SetTolerance(wire, fs.ToleranceReached(), TopAbs_WIRE); + } + } + + TopTools_ListOfShape face_list; + + if (fd.surface().IsNull()) { + // The set of wires is triangulated in case no surface can be found + Logger::Message(Logger::LOG_WARNING, "Triangulating face boundaries for face", l); + + if (fd.all_outer()) { + for (const auto& w : fd.wires()) { + TopTools_ListOfShape fl; + triangulate_wire({ w }, fl); + face_list.Append(fl); + } + } else { + triangulate_wire(fd.wires(), face_list); + } + } else if (!fd.all_outer()) { + BRepBuilderAPI_MakeFace mf(fd.surface(), fd.outer_wire()); + TopoDS_Face f = mf.Face(); + + if (mf.IsDone()) { + if (std::distance(fd.inner_wires().first, fd.inner_wires().second)) { + mf.Init(f); + + for (auto it = fd.inner_wires().first; it != fd.inner_wires().second; ++it) { + mf.Add(*it); + } + + face_list.Append(mf.Face()); + } else { + face_list.Append(f); + } + } + } else { + for (const auto& w : fd.wires()) { + BRepBuilderAPI_MakeFace mf(fd.surface(), w); + if (mf.IsDone()) { + face_list.Append(mf.Face()); + } + } + } + + if (!fd.surface().IsNull()) { + // Some fixes for orientation and p-curves. If we have no surface, it + // means the face has been triangulated in which case none of these + // fixes are necessary. + + if (fd.surface()->DynamicType() != STANDARD_TYPE(Geom_Plane)) { + // In case of (non-planar) face surface, p-curves need to be computed. + // For planar faces, Open Cascade generates p-curves on the fly. + + for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { + ShapeFix_Shape sfs(it.Value()); + + Handle(ShapeExtend_MsgRegistrator) msg; + msg = new ShapeExtend_MsgRegistrator; + sfs.SetMsgRegistrator(msg); + + sfs.Perform(); + it.Value() = sfs.Shape(); + + ShapeExtend_DataMapIteratorOfDataMapOfShapeListOfMsg jt(msg->MapShape()); + for (; jt.More(); jt.Next()) { + Message_ListIteratorOfListOfMsg kt(jt.Value()); + for (; kt.More(); kt.Next()) { + char* c = new char[kt.Value().Value().LengthOfCString() + 1]; + kt.Value().Value().ToUTF8CString(c); + Logger::Notice(c, l); + delete[] c; + } + } + } + } + + for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { + const TopoDS_Face& face = TopoDS::Face(it.Value()); + + ShapeFix_Face sfs(TopoDS::Face(face)); + TopTools_DataMapOfShapeListOfShape wire_map; + sfs.FixOrientation(wire_map); + + TopoDS_Iterator jt(face, false); + for (; jt.More(); jt.Next()) { + const TopoDS_Wire& w = TopoDS::Wire(jt.Value()); + // tfk: @todo if wire_map contains w, I would assume wire_senses also contains w, + // this is not the case in github issue #405. + if (wire_map.IsBound(w) && wire_senses.IsBound(w)) { + const TopTools_ListOfShape& shapes = wire_map.Find(w); + TopTools_ListIteratorOfListOfShape kt(shapes); + for (; kt.More(); kt.Next()) { + // Apparently the wire got reversed, so register it with opposite orientation in the map + wire_senses.Bind(kt.Value(), wire_senses.Find(w) == TopAbs_FORWARD ? TopAbs_REVERSED : TopAbs_FORWARD); + } + } + } + + it.Value() = sfs.Face(); + } + + for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { + TopoDS_Face& face = TopoDS::Face(it.Value()); + + bool all_reversed = true; + TopoDS_Iterator jt(face, false); + for (; jt.More(); jt.Next()) { + const TopoDS_Wire& w = TopoDS::Wire(jt.Value()); + if (!wire_senses.IsBound(w.Oriented(TopAbs_FORWARD)) || (w.Orientation() == wire_senses.Find(w.Oriented(TopAbs_FORWARD)))) { + all_reversed = false; + } + } + + if (all_reversed) { + face.Reverse(); + } + } + } + + if (face_list.Extent() > 1) { + TopoDS_Compound compound; + BRep_Builder builder; + builder.MakeCompound(compound); + for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { + TopoDS_Face& face = TopoDS::Face(it.Value()); + builder.Add(compound, face); + } + result = compound; + } else { + result = face_list.First(); + } + + return true; +} diff --git a/src/ifcgeom/IfcFaceBasedSurfaceModel.cpp b/src/ifcgeom/IfcFaceBasedSurfaceModel.cpp new file mode 100644 index 0000000000..760a860d6f --- /dev/null +++ b/src/ifcgeom/IfcFaceBasedSurfaceModel.cpp @@ -0,0 +1,38 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include "../ifcgeom/IfcGeom.h" +#include + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcFaceBasedSurfaceModel* l, IfcRepresentationShapeItems& shapes) { + bool part_success = false; + IfcSchema::IfcConnectedFaceSet::list::ptr facesets = l->FbsmFaces(); + auto collective_style = get_style(l); + for( IfcSchema::IfcConnectedFaceSet::list::it it = facesets->begin(); it != facesets->end(); ++ it ) { + TopoDS_Shape s; + auto shell_style = get_style(*it); + if (convert_shape(*it,s)) { + shapes.push_back(IfcRepresentationShapeItem(l->data().id(), s, shell_style ? shell_style : collective_style)); + part_success |= true; + } + } + return part_success; +} diff --git a/src/ifcgeom/IfcGeomFunctions.cpp b/src/ifcgeom/IfcGeom.cpp similarity index 85% rename from src/ifcgeom/IfcGeomFunctions.cpp rename to src/ifcgeom/IfcGeom.cpp index f156692b0d..d2959f2ff7 100644 --- a/src/ifcgeom/IfcGeomFunctions.cpp +++ b/src/ifcgeom/IfcGeom.cpp @@ -24,7 +24,6 @@ ********************************************************************************/ #include -#include #include #include @@ -34,32 +33,19 @@ #include #include #include -#include -#include -#include -#include #include #include #include #include #include -#include #include -#include #include #include -#include -#include -#include -#include #include #include -#include -#include -#include #include #include @@ -107,9 +93,7 @@ #include #include -#include -#include #include @@ -118,7 +102,6 @@ #include #include -#include #include #include @@ -135,25 +118,18 @@ #include #include -#include -#include #include -#include #include -#include #include #include #include -#include -#include #include -#include #if OCC_VERSION_HEX >= 0x70200 #include @@ -161,9 +137,12 @@ #include "../ifcparse/macros.h" #include "../ifcparse/IfcSIPrefix.h" + #include "../ifcparse/IfcFile.h" #include "../ifcgeom/IfcGeom.h" -#include "../ifcgeom/IfcGeomTree.h" + +#include "../ifcgeom_schema_agnostic/IfcGeomTree.h" +#include "../ifcgeom_schema_agnostic/boolean_utils.h" #include #include @@ -239,577 +218,7 @@ void MAKE_INIT_FN(KernelImplementation_)(IfcGeom::impl::KernelFactoryImplementat #define Kernel MAKE_TYPE_NAME(Kernel) namespace { - void copy_operand(const TopTools_ListOfShape& l, TopTools_ListOfShape& r) { -#if OCC_VERSION_HEX < 0x70000 - TopTools_ListIteratorOfListOfShape it(l); - for (; it.More(); it.Next()) { - r.Append(BRepBuilderAPI_Copy(it.Value())); - } -#else - // On OCCT 7.0 and higher BRepAlgoAPI_BuilderAlgo::SetNonDestructive(true) is - // called. Not entirely sure on the behaviour before 7.0, so overcautiously - // create copies. - r.Assign(l); -#endif - } - - TopoDS_Shape copy_operand(const TopoDS_Shape& s) { -#if OCC_VERSION_HEX < 0x70000 - return BRepBuilderAPI_Copy(s); -#else - return s; -#endif - } - - double min_edge_length(const TopoDS_Shape& a) { - double min_edge_len = std::numeric_limits::infinity(); - TopExp_Explorer exp(a, TopAbs_EDGE); - for (; exp.More(); exp.Next()) { - GProp_GProps prop; - BRepGProp::LinearProperties(exp.Current(), prop); - double l = prop.Mass(); - if (l < min_edge_len) { - min_edge_len = l; - } - } - return min_edge_len; - } - - double min_vertex_edge_distance(const TopoDS_Shape& a, double min_search, double max_search) { - double M = std::numeric_limits::infinity(); - - TopTools_IndexedMapOfShape vertices, edges; - - TopExp::MapShapes(a, TopAbs_VERTEX, vertices); - TopExp::MapShapes(a, TopAbs_EDGE, edges); - - IfcGeom::impl::tree tree; - - // Add edges to tree - for (int i = 1; i <= edges.Extent(); ++i) { - tree.add(i, edges(i)); - } - - for (int j = 1; j <= vertices.Extent(); ++j) { - const TopoDS_Vertex& v = TopoDS::Vertex(vertices(j)); - gp_Pnt p = BRep_Tool::Pnt(v); - - Bnd_Box b; - b.Add(p); - b.Enlarge(max_search); - - std::vector edge_idxs = tree.select_box(b, false); - std::vector::const_iterator it = edge_idxs.begin(); - for (; it != edge_idxs.end(); ++it) { - const TopoDS_Edge& e = TopoDS::Edge(edges(*it)); - TopoDS_Vertex v1, v2; - TopExp::Vertices(e, v1, v2); - - if (v.IsSame(v1) || v.IsSame(v2)) { - continue; - } - - BRepAdaptor_Curve crv(e); - Extrema_ExtPC ext(p, crv); - if (!ext.IsDone()) { - continue; - } - - for (int i = 1; i <= ext.NbExt(); ++i) { - const double m = sqrt(ext.SquareDistance(i)); - if (m < M && m > min_search) { - M = m; - } - } - } - } - - return M; - } - - class points_on_planar_face_generator { - private: - const TopoDS_Face& f_; - Handle(Geom_Surface) plane_; - BRepTopAdaptor_FClass2d cls_; - double u0, u1, v0, v1; - int i, j; - bool inset_; - static const int N = 10; - - public: - points_on_planar_face_generator(const TopoDS_Face& f, bool inset=false) - : f_(f) - , plane_(BRep_Tool::Surface(f_)) - , cls_(f_, BRep_Tool::Tolerance(f_)) - , i((int)inset), j((int)inset) - , inset_(inset) - { - BRepTools::UVBounds(f_, u0, u1, v0, v1); - } - - void reset() { - i = j = (int)inset_; - } - - bool operator()(gp_Pnt& p) { - while (j < N) { - double u = u0 + (u1 - u0) * i / N; - double v = v0 + (v1 - v0) * j / N; - - i++; - if (i == N) { - i = 0; - j++; - } - - // Specifically does not consider ON - if (cls_.Perform(gp_Pnt2d(u, v)) == TopAbs_IN) { - plane_->D0(u, v, p); - return true; - } - } - - return false; - } - }; - - bool faces_overlap(const TopoDS_Face& f, const TopoDS_Face& g) { - points_on_planar_face_generator pgen(f); - - BRep_Builder B; - gp_Pnt test; - double eps = BRep_Tool::Tolerance(f) + BRep_Tool::Tolerance(g); - - BRepExtrema_DistShapeShape x; - x.LoadS1(g); - - while (pgen(test)) { - TopoDS_Vertex V; - B.MakeVertex(V, test, Precision::Confusion()); - x.LoadS2(V); - x.Perform(); - if (x.IsDone() && x.NbSolution() == 1) { - if (x.Value() > eps) { - return false; - } - } - } - - return true; - } - - double min_face_face_distance(const TopoDS_Shape& a, double max_search) { - /* - NB: This is currently only implemented for planar surfaces. - */ - double M = std::numeric_limits::infinity(); - - TopTools_IndexedMapOfShape faces; - - TopExp::MapShapes(a, TopAbs_FACE, faces); - - IfcGeom::impl::tree tree; - - // Add faces to tree - for (int i = 1; i <= faces.Extent(); ++i) { - if (BRep_Tool::Surface(TopoDS::Face(faces(i)))->DynamicType() == STANDARD_TYPE(Geom_Plane)) { - tree.add(i, faces(i)); - } - } - - for (int j = 1; j <= faces.Extent(); ++j) { - const TopoDS_Face& f = TopoDS::Face(faces(j)); - const Handle(Geom_Surface)& fs = BRep_Tool::Surface(f); - - if (fs->DynamicType() != STANDARD_TYPE(Geom_Plane)) { - continue; - } - - points_on_planar_face_generator pgen(f); - - Bnd_Box b; - BRepBndLib::AddClose(f, b); - b.Enlarge(max_search); - - std::vector face_idxs = tree.select_box(b, false); - std::vector::const_iterator it = face_idxs.begin(); - for (; it != face_idxs.end(); ++it) { - if (*it == j) { - continue; - } - - const TopoDS_Face& g = TopoDS::Face(faces(*it)); - const Handle(Geom_Surface)& gs = BRep_Tool::Surface(g); - - auto p0 = Handle(Geom_Plane)::DownCast(fs); - auto p1 = Handle(Geom_Plane)::DownCast(gs); - - if (p0->Position().IsCoplanar(p1->Position(), max_search, asin(max_search))) { - pgen.reset(); - - BRepTopAdaptor_FClass2d cls(g, BRep_Tool::Tolerance(g)); - - gp_Pnt test; - while (pgen(test)) { - gp_Vec d = test.XYZ() - p1->Position().Location().XYZ(); - double u = d.Dot(p1->Position().XDirection()); - double v = d.Dot(p1->Position().YDirection()); - - // nb: TopAbs_ON is explicitly not considered to prevent matching adjacent faces - // with similar orientations. - if (cls.Perform(gp_Pnt2d(u, v)) == TopAbs_IN) { - gp_Pnt test2; - p1->D0(u, v, test2); - double w = std::abs(gp_Vec(p1->Position().Direction().XYZ()).Dot(test2.XYZ() - test.XYZ())); - if (w < M) { - M = w; - } - } - } - } - } - } - - return M; - } - - int bounding_box_overlap(double p, const TopoDS_Shape& a, const TopTools_ListOfShape& b, TopTools_ListOfShape& c) { - int N = 0; - - Bnd_Box A; - BRepBndLib::Add(a, A); - - if (A.IsVoid()) { - return 0; - } - - TopTools_ListIteratorOfListOfShape it(b); - for (; it.More(); it.Next()) { - Bnd_Box B; - BRepBndLib::Add(it.Value(), B); - - if (B.IsVoid()) { - continue; - } - - if (A.Distance(B) < p) { - c.Append(it.Value()); - } else { - ++N; - } - } - - return N; - } - - bool get_edge_axis(const TopoDS_Edge& e, gp_Ax1& ax) { - double _, __; - - auto crv = BRep_Tool::Curve(e, _, __); - auto line = Handle_Geom_Line::DownCast(crv); - auto bsple = Handle_Geom_BSplineCurve::DownCast(crv); - - if (line) { - ax = line->Position(); - return true; - } else if (bsple) { - if (bsple->NbPoles() == 2 && bsple->Degree() == 1) { - gp_Dir V(bsple->Poles().Last().XYZ() - bsple->Poles().First().XYZ()); - ax = gp_Ax1(bsple->Poles().First(), V); - return true; - } - } - - return false; - } - - bool is_subset(const TopTools_IndexedMapOfShape& lhs, const TopTools_IndexedMapOfShape& rhs) { - if (rhs.Extent() < lhs.Extent()) { - return false; - } - for (int i = 1; i < lhs.Extent(); ++i) { - auto& s = lhs.FindKey(i); - if (!rhs.Contains(s)) { - return false; - } - } - return true; - } - - bool is_extrusion(const gp_Vec& v, const TopoDS_Shape& s, TopoDS_Face& base, std::pair& interval) { - // This assumes UnifySameDomain has been processed on s, so that - // the extrusion top and bottom are a single face. - - TopTools_IndexedDataMapOfShapeListOfShape mapping; - TopExp::MapShapesAndAncestors(s, TopAbs_EDGE, TopAbs_FACE, mapping); - TopExp::MapShapesAndAncestors(s, TopAbs_VERTEX, TopAbs_FACE, mapping); - - TopTools_ListOfShape parallel; - TopTools_IndexedMapOfShape curved_orthogonal; - gp_Ax1 ax; - gp_Ax1 V(gp::Origin(), v); - - // Segment edges in parallel to extrusion direction, and orthogonal or curved, - // where the latter two categories have to make the edges part of the base or - // top face. When neither of these categories the shape is not a extrusion - // or the extrusion direction is not orthogonal to its basis. - for (int i = 1; i < mapping.Extent(); ++i) { - auto& s = mapping.FindKey(i); - if (s.ShapeType() != TopAbs_EDGE) { - continue; - } - - const TopoDS_Edge& e = TopoDS::Edge(s); - if (!get_edge_axis(e, ax)) { - // curved - curved_orthogonal.Add(e); - } else if (ax.IsParallel(V, 1.e-5)) { - parallel.Append(e); - } else if (ax.IsNormal(V, 1.e-5)) { - // ortho - curved_orthogonal.Add(e); - } else { - return false; - } - } - - // Select the two faces for which their edges are subsets - // of the ortho/curved edges - TopTools_IndexedMapOfShape ortho_faces; - for (TopExp_Explorer exp(s, TopAbs_FACE); exp.More(); exp.Next()) { - TopTools_IndexedMapOfShape face_edges; - TopExp::MapShapes(exp.Current(), TopAbs_EDGE, face_edges); - if (is_subset(face_edges, curved_orthogonal)) { - ortho_faces.Add(exp.Current()); - } - } - - // There should be a basis and top face - if (ortho_faces.Extent() != 2) { - return false; - } - - // For the parallel edges assert that its two vertices are part - // of both the basis and the top face. - for (TopTools_ListIteratorOfListOfShape it(parallel); - it.More(); it.Next()) { - TopoDS_Vertex v01[2]; - TopExp::Vertices(TopoDS::Edge(it.Value()), v01[0], v01[1]); - - TopTools_IndexedMapOfShape v_ortho_faces; - int nb_ortho_faces[2] = { 0,0 }; - - for (int i = 0; i < 2; ++i) { - auto& faces = mapping.FindFromKey(v01[i]); - - for (TopTools_ListIteratorOfListOfShape jt(faces); - jt.More(); jt.Next()) { - if (ortho_faces.Contains(jt.Value())) { - nb_ortho_faces[i] ++; - v_ortho_faces.Add(jt.Value()); - } - } - } - - bool sets_equal = v_ortho_faces.Size() == ortho_faces.Size() && is_subset(v_ortho_faces, ortho_faces); - if (!sets_equal) { - return false; - } - } - - // Assert the base/top faces are planar and get the interval - // (dot products along axis) for which the extrusion is defined - // If necessary swap the two faces so that the basis face has - // the smallest dot product along the axis. - auto f0 = TopoDS::Face(ortho_faces.FindKey(1)); - auto f1 = TopoDS::Face(ortho_faces.FindKey(2)); - - const Handle(Geom_Surface)& f0_s = BRep_Tool::Surface(f0); - const Handle(Geom_Surface)& f1_s = BRep_Tool::Surface(f1); - - auto p0 = Handle(Geom_Plane)::DownCast(f0_s); - auto p1 = Handle(Geom_Plane)::DownCast(f1_s); - - if (p0.IsNull() || p1.IsNull()) { - return false; - } - - auto dot0 = p0->Location().XYZ().Dot(v.XYZ()); - auto dot1 = p1->Location().XYZ().Dot(v.XYZ()); - - if (dot0 > dot1) { - std::swap(dot0, dot1); - std::swap(f0, f1); - } - - base = f0; - interval = { dot0, dot1 }; - - return true; - } - - int eliminate_touching_operands(double prec, const TopoDS_Shape& a, const TopTools_ListOfShape& bs, TopTools_ListOfShape& c) { - TopTools_IndexedMapOfShape a_faces; - TopExp::MapShapes(a, TopAbs_FACE, a_faces); - - // Check if any of the faces in a are non-planar, which is - // not supported by this quick check. - for (int i = 1; i <= a_faces.Extent(); ++i) { - auto surf = BRep_Tool::Surface(TopoDS::Face(a_faces(i))); - if (surf->DynamicType() != STANDARD_TYPE(Geom_Plane)) { - return 0; - } - } - - TopTools_IndexedMapOfShape a_vertices; - TopExp::MapShapes(a, TopAbs_VERTEX, a_vertices); - - IfcGeom::impl::tree tree; - - // Add faces to tree - for (int i = 1; i <= a_faces.Extent(); ++i) { - tree.add(i, a_faces(i)); - } - - int N = 0; - - TopTools_ListIteratorOfListOfShape it(bs); - for (; it.More(); it.Next()) { - bool is_touching = false; - - auto& b = it.Value(); - - TopTools_IndexedMapOfShape b_faces; - TopExp::MapShapes(b, TopAbs_FACE, b_faces); - - // Check if any of the faces in b are non-planar, which is - // not supported by this quick check. - for (int i = 1; i <= b_faces.Extent(); ++i) { - auto surf = BRep_Tool::Surface(TopoDS::Face(b_faces(i))); - if (surf->DynamicType() != STANDARD_TYPE(Geom_Plane)) { - continue; - } - } - - TopTools_IndexedMapOfShape b_vertices; - TopExp::MapShapes(b, TopAbs_VERTEX, b_vertices); - - for (int k = 1; k <= b_faces.Extent(); ++k) { - const TopoDS_Face& f_b = TopoDS::Face(b_faces(k)); - Bnd_Box B; - BRepBndLib::Add(f_b, B); - - // Query tree using b_face bounding box - for (auto& i : tree.select_box(B, false)) { - const TopoDS_Face& f_a = TopoDS::Face(a_faces(i)); - - TopTools_IndexedMapOfShape f_a_vertices; - TopExp::MapShapes(f_a, TopAbs_VERTEX, f_a_vertices); - - BRepGProp_Face prop_a(f_a); - BRepGProp_Face prop_b(f_b); - - gp_Pnt p_a, p_b; - gp_Vec v_a, v_b; - - double u0, u1, v0, v1; - prop_a.Bounds(u0, u1, v0, v1); - prop_a.Normal((u0 + u1) / 2., (u0 + u1) / 2., p_a, v_a); - - prop_b.Bounds(u0, u1, v0, v1); - prop_b.Normal((u0 + u1) / 2., (u0 + u1) / 2., p_b, v_b); - - bool all_vertices_behind_f_a = true; - - // Check if all 'other' vertices in a are pointing - // away from the face in a, so that there is no geometry - // from a in front of the face that could participate - // in the boolean subtraction. - for (int j = 1; j <= a_vertices.Extent(); ++j) { - if (!f_a_vertices.Contains(a_vertices(j))) { - auto p = BRep_Tool::Pnt(TopoDS::Vertex(a_vertices(j))); - if ((p.XYZ() - p_a.XYZ()).Dot(v_a.XYZ()) > prec) { - all_vertices_behind_f_a = false; - break; - } - } - } - - if (!all_vertices_behind_f_a) { - continue; - } - - // Check if surface normals are opposite - if (v_a.IsOpposite(v_b, 1.e-5)) { - // Check if faces are co-planar - if ((p_b.XYZ() - p_a.XYZ()).Dot(v_a.XYZ()) <= prec) { - - TopTools_IndexedMapOfShape f_b_vertices; - TopExp::MapShapes(f_b, TopAbs_VERTEX, f_b_vertices); - - bool all_vertices_behind_f_b = true; - - // Check if all 'other' vertices in b are pointing - // away from the face in a. So that a boolean subtraction - // would not alter a. - for (int j = 1; j <= b_vertices.Extent(); ++j) { - if (!f_b_vertices.Contains(b_vertices(j))) { - auto p = BRep_Tool::Pnt(TopoDS::Vertex(b_vertices(j))); - if ((p.XYZ() - p_a.XYZ()).Dot(v_a.XYZ()) < prec * 10.) { - all_vertices_behind_f_b = false; - break; - } - } - } - - if (all_vertices_behind_f_b) { - is_touching = true; - break; - } - - } - } - } - - if (is_touching) { - break; - } - } - - if (!is_touching) { - c.Append(it.Value()); - } else { - ++N; - } - } - - return N; - } - - TopoDS_Shape unify(const TopoDS_Shape& s, double tolerance) { - tolerance = (std::min)(min_edge_length(s) / 2., tolerance); - ShapeUpgrade_UnifySameDomain usd(s); -#if OCC_VERSION_HEX >= 0x70200 - usd.SetSafeInputMode(true); -#endif -#if OCC_VERSION_HEX >= 0x70100 - usd.SetLinearTolerance(tolerance); - usd.SetAngularTolerance(1.e-3); -#endif - usd.Build(); - return usd.Shape(); - } - - gp_Trsf combine_offset_and_rotation(const gp_Vec &offset, const gp_Quaternion& rotation) { - auto offset_transform = gp_Trsf{}; - offset_transform.SetTranslation(offset); - - auto rotation_transform = gp_Trsf{}; - rotation_transform.SetRotation(rotation); - - return rotation_transform * offset_transform; - } + } void IfcGeom::Kernel::set_offset(const std::array &p_offset) { @@ -1365,7 +774,7 @@ bool IfcGeom::Kernel::convert_openings_fast(const IfcSchema::IfcProduct* entity, gp_GTrsf gtrsf = opening_shapes[i].Placement(); gtrsf.PreMultiply(opening_trsf); TopoDS_Shape opening_shape = apply_transformation(opening_shape_unlocated, gtrsf); - opening_vector.push_back(std::make_pair(min_edge_length(opening_shape), opening_shape)); + opening_vector.push_back(std::make_pair(util::min_edge_length(opening_shape), opening_shape)); } } @@ -1374,78 +783,115 @@ bool IfcGeom::Kernel::convert_openings_fast(const IfcSchema::IfcProduct* entity, std::sort(opening_vector.begin(), opening_vector.end(), opening_sorter()); // Iterate over the shapes of the IfcProduct - for ( IfcGeom::IfcRepresentationShapeItems::const_iterator it3 = entity_shapes.begin(); it3 != entity_shapes.end(); ++ it3 ) { + for (IfcGeom::IfcRepresentationShapeItems::const_iterator it3 = entity_shapes.begin(); it3 != entity_shapes.end(); ++it3) { - bool is_manifold = Kernel::is_manifold(it3->Shape()); + TopoDS_Compound C; + BRep_Builder B; + B.MakeCompound(C); + TopoDS_Shape combined_result; - if (!is_manifold) { - Logger::Warning("Non-manifold first operand"); + std::list parts; + + bool is_multiple = it3->Shape().ShapeType() == TopAbs_COMPOUND && TopoDS_Iterator(it3->Shape()).More() && util::is_nested_compound_of_solid(it3->Shape()); + + if (is_multiple) { + TopoDS_Iterator sit(it3->Shape()); + for (; sit.More(); sit.Next()) { + parts.push_back(sit.Value()); + } + } else { + parts.push_back(it3->Shape()); } - for (int as_shell = 0; as_shell < 2; ++as_shell) { + for (auto& entity_part : parts) { - TopoDS_Shape entity_shape_solid; - TopoDS_Shape entity_shape_unlocated; - if (as_shell) { - entity_shape_unlocated = it3->Shape(); + + bool is_manifold = Kernel::is_manifold(entity_part); + + if (!is_manifold) { + Logger::Warning("Non-manifold first operand"); + } + + TopoDS_Shape entity_part_result; + + for (int as_shell = 0; as_shell < 2; ++as_shell) { + + TopoDS_Shape entity_shape_solid; + TopoDS_Shape entity_shape_unlocated; + if (as_shell) { + entity_shape_unlocated = entity_part; + } else { + entity_shape_unlocated = ensure_fit_for_subtraction(entity_part, entity_shape_solid); + } + const gp_GTrsf& entity_shape_gtrsf = it3->Placement(); + if (entity_shape_gtrsf.Form() == gp_Other) { + Logger::Message(Logger::LOG_WARNING, "Applying non uniform transformation to:", entity); + } + TopoDS_Shape entity_shape = apply_transformation(entity_shape_unlocated, entity_shape_gtrsf); + + TopoDS_Shape result = entity_shape; + + auto it = opening_vector.begin(); + auto jt = it; + + for (;; ++it) { + if (it == opening_vector.end() || jt->first / it->first > 10.) { + + TopTools_ListOfShape opening_list; + for (auto kt = jt; kt < it; ++kt) { + opening_list.Append(kt->second); + } + + TopoDS_Shape intermediate_result; + if (boolean_operation(result, opening_list, BOPAlgo_CUT, intermediate_result)) { + result = intermediate_result; + } else { + Logger::Message(Logger::LOG_ERROR, "Opening subtraction failed for " + boost::lexical_cast(std::distance(jt, it)) + " openings", entity); + } + + jt = it; + } + + if (it == opening_vector.end()) { + break; + } + } + + int result_n_faces = count(result, TopAbs_FACE); + + if (!is_manifold && as_shell == 0 && result_n_faces == 0) { + // If we have a non-manifold first operand and our first attempt + // on a Solid-Solid subtraction yielded a empty result (no faces) + // or a strange result, a larger number of faces with the original input + // included. Then retry (another iteration on the for-loop on as-shell) + // where we keep the first operand as is (a compound of faces probably, + // unless --orient-shells was activated in which case we're already lost). + if (!is_manifold) { + Logger::Warning("Retrying boolean operation on individual faces"); + } + continue; + } + + entity_part_result = result; + + // For manifold first operands we're not even going to try if processing + // as loose faces gives a better result. + break; + } + + if (is_multiple) { + B.Add(C, entity_part_result); } else { - entity_shape_unlocated = ensure_fit_for_subtraction(it3->Shape(), entity_shape_solid); - } - const gp_GTrsf& entity_shape_gtrsf = it3->Placement(); - if (entity_shape_gtrsf.Form() == gp_Other) { - Logger::Message(Logger::LOG_WARNING, "Applying non uniform transformation to:", entity); - } - TopoDS_Shape entity_shape = apply_transformation(entity_shape_unlocated, entity_shape_gtrsf); - - TopoDS_Shape result = entity_shape; - - auto it = opening_vector.begin(); - auto jt = it; - - for (;; ++it) { - if (it == opening_vector.end() || jt->first / it->first > 10.) { - - TopTools_ListOfShape opening_list; - for (auto kt = jt; kt < it; ++kt) { - opening_list.Append(kt->second); - } - - TopoDS_Shape intermediate_result; - if (boolean_operation(result, opening_list, BOPAlgo_CUT, intermediate_result)) { - result = intermediate_result; - } else { - Logger::Message(Logger::LOG_ERROR, "Opening subtraction failed for " + boost::lexical_cast(std::distance(jt, it)) + " openings", entity); - } - - jt = it; - } - - if (it == opening_vector.end()) { - break; - } + combined_result = entity_part_result; } - int result_n_faces = count(result, TopAbs_FACE); - - if (!is_manifold && as_shell == 0 && result_n_faces == 0) { - // If we have a non-manifold first operand and our first attempt - // on a Solid-Solid subtraction yielded a empty result (no faces) - // or a strange result, a larger number of faces with the original input - // included. Then retry (another iteration on the for-loop on as-shell) - // where we keep the first operand as is (a compound of faces probably, - // unless --orient-shells was activated in which case we're already lost). - if (!is_manifold) { - Logger::Warning("Retrying boolean operation on individual faces"); - } - continue; - } - - cut_shapes.push_back(IfcGeom::IfcRepresentationShapeItem(it3->ItemId(), result, it3->StylePtr())); - - // For manifold first operands we're not even going to try if processing - // as loose faces gives a better result. - break; } + + if (is_multiple) { + combined_result = C; + } + + cut_shapes.push_back(IfcGeom::IfcRepresentationShapeItem(it3->ItemId(), combined_result, it3->StylePtr())); } return true; } @@ -4237,7 +3683,7 @@ bool IfcGeom::Kernel::wire_intersections(const TopoDS_Wire& wire, TopTools_ListO // eps is added to both ends of the parametric domain, so 3. is chosen to be on the safe side here. ? (faceset_helper_->epsilon() / 3.) // @todo re-evaluate 2. here for the reasons above: - : (std::min)(min_edge_length(wire) / 2., getValue(GV_PRECISION) * 10.); + : (std::min)(util::min_edge_length(wire) / 2., getValue(GV_PRECISION) * 10.); } // @todo: should this start from 0 in case of n > 64? @@ -4561,226 +4007,8 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a, const TopoDS_Shap } #else -namespace { - - bool boolean_subtraction_2d_using_builder(const TopoDS_Shape& a_input, const TopTools_ListOfShape& b_input, TopoDS_Shape& result, double eps) { - IfcGeom::impl::tree edge_tree; - - TopTools_ListOfShape ab_input = b_input; - ab_input.Prepend(a_input); - - TopTools_ListIteratorOfListOfShape it(ab_input); - int shape_index = 0; - int edge_index = 0; - std::map edge_index_to_shape_index; - - std::vector shapes; - std::vector> edges; - // First is the outer wire - std::vector wires; - - for (; it.More(); it.Next(), ++shape_index) { - if (it.Value().ShapeType() != TopAbs_FACE) { - return false; - } - - const TopoDS_Face& f = TopoDS::Face(it.Value()); - TopoDS_Wire outer_wire; - - if (shape_index == 0) { - outer_wire = BRepTools::OuterWire(f); - wires.push_back(outer_wire); - } - - size_t num_wires = 0; - TopoDS_Iterator it2(it.Value()); - for (; it2.More(); it2.Next()) { - ++num_wires; - - if (outer_wire.IsNull() || !it2.Value().IsSame(outer_wire)) { - wires.push_back(TopoDS::Wire(it2.Value())); - - if (shape_index == 0 && num_wires > 0) { - // An inner wire on the first operand face: reverse, because - // MakeFace expects inner boundaries to be added as bounded - // areas. - wires.back().Reverse(); - } - } - } - - if (num_wires > 1 && shape_index != 0) { - // The first operand can have inner wires, but the others - // can't because a inner wire would result in an additional - // outer wire for the result. - return false; - } - - shapes.push_back(it.Value()); - TopExp_Explorer exp(it.Value(), TopAbs_EDGE); - for (; exp.More(); exp.Next(), ++edge_index) { - edge_tree.add(edge_index, exp.Current()); - edge_index_to_shape_index[edge_index] = shape_index; - edges.push_back({ shape_index, TopoDS::Edge(exp.Current()) }); - } - } - - shape_index = 0; - edge_index = 0; - - it.Initialize(ab_input); - for (; it.More(); it.Next(), ++shape_index) { - TopExp_Explorer exp(it.Value(), TopAbs_EDGE); - for (; exp.More(); exp.Next(), ++edge_index) { - Bnd_Box b; - BRepBndLib::Add(exp.Current(), b); - b.Enlarge(eps); - - for (auto& i : edge_tree.select_box(b)) { - if (i == edge_index) { - // Skip self-selection - continue; - } - - if (edges[i].first == shape_index) { - // Skip edges of the same operand - continue; - } - - const TopoDS_Edge& e0 = TopoDS::Edge(exp.Current()); - const TopoDS_Edge& e1 = edges[i].second; - - double u11, u12, u21, u22, U1, U2; - - GeomAPI_ExtremaCurveCurve ecc( - BRep_Tool::Curve(e0, u11, u12), - BRep_Tool::Curve(e1, u21, u22) - ); - - // @todo: extend this to work in case of multiple extrema and curved segments. - const bool unbounded_intersects = (!ecc.Extrema().IsParallel() && ecc.NbExtrema() == 1 && ecc.Distance(1) < eps); - if (unbounded_intersects) { - ecc.Parameters(1, U1, U2); - - if (u11 > u12) { - std::swap(u11, u12); - } - if (u21 > u22) { - std::swap(u21, u22); - } - - /// @todo: tfk: probably need different thresholds on non-linear curves - u11 -= eps; - u12 += eps; - u21 -= eps; - u22 += eps; - - if (u11 < U1 && U1 < u12 && u21 < U2 && U2 < u22) { - // Edge curves belonging to different operands intersect, don't process - // using builder. - Logger::Notice("Intersecting boundaries"); - return false; - } - } - } - } - } - - // Only inner wires are considered that are directly contained in the outer wire - // Redundant subtractions are eliminated. - - std::vector redundant(wires.size(), false); - - std::vector wire_faces; - wire_faces.reserve(wires.size()); - - std::vector wire_clss; - wire_clss.reserve(wires.size()); - - std::vector> sass; - sass.reserve(wires.size()); - - for (auto& w : wires) { - wire_faces.push_back(BRepBuilderAPI_MakeFace(w).Face()); - wire_clss.emplace_back(wire_faces.back(), eps); - sass.push_back(std::make_unique(BRep_Tool::Surface(wire_faces.back()))); - } - - // First check for containment in outer wire - for (auto it = ++wires.begin(); it != wires.end(); ++it) { - // Considering a single vertex is sufficient because we have already - // guaranteed that the edges of different operands do not cross. - TopoDS_Iterator it_ed(*it); - auto& ed = it_ed.Value(); - - TopoDS_Iterator it_v(ed); - auto& v = TopoDS::Vertex(it_v.Value()); - - auto pnt = BRep_Tool::Pnt(v); - auto p2d = sass[0]->ValueOfUV(pnt, eps); - if (wire_clss[0].Perform(p2d) != TopAbs_IN) { - // A wire is not contained in the outer wire, it's a subtraction without - // any effect and marked as redundant. Feeding it to the builder algo - // will likely cause problems. - redundant[std::distance(wires.begin(), it)] = true; - Logger::Notice("Subtraction operand outside of outer bound"); - } - } - - // Now build a tree to find inner wires contained in other inner wires - // NB first wire is *not* in this tree - IfcGeom::impl::tree wire_tree; - for (size_t wire_index = 1; wire_index < wires.size(); ++wire_index) { - wire_tree.add(wire_index, wires[wire_index]); - } - - for (size_t wire_index = 1; wire_index < wires.size(); ++wire_index) { - Bnd_Box b; - BRepBndLib::Add(wires[wire_index], b); - b.Enlarge(eps); - - // We're only selecting operands completely within b because we - // have already guaranteed they do not intersect. So they are - // either fully in or out. Selecting with complete_within=true - // will filter out some unnecessary cases. It also means we need - // that due this assymetry we need to process all pairs of wire - // indices and not just the pairs where the first element is less - // than the second element. - for (auto& other_index : wire_tree.select_box(b, true)) { - // other_index is fully contained in wire_index - if (wire_index == other_index) { - continue; - } - - TopoDS_Iterator it_ed(wires[other_index]); - auto& ed = it_ed.Value(); - - TopoDS_Iterator it_v(ed); - auto& v = TopoDS::Vertex(it_v.Value()); - - auto pnt = BRep_Tool::Pnt(v); - auto p2d = sass[wire_index]->ValueOfUV(pnt, eps); - if (wire_clss[wire_index].Perform(p2d) == TopAbs_IN) { - // A wire is contained within another operand - redundant[other_index] = true; - Logger::Notice("Subtraction operand contained in other"); - } - } - } - - BRepBuilderAPI_MakeFace mf(wire_faces[0]); - for (size_t wire_index = 1; wire_index < wires.size(); ++wire_index) { - if (!redundant[wire_index]) { - mf.Add(TopoDS::Wire(wires[wire_index].Reversed())); - } - } - result = mf.Face(); - - return true; - } -} - bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTools_ListOfShape& b_input, BOPAlgo_Operation op, TopoDS_Shape& result, double fuzziness) { + using namespace std::string_literals; const bool do_unify = true; const bool do_subtraction_eliminate_disjoint_bbox = true; @@ -4808,11 +4036,25 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo if (do_unify) { PERF("boolean operation: unifying operands"); - a = unify(a_input, fuzziness); + a = util::unify(a_input, fuzziness * 1000.); + + Logger::Notice( + "Simplified operand A from "s + + std::to_string(count(a_input, TopAbs_FACE)) + + " to "s + + std::to_string(count(a, TopAbs_FACE)) + ); + { TopTools_ListIteratorOfListOfShape it(b_input); for (; it.More(); it.Next()) { - b.Append(unify(it.Value(), fuzziness)); + b.Append(util::unify(it.Value(), fuzziness)); + Logger::Notice( + "Simplified operand B from "s + + std::to_string(count(it.Value(), TopAbs_FACE)) + + " to "s + + std::to_string(count(b.Last(), TopAbs_FACE)) + ); } } } else { @@ -4830,7 +4072,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo if (do_subtraction_eliminate_disjoint_bbox) { PERF("boolean subtraction: eliminate disjoint bbox"); - auto N = bounding_box_overlap(fuzziness, a, b, b_tmp); + auto N = util::bounding_box_overlap(fuzziness, a, b, b_tmp); if (N) { Logger::Notice("Eliminated " + std::to_string(N) + " disjoint operands"); std::swap(b, b_tmp); @@ -4841,7 +4083,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo PERF("boolean subtraction: eliminate touching"); b_tmp.Clear(); - auto N = eliminate_touching_operands(fuzziness, a, b, b_tmp); + auto N = util::eliminate_touching_operands(fuzziness, a, b, b_tmp); if (N) { Logger::Notice("Eliminated " + std::to_string(N) + " touching operands"); std::swap(b, b_tmp); @@ -4869,10 +4111,10 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo { PERF("boolean operation: min edge length"); - min_length_orig = min_edge_length(a); + min_length_orig = util::min_edge_length(a); TopTools_ListIteratorOfListOfShape it(b); for (; it.More(); it.Next()) { - double d = min_edge_length(it.Value()); + double d = util::min_edge_length(it.Value()); if (d < min_length_orig) { min_length_orig = d; } @@ -4882,14 +4124,14 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo { PERF("boolean operation: min vertex-edge dist"); - double d = min_vertex_edge_distance(a, getValue(GV_PRECISION), min_length_orig); + double d = util::min_vertex_edge_distance(a, getValue(GV_PRECISION), min_length_orig); if (d < min_length_orig) { min_length_orig = d; } TopTools_ListIteratorOfListOfShape it(b); for (; it.More(); it.Next()) { - d = min_vertex_edge_distance(it.Value(), getValue(GV_PRECISION), min_length_orig); + d = util::min_vertex_edge_distance(it.Value(), getValue(GV_PRECISION), min_length_orig); if (d < min_length_orig) { min_length_orig = d; } @@ -4901,7 +4143,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo Logger::Notice("Used fuzziness: " + std::to_string(fuzz)); TopTools_ListOfShape s1s; - s1s.Append(copy_operand(a)); + s1s.Append(util::copy_operand(a)); if (debug) { TopTools_ListOfShape* lists[2] = { &s1s, &b }; @@ -4925,7 +4167,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo if (do_attempt_2d_boolean) { PERF("boolean subtraction: extrusion check"); - is_extrusion_a = is_extrusion(gp::DY(), a, a_face, a_interval); + is_extrusion_a = util::is_extrusion(gp::DY(), a, a_face, a_interval); } if (is_extrusion_a) { @@ -4941,7 +4183,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo { PERF("boolean subtraction: extrusion check"); - is_extrusion_b = is_extrusion(gp::DY(), it.Value(), b_face, b_interval); + is_extrusion_b = util::is_extrusion(gp::DY(), it.Value(), b_face, b_interval); } if (is_extrusion_b) { @@ -4972,7 +4214,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo PERF("boolean operation: 2d builder"); // First try using face builder - boolean_op_2d_success = boolean_subtraction_2d_using_builder(a_face, b_faces, face_result, fuzziness); + boolean_op_2d_success = util::boolean_subtraction_2d_using_builder(a_face, b_faces, face_result, fuzziness); } if (!boolean_op_2d_success) { @@ -5014,7 +4256,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo #endif builder->SetFuzzyValue(fuzz); builder->SetArguments(s1s); - copy_operand(b, b_tmp); + util::copy_operand(b, b_tmp); std::swap(b, b_tmp); builder->SetTools(b); { @@ -5130,7 +4372,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo auto& fi = it4.Value(); for (TopTools_ListIteratorOfListOfShape it2(faces_j); it2.More(); it2.Next()) { auto& fj = it2.Value(); - if (faces_overlap(TopoDS::Face(fi), TopoDS::Face(fj))) { + if (util::faces_overlap(TopoDS::Face(fi), TopoDS::Face(fj))) { overlap = true; } } @@ -5209,7 +4451,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo { PERF("boolean operation: result min edge length check"); - if ((v = min_edge_length(r)) < fuzziness * 3.) { + if ((v = util::min_edge_length(r)) < fuzziness * 3.) { reason = 0; success = false; @@ -5220,7 +4462,7 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo { PERF("boolean operation: result min vertex-edge dist check"); - if ((v = min_vertex_edge_distance(r, getValue(GV_PRECISION), fuzziness * 3.)) < fuzziness * 3.) { + if ((v = util::min_vertex_edge_distance(r, getValue(GV_PRECISION), fuzziness * 3.)) < fuzziness * 3.) { reason = 1; success = false; @@ -5231,9 +4473,9 @@ bool IfcGeom::Kernel::boolean_operation(const TopoDS_Shape& a_input, const TopTo { PERF("boolean operation: result min face-face dist check"); - if ((v = min_face_face_distance(r, 1.e-4)) < 1.e-4) { + if ((v = util::min_face_face_distance(r, 1.e-4)) < 1.e-4) { // #2095 Check if this distance wasn't already realized in the input first operand. - if (v < min_face_face_distance(a, 1.e-4)) { + if (v < util::min_face_face_distance(a, 1.e-4)) { reason = 2; success = false; } @@ -5653,3 +4895,136 @@ IfcGeom::Kernel::faceset_helper::faceset_helper( template class IfcGeom::Kernel::faceset_helper; template class IfcGeom::Kernel::faceset_helper, std::vector>; + +void IfcGeom::Kernel::set_conversion_placement_rel_to_type(const IfcParse::declaration* type) { + placement_rel_to_type_ = type; +} + +void IfcGeom::Kernel::set_conversion_placement_rel_to_instance(const IfcUtil::IfcBaseEntity* instance) { + placement_rel_to_instance_ = instance; +} + + +namespace { + + bool process_colour(IfcSchema::IfcColourRgb* colour, double* rgb) { + if (colour != 0) { + rgb[0] = colour->Red(); + rgb[1] = colour->Green(); + rgb[2] = colour->Blue(); + } + return colour != 0; + } + + bool process_colour(IfcSchema::IfcNormalisedRatioMeasure* factor, double* rgb) { + if (factor != 0) { + const double f = *factor; + rgb[0] = rgb[1] = rgb[2] = f; + } + return factor != 0; + } + + bool process_colour(IfcSchema::IfcColourOrFactor* colour_or_factor, double* rgb) { + if (colour_or_factor == 0) { + return false; + } else if (colour_or_factor->declaration().is(IfcSchema::IfcColourRgb::Class())) { + return process_colour(static_cast(colour_or_factor), rgb); + } else if (colour_or_factor->declaration().is(IfcSchema::IfcNormalisedRatioMeasure::Class())) { + return process_colour(static_cast(colour_or_factor), rgb); + } else { + return false; + } + } + +} + +#define Kernel MAKE_TYPE_NAME(Kernel) + +std::shared_ptr IfcGeom::Kernel::internalize_surface_style(const std::pair& shading_styles) { + if (shading_styles.second == 0) { + return 0; + } + int surface_style_id = shading_styles.first->data().id(); + auto it = style_cache.find(surface_style_id); + if (it != style_cache.end()) { + return it->second; + } + + + IfcSchema::IfcSurfaceStyle* style = shading_styles.first->as(); + IfcSchema::IfcSurfaceStyleShading* shading = shading_styles.second->as(); + + std::shared_ptr surface_style_ptr; + + if (style->Name()) { + surface_style_ptr.reset(new SurfaceStyle(surface_style_id, *style->Name())); + } else { + surface_style_ptr.reset(new SurfaceStyle(surface_style_id)); + } + + std::shared_ptr surface_style_ptr_const = std::const_pointer_cast(surface_style_ptr); + SurfaceStyle& surface_style = *surface_style_ptr; + + double rgb[3]; + if (process_colour(shading->SurfaceColour(), rgb)) { + surface_style.Diffuse().reset(SurfaceStyle::ColorComponent(rgb[0], rgb[1], rgb[2])); + } + if (shading_styles.second->declaration().is(IfcSchema::IfcSurfaceStyleRendering::Class())) { + IfcSchema::IfcSurfaceStyleRendering* rendering_style = static_cast(shading_styles.second); + if (rendering_style->DiffuseColour() && process_colour(rendering_style->DiffuseColour(), rgb)) { + SurfaceStyle::ColorComponent diffuse = surface_style.Diffuse().get_value_or(SurfaceStyle::ColorComponent(1, 1, 1)); + surface_style.Diffuse().reset(SurfaceStyle::ColorComponent(diffuse.R() * rgb[0], diffuse.G() * rgb[1], diffuse.B() * rgb[2])); + } + if (rendering_style->DiffuseTransmissionColour()) { + // Not supported + } + if (rendering_style->ReflectionColour()) { + // Not supported + } + if (rendering_style->SpecularColour() && process_colour(rendering_style->SpecularColour(), rgb)) { + surface_style.Specular().reset(SurfaceStyle::ColorComponent(rgb[0], rgb[1], rgb[2])); + } + if (rendering_style->SpecularHighlight()) { + IfcSchema::IfcSpecularHighlightSelect* highlight = rendering_style->SpecularHighlight(); + if (highlight->declaration().is(IfcSchema::IfcSpecularRoughness::Class())) { + double roughness = *((IfcSchema::IfcSpecularRoughness*)highlight); + if (roughness >= 1e-9) { + surface_style.Specularity().reset(1.0 / roughness); + } + } else if (highlight->declaration().is(IfcSchema::IfcSpecularExponent::Class())) { + surface_style.Specularity().reset(*((IfcSchema::IfcSpecularExponent*)highlight)); + } + } + if (rendering_style->TransmissionColour()) { + // Not supported + } + if (rendering_style->Transparency()) { + const double d = *rendering_style->Transparency(); + surface_style.Transparency().reset(d); + } + } + return style_cache[surface_style_id] = surface_style_ptr_const; +} + +std::shared_ptr IfcGeom::Kernel::get_style(const IfcSchema::IfcRepresentationItem* item) { + return internalize_surface_style(get_surface_style(item)); +} + +std::shared_ptr IfcGeom::Kernel::get_style(const IfcSchema::IfcMaterial* material) { + IfcSchema::IfcMaterialDefinitionRepresentation::list::ptr defs = material->HasRepresentation(); + for (IfcSchema::IfcMaterialDefinitionRepresentation::list::it jt = defs->begin(); jt != defs->end(); ++jt) { + IfcSchema::IfcRepresentation::list::ptr reps = (*jt)->Representations(); + IfcSchema::IfcStyledItem::list::ptr styles(new IfcSchema::IfcStyledItem::list); + for (IfcSchema::IfcRepresentation::list::it it = reps->begin(); it != reps->end(); ++it) { + styles->push((**it).Items()->as()); + } + for (IfcSchema::IfcStyledItem::list::it it = styles->begin(); it != styles->end(); ++it) { + const std::pair ss = get_surface_style(*it); + if (ss.second) { + return internalize_surface_style(ss); + } + } + } + auto material_style = std::make_shared(material->data().id(), material->Name()); + return style_cache[material->data().id()] = material_style; +} diff --git a/src/ifcgeom/IfcGeom.h b/src/ifcgeom/IfcGeom.h index 69a04f1339..ae0ec58d06 100644 --- a/src/ifcgeom/IfcGeom.h +++ b/src/ifcgeom/IfcGeom.h @@ -23,13 +23,6 @@ #include #include -static const double ALMOST_ZERO = 1.e-9; - -template -inline static bool ALMOST_THE_SAME(const T& a, const T& b, double tolerance=ALMOST_ZERO) { - return fabs(a-b) < tolerance; -} - #include #include #include @@ -54,14 +47,12 @@ inline static bool ALMOST_THE_SAME(const T& a, const T& b, double tolerance=ALMO #include "../ifcparse/IfcParse.h" #include "../ifcparse/IfcBaseClass.h" -#include "../ifcgeom/IfcGeomElement.h" -#include "../ifcgeom/IfcGeomRepresentation.h" -#include "../ifcgeom/IfcRepresentationShapeItem.h" -#include "../ifcgeom/IfcGeomShapeType.h" - +#include "../ifcgeom_schema_agnostic/IfcGeomElement.h" +#include "../ifcgeom_schema_agnostic/IfcGeomRepresentation.h" +#include "../ifcgeom_schema_agnostic/IfcRepresentationShapeItem.h" +#include "../ifcgeom_schema_agnostic/IfcGeomShapeType.h" #include "../ifcgeom_schema_agnostic/Kernel.h" - -#include "ifc_geom_api.h" +#include "../ifcgeom_schema_agnostic/ifc_geom_api.h" // Define this in case you want to conserve memory usage at all cost. This has been // benchmarked extensively: https://github.com/IfcOpenShell/IfcOpenShell/pull/47 @@ -87,24 +78,7 @@ if ( it != cache.T.end() ) { e = it->second; return true; } #include INCLUDE_PARENT_DIR(IfcSchema) namespace IfcGeom { - class IFC_GEOM_API geometry_exception : public std::exception { - protected: - std::string message; - public: - geometry_exception(const std::string& m) - : message(m) {} - virtual ~geometry_exception() throw () {} - virtual const char* what() const throw() { - return message.c_str(); - } - }; - - class IFC_GEOM_API too_many_faces_exception : public geometry_exception { - public: - too_many_faces_exception() - : geometry_exception("Too many faces for operation") {} - }; - + class IFC_GEOM_API MAKE_TYPE_NAME(Cache) { public: #include "mapping_cache.i" diff --git a/src/ifcgeom/IfcGeomCurves.cpp b/src/ifcgeom/IfcGeomCurves.cpp deleted file mode 100644 index 92c14ce31c..0000000000 --- a/src/ifcgeom/IfcGeomCurves.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Implementations of the various conversion functions defined in mapping.i * - * * - ********************************************************************************/ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include - -#include "../ifcgeom/IfcGeom.h" - -#ifdef SCHEMA_HAS_IfcBSplineCurveWithKnots -#include -#endif - -#define Kernel MAKE_TYPE_NAME(Kernel) - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCircle* l, Handle(Geom_Curve)& curve) { - const double r = l->Radius() * getValue(GV_LENGTH_UNIT); - if ( r < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_ERROR, "Radius not greater than zero for:", l); - return false; - } - gp_Trsf trsf; - IfcSchema::IfcAxis2Placement* placement = l->Position(); - if (placement->as()) { - IfcGeom::Kernel::convert(placement->as(),trsf); - } else { - gp_Trsf2d trsf2d; - IfcGeom::Kernel::convert(placement->as(),trsf2d); - trsf = trsf2d; - } - gp_Ax2 ax = gp_Ax2().Transformed(trsf); - curve = new Geom_Circle(ax, r); - return true; -} -bool IfcGeom::Kernel::convert(const IfcSchema::IfcEllipse* l, Handle(Geom_Curve)& curve) { - double x = l->SemiAxis1() * getValue(GV_LENGTH_UNIT); - double y = l->SemiAxis2() * getValue(GV_LENGTH_UNIT); - if (x < ALMOST_ZERO || y < ALMOST_ZERO) { - Logger::Message(Logger::LOG_ERROR, "Radius not greater than zero for:", l); - return false; - } - // Open Cascade does not allow ellipses of which the minor radius - // is greater than the major radius. Hence, in this case, the - // ellipse is rotated. Note that special care needs to be taken - // when creating a trimmed curve off of an ellipse like this. - const bool rotated = y > x; - gp_Trsf trsf; - - IfcSchema::IfcAxis2Placement* placement = l->Position(); - if (placement->as()) { - IfcGeom::Kernel::convert(placement->as(), trsf); - } else { - gp_Trsf2d trsf2d; - IfcGeom::Kernel::convert(placement->as(), trsf2d); - trsf = trsf2d; - } - - gp_Ax2 ax = gp_Ax2(); - if (rotated) { - ax.Rotate(ax.Axis(), M_PI / 2.); - std::swap(x, y); - } - ax.Transform(trsf); - curve = new Geom_Ellipse(ax, x, y); - return true; -} - -#ifdef SCHEMA_HAS_IfcSurfaceCurve -bool IfcGeom::Kernel::convert(const IfcSchema::IfcSurfaceCurve* sc, Handle(Geom_Curve)& curve) { - // @todo take into account PCurves. - return convert_curve(sc->Curve3D(), curve); -} -#endif - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcLine* l, Handle(Geom_Curve)& curve) { - gp_Pnt pnt;gp_Vec vec; - convert(l->Pnt(),pnt); - convert(l->Dir(),vec); - // See note at IfcGeomWires.cpp:237 - curve = new Geom_Line(pnt,vec); - return true; -} - -#ifdef SCHEMA_HAS_IfcBSplineCurveWithKnots -bool IfcGeom::Kernel::convert(const IfcSchema::IfcBSplineCurveWithKnots* l, Handle(Geom_Curve)& curve) { - - const bool is_rational = l->declaration().is(IfcSchema::IfcRationalBSplineCurveWithKnots::Class()); - - const IfcSchema::IfcCartesianPoint::list::ptr cps = l->ControlPointsList(); - const std::vector mults = l->KnotMultiplicities(); - const std::vector knots = l->Knots(); - - TColgp_Array1OfPnt Poles(0, cps->size() - 1); - TColStd_Array1OfReal Weights(0, cps->size() - 1); - TColStd_Array1OfReal Knots(0, (int)knots.size() - 1); - TColStd_Array1OfInteger Mults(0, (int)mults.size() - 1); - Standard_Integer Degree = l->Degree(); - Standard_Boolean Periodic = false; - // @tfk: it appears to be wrong to expect a period curve when the curve is closed, see #586 - // Standard_Boolean Periodic = l->ClosedCurve(); - - int i; - - if (is_rational) { - IfcSchema::IfcRationalBSplineCurveWithKnots* rl = (IfcSchema::IfcRationalBSplineCurveWithKnots*)l; - std::vector weights = rl->WeightsData(); - - i = 0; - for (std::vector::const_iterator it = weights.begin(); it != weights.end(); ++it, ++i) { - Weights(i) = *it; - } - } - - i = 0; - for (IfcSchema::IfcCartesianPoint::list::it it = cps->begin(); it != cps->end(); ++it, ++i) { - gp_Pnt pnt; - if (!convert(*it, pnt)) return false; - Poles(i) = pnt; - } - - i = 0; - for (std::vector::const_iterator it = mults.begin(); it != mults.end(); ++it, ++i) { - Mults(i) = *it; - } - - i = 0; - for (std::vector::const_iterator it = knots.begin(); it != knots.end(); ++it, ++i) { - Knots(i) = *it; - } - - if (is_rational) { - curve = new Geom_BSplineCurve(Poles, Weights, Knots, Mults, Degree, Periodic); - } else { - curve = new Geom_BSplineCurve(Poles, Knots, Mults, Degree, Periodic); - } - return true; -} -#endif \ No newline at end of file diff --git a/src/ifcgeom/IfcGeomFaces.cpp b/src/ifcgeom/IfcGeomFaces.cpp deleted file mode 100644 index 7d2d339282..0000000000 --- a/src/ifcgeom/IfcGeomFaces.cpp +++ /dev/null @@ -1,1284 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Implementations of the various conversion functions defined in mapping.i * - * * - ********************************************************************************/ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include - -#include - -#include -#include - -#include - -#include -#include -#include -#include -#include - -#include "../ifcgeom/IfcGeom.h" - -#ifdef SCHEMA_HAS_IfcBSplineSurfaceWithKnots -#include -#include -#include -#include -#endif - -#define Kernel MAKE_TYPE_NAME(Kernel) - -namespace { - /* Returns whether wire conforms to a polyhedron, i.e. only edges with linear curves*/ - bool is_polyhedron(const TopoDS_Wire& wire) { - double a, b; - TopLoc_Location l; - - TopoDS_Iterator it(wire, false, false); - for (; it.More(); it.Next()) { - auto crv = BRep_Tool::Curve(TopoDS::Edge(it.Value()), l, a, b); - if (!crv || crv->DynamicType() != STANDARD_TYPE(Geom_Line)) { - return false; - } - } - - return true; - } - - /* A temporary structure to store the intermediate data for the face conversion */ - class face_definition { - private: - Handle(Geom_Surface) surface_; - std::vector wires_; - bool all_outer_; - public: - face_definition() : surface_(), all_outer_(false) {} - - typedef std::vector::const_iterator wire_it; - - bool& all_outer() { - return all_outer_; - } - - bool all_outer() const { - return all_outer_; - } - - Handle(Geom_Surface)& surface() { - return surface_; - } - - const Handle(Geom_Surface)& surface() const { - return surface_; - } - - std::vector& wires() { - return wires_; - } - - const TopoDS_Wire& outer_wire() const { - return wires_.front(); - } - - std::pair inner_wires() const { - return { wires_.begin() + 1, wires_.end() }; - } - }; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcFace* l, TopoDS_Shape& result) { - IfcSchema::IfcFaceBound::list::ptr bounds = l->Bounds(); - - face_definition fd; - - const bool is_face_surface = l->declaration().is(IfcSchema::IfcFaceSurface::Class()); - - if (is_face_surface) { - IfcSchema::IfcFaceSurface* fs = (IfcSchema::IfcFaceSurface*) l; - fs->FaceSurface(); - // FIXME: Surfaces are interpreted as a TopoDS_Shape - TopoDS_Shape surface_shape; - if (!convert_shape(fs->FaceSurface(), surface_shape)) return false; - - // FIXME: Assert this obtaines the only face - TopExp_Explorer exp(surface_shape, TopAbs_FACE); - if (!exp.More()) return false; - - TopoDS_Face surface = TopoDS::Face(exp.Current()); - fd.surface() = BRep_Tool::Surface(surface); - } - - const int num_bounds = bounds->size(); - int num_outer_bounds = 0; - - for (IfcSchema::IfcFaceBound::list::it it = bounds->begin(); it != bounds->end(); ++it) { - IfcSchema::IfcFaceBound* bound = *it; - if (bound->declaration().is(IfcSchema::IfcFaceOuterBound::Class())) num_outer_bounds ++; - } - - // The number of outer bounds should be one according to the schema. Also Open Cascade - // expects this, but it is not strictly checked. Regardless, if the number is greater, - // the face will still be processed as long as there are no holes. A compound of faces - // is returned in that case. - if (num_bounds > 1 && num_outer_bounds > 1 && num_bounds != num_outer_bounds) { - Logger::Message(Logger::LOG_ERROR, "Invalid configuration of boundaries for:", l); - return false; - } - - if (num_outer_bounds > 1) { - Logger::Message(Logger::LOG_WARNING, "Multiple outer boundaries for:", l); - fd.all_outer() = true; - } - - TopTools_DataMapOfShapeInteger wire_senses; - - for (int process_interior = 0; process_interior <= 1; ++process_interior) { - for (IfcSchema::IfcFaceBound::list::it it = bounds->begin(); it != bounds->end(); ++it) { - IfcSchema::IfcFaceBound* bound = *it; - IfcSchema::IfcLoop* loop = bound->Bound(); - - bool same_sense = bound->Orientation(); - const bool is_interior = - !bound->declaration().is(IfcSchema::IfcFaceOuterBound::Class()) && - (num_bounds > 1) && - (num_outer_bounds < num_bounds); - - // The exterior face boundary is processed first - if (is_interior == !process_interior) continue; - - TopoDS_Wire wire; - if (faceset_helper_ && loop->as()) { - if (!faceset_helper_->wire(loop->as(), wire)) { - Logger::Message(Logger::LOG_WARNING, "Face boundary loop not included", loop); - continue; - } - } else if (!convert_wire(loop, wire)) { - Logger::Message(Logger::LOG_ERROR, "Failed to process face boundary loop", loop); - return false; - } - - if (!same_sense) { - wire.Reverse(); - } - - wire_senses.Bind(wire.Oriented(TopAbs_FORWARD), same_sense ? TopAbs_FORWARD : TopAbs_REVERSED); - - fd.wires().emplace_back(wire); - } - } - - if (fd.wires().empty()) { - Logger::Warning("Face with no boundaries", l); - return false; - } - - if (fd.surface().IsNull()) { - // Use the first wire to find a plane manually for polygonal wires - const TopoDS_Wire& wire = fd.wires().front(); - if (is_polyhedron(wire)) { - TopExp_Explorer exp(wire, TopAbs_EDGE); - int count = 0; - TopoDS_Edge edges[2]; - for (; exp.More(); exp.Next(), count++) { - if (count < 2) { - edges[count] = TopoDS::Edge(exp.Current()); - } - } - - if (count == 3) { - // Help Open Cascade by finding the plane more efficiently - double _, __; - Handle(Geom_Line) c1 = Handle(Geom_Line)::DownCast(BRep_Tool::Curve(edges[0], _, __)); - Handle(Geom_Line) c2 = Handle(Geom_Line)::DownCast(BRep_Tool::Curve(edges[1], _, __)); - - const gp_Vec ab = c1->Position().Direction(); - const gp_Vec ac = c2->Position().Direction(); - const gp_Vec cross = ab.Crossed(ac); - - if (cross.SquareMagnitude() > ALMOST_ZERO) { - const gp_Dir n = cross; - fd.surface() = new Geom_Plane(c1->Position().Location(), n); - } - } else { - gp_Pln pln; - if (approximate_plane_through_wire(wire, pln)) { - fd.surface() = new Geom_Plane(pln); - } - } - } - } - - if (fd.surface().IsNull()) { - // BRepLib_FindSurface is used in case no surface is found or provided - - const TopoDS_Wire& wire = fd.wires().front(); - - BRepLib_FindSurface fs(wire, getValue(GV_PRECISION), true, true); - if (fs.Found()) { - fd.surface() = fs.Surface(); - ShapeFix_ShapeTolerance ftol; - ftol.SetTolerance(wire, fs.ToleranceReached(), TopAbs_WIRE); - } - } - - TopTools_ListOfShape face_list; - - if (fd.surface().IsNull()) { - // The set of wires is triangulated in case no surface can be found - Logger::Message(Logger::LOG_WARNING, "Triangulating face boundaries for face", l); - - if (fd.all_outer()) { - for (const auto& w : fd.wires()) { - TopTools_ListOfShape fl; - triangulate_wire({ w }, fl); - face_list.Append(fl); - } - } else { - triangulate_wire(fd.wires(), face_list); - } - } else if (!fd.all_outer()) { - BRepBuilderAPI_MakeFace mf(fd.surface(), fd.outer_wire()); - TopoDS_Face f = mf.Face(); - - if (mf.IsDone()) { - if (std::distance(fd.inner_wires().first, fd.inner_wires().second)) { - mf.Init(f); - - for (auto it = fd.inner_wires().first; it != fd.inner_wires().second; ++it) { - mf.Add(*it); - } - - face_list.Append(mf.Face()); - } else { - face_list.Append(f); - } - } - } else { - for (const auto& w : fd.wires()) { - BRepBuilderAPI_MakeFace mf(fd.surface(), w); - if (mf.IsDone()) { - face_list.Append(mf.Face()); - } - } - } - - if (!fd.surface().IsNull()) { - // Some fixes for orientation and p-curves. If we have no surface, it - // means the face has been triangulated in which case none of these - // fixes are necessary. - - if (fd.surface()->DynamicType() != STANDARD_TYPE(Geom_Plane)) { - // In case of (non-planar) face surface, p-curves need to be computed. - // For planar faces, Open Cascade generates p-curves on the fly. - - for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { - ShapeFix_Shape sfs(it.Value()); - - Handle(ShapeExtend_MsgRegistrator) msg; - msg = new ShapeExtend_MsgRegistrator; - sfs.SetMsgRegistrator(msg); - - sfs.Perform(); - it.Value() = sfs.Shape(); - - ShapeExtend_DataMapIteratorOfDataMapOfShapeListOfMsg jt(msg->MapShape()); - for (; jt.More(); jt.Next()) { - Message_ListIteratorOfListOfMsg kt(jt.Value()); - for (; kt.More(); kt.Next()) { - char* c = new char[kt.Value().Value().LengthOfCString() + 1]; - kt.Value().Value().ToUTF8CString(c); - Logger::Notice(c, l); - delete[] c; - } - } - } - } - - for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { - const TopoDS_Face& face = TopoDS::Face(it.Value()); - - ShapeFix_Face sfs(TopoDS::Face(face)); - TopTools_DataMapOfShapeListOfShape wire_map; - sfs.FixOrientation(wire_map); - - TopoDS_Iterator jt(face, false); - for (; jt.More(); jt.Next()) { - const TopoDS_Wire& w = TopoDS::Wire(jt.Value()); - // tfk: @todo if wire_map contains w, I would assume wire_senses also contains w, - // this is not the case in github issue #405. - if (wire_map.IsBound(w) && wire_senses.IsBound(w)) { - const TopTools_ListOfShape& shapes = wire_map.Find(w); - TopTools_ListIteratorOfListOfShape kt(shapes); - for (; kt.More(); kt.Next()) { - // Apparently the wire got reversed, so register it with opposite orientation in the map - wire_senses.Bind(kt.Value(), wire_senses.Find(w) == TopAbs_FORWARD ? TopAbs_REVERSED : TopAbs_FORWARD); - } - } - } - - it.Value() = sfs.Face(); - } - - for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { - TopoDS_Face& face = TopoDS::Face(it.Value()); - - bool all_reversed = true; - TopoDS_Iterator jt(face, false); - for (; jt.More(); jt.Next()) { - const TopoDS_Wire& w = TopoDS::Wire(jt.Value()); - if (!wire_senses.IsBound(w.Oriented(TopAbs_FORWARD)) || (w.Orientation() == wire_senses.Find(w.Oriented(TopAbs_FORWARD)))) { - all_reversed = false; - } - } - - if (all_reversed) { - face.Reverse(); - } - } - } - - if (face_list.Extent() > 1) { - TopoDS_Compound compound; - BRep_Builder builder; - builder.MakeCompound(compound); - for (TopTools_ListIteratorOfListOfShape it(face_list); it.More(); it.Next()) { - TopoDS_Face& face = TopoDS::Face(it.Value()); - builder.Add(compound, face); - } - result = compound; - } else { - result = face_list.First(); - } - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcArbitraryClosedProfileDef* l, TopoDS_Shape& face) { - TopoDS_Wire wire; - if (!convert_wire(l->OuterCurve(), wire)) { - return false; - } - - assert_closed_wire(wire); - - TopoDS_Compound f; - bool success = convert_wire_to_faces(wire, f); - if (success) { - face = f; - } - return success; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcAnnotationFillArea* l, TopoDS_Shape& face) { - TopoDS_Wire outer_boundary; - if (!convert_wire(l->OuterBoundary(), outer_boundary)) { - return false; - } - - assert_closed_wire(outer_boundary); - - BRepBuilderAPI_MakeFace mf(outer_boundary); - - if (l->InnerBoundaries()) { - IfcSchema::IfcCurve::list::ptr inner_boundaries = *l->InnerBoundaries(); - - for(IfcSchema::IfcCurve::list::it it = inner_boundaries->begin(); it != inner_boundaries->end(); ++it) { - TopoDS_Wire hole; - if (convert_wire(*it, hole)) { - assert_closed_wire(hole); - mf.Add(hole); - } - } - } - - ShapeFix_Shape sfs(mf.Face()); - sfs.Perform(); - face = sfs.Shape(); - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcArbitraryProfileDefWithVoids* l, TopoDS_Shape& face) { - TopoDS_Wire profile; - if (!convert_wire(l->OuterCurve(), profile)) { - return false; - } - - assert_closed_wire(profile); - - BRepBuilderAPI_MakeFace mf(profile); - - IfcSchema::IfcCurve::list::ptr voids = l->InnerCurves(); - - for(IfcSchema::IfcCurve::list::it it = voids->begin(); it != voids->end(); ++it) { - TopoDS_Wire hole; - if (convert_wire(*it, hole)) { - assert_closed_wire(hole); - mf.Add(hole); - } - } - - ShapeFix_Shape sfs(mf.Face()); - sfs.Perform(); - face = sfs.Shape(); - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcRectangleProfileDef* l, TopoDS_Shape& face) { - const double x = l->XDim() / 2.0f * getValue(GV_LENGTH_UNIT); - const double y = l->YDim() / 2.0f * getValue(GV_LENGTH_UNIT); - - if ( x < ALMOST_ZERO || y < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords[8] = {-x,-y,x,-y,x,y,-x,y}; - return profile_helper(4,coords,0,0,0,trsf2d,face); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcRoundedRectangleProfileDef* l, TopoDS_Shape& face) { - const double x = l->XDim() / 2.0f * getValue(GV_LENGTH_UNIT); - const double y = l->YDim() / 2.0f * getValue(GV_LENGTH_UNIT); - const double r = l->RoundingRadius() * getValue(GV_LENGTH_UNIT); - - if ( x < ALMOST_ZERO || y < ALMOST_ZERO || r < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords[8] = {-x,-y, x,-y, x,y, -x,y}; - int fillets[4] = {0,1,2,3}; - double radii[4] = {r,r,r,r}; - return profile_helper(4,coords,4,fillets,radii,trsf2d,face); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcRectangleHollowProfileDef* l, TopoDS_Shape& face) { - const double x = l->XDim() / 2.0f * getValue(GV_LENGTH_UNIT); - const double y = l->YDim() / 2.0f * getValue(GV_LENGTH_UNIT); - const double d = l->WallThickness() * getValue(GV_LENGTH_UNIT); - - const bool fr1 = !!l->OuterFilletRadius(); - const bool fr2 = !!l->InnerFilletRadius(); - - const double r1 = fr1 ? (*l->OuterFilletRadius()) * getValue(GV_LENGTH_UNIT) : 0.; - const double r2 = fr2 ? (*l->InnerFilletRadius()) * getValue(GV_LENGTH_UNIT) : 0.; - - if ( x < ALMOST_ZERO || y < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - TopoDS_Face f1; - TopoDS_Face f2; - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords1[8] = {-x ,-y, x ,-y, x, y, -x, y }; - double coords2[8] = {-x+d,-y+d, x-d,-y+d, x-d,y-d, -x+d,y-d}; - double radii1[4] = {r1,r1,r1,r1}; - double radii2[4] = {r2,r2,r2,r2}; - int fillets[4] = {0,1,2,3}; - - bool s1 = profile_helper(4,coords1,fr1 ? 4 : 0,fillets,radii1,trsf2d,f1); - bool s2 = profile_helper(4,coords2,fr2 ? 4 : 0,fillets,radii2,trsf2d,f2); - - if (!s1 || !s2) return false; - - TopExp_Explorer exp1(f1, TopAbs_WIRE); - TopExp_Explorer exp2(f2, TopAbs_WIRE); - - TopoDS_Wire w1 = TopoDS::Wire(exp1.Current()); - TopoDS_Wire w2 = TopoDS::Wire(exp2.Current()); - - BRepBuilderAPI_MakeFace mf(w1, false); - mf.Add(w2); - - ShapeFix_Shape sfs(mf.Face()); - sfs.Perform(); - face = TopoDS::Face(sfs.Shape()); - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcTrapeziumProfileDef* l, TopoDS_Shape& face) { - const double x1 = l->BottomXDim() / 2. * getValue(GV_LENGTH_UNIT); - const double w = l->TopXDim() * getValue(GV_LENGTH_UNIT); - const double dx = l->TopXOffset() * getValue(GV_LENGTH_UNIT); - const double y = l->YDim() / 2. * getValue(GV_LENGTH_UNIT); - - // See: https://forums.buildingsmart.org/t/how-are-the-sides-of-ifctrapeziumprofiledefs-bounding-box-calculated-in-most-implementations/2945/8 - // The trapezium x center should not be midway of BottomXDim but rather at the center of the overall bounding box. - const double x_offset = ((std::min(dx, 0.) + std::max(w + dx, x1 * 2.)) / 2.) - x1; - - if ( x1 < ALMOST_ZERO || w < ALMOST_ZERO || y < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords[8] = { - -x1 - x_offset, -y, - +x1 - x_offset, -y, - -x1 + dx + w - x_offset, y, - -x1 + dx - x_offset,y - }; - return profile_helper(4,coords,0,0,0,trsf2d,face); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcIShapeProfileDef* l, TopoDS_Shape& face) { - const double x1 = l->OverallWidth() / 2.0f * getValue(GV_LENGTH_UNIT); - const double y = l->OverallDepth() / 2.0f * getValue(GV_LENGTH_UNIT); - const double d1 = l->WebThickness() / 2.0f * getValue(GV_LENGTH_UNIT); - const double dy1 = l->FlangeThickness() * getValue(GV_LENGTH_UNIT); - - bool doFillet1 = !!l->FilletRadius(); - double f1 = 0.; - if ( doFillet1 ) { - f1 = *l->FilletRadius() * getValue(GV_LENGTH_UNIT); - } - - bool doFillet2 = doFillet1; - double x2 = x1, dy2 = dy1, f2 = f1; - - // @todo in IFC4 a IfcAsymmetricIShapeProfileDef is not a subtype anymore of IfcIShapeProfileDef! - if (l->declaration().is(IfcSchema::IfcAsymmetricIShapeProfileDef::Class())) { - IfcSchema::IfcAsymmetricIShapeProfileDef* assym = (IfcSchema::IfcAsymmetricIShapeProfileDef*) l; - x2 = assym->TopFlangeWidth() / 2. * getValue(GV_LENGTH_UNIT); - doFillet2 = !!assym->TopFlangeFilletRadius(); - if (doFillet2) { - f2 = *assym->TopFlangeFilletRadius() * getValue(GV_LENGTH_UNIT); - } - if (assym->TopFlangeThickness()) { - dy2 = *assym->TopFlangeThickness() * getValue(GV_LENGTH_UNIT); - } - } - - if ( x1 < ALMOST_ZERO || x2 < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || dy1 < ALMOST_ZERO || dy2 < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords[24] = {-x1,-y, x1,-y, x1,-y+dy1, d1,-y+dy1, d1,y-dy2, x2,y-dy2, x2,y, -x2,y, -x2,y-dy2, -d1,y-dy2, -d1,-y+dy1, -x1,-y+dy1}; - int fillets[4] = {3,4,9,10}; - double radii[4] = {f1,f2,f2,f1}; - return profile_helper(12,coords,(doFillet1||doFillet2) ? 4 : 0,fillets,radii,trsf2d,face); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcZShapeProfileDef* l, TopoDS_Shape& face) { - const double x = l->FlangeWidth() * getValue(GV_LENGTH_UNIT); - const double y = l->Depth() / 2.0f * getValue(GV_LENGTH_UNIT); - const double dx = l->WebThickness() / 2.0f * getValue(GV_LENGTH_UNIT); - const double dy = l->FlangeThickness() * getValue(GV_LENGTH_UNIT); - - bool doFillet = !!l->FilletRadius(); - bool doEdgeFillet = !!l->EdgeRadius(); - - double f1 = 0.; - double f2 = 0.; - - if ( doFillet ) { - f1 = *l->FilletRadius() * getValue(GV_LENGTH_UNIT); - } - if ( doEdgeFillet ) { - f2 = *l->EdgeRadius() * getValue(GV_LENGTH_UNIT); - } - - if ( x == 0.0f || y == 0.0f || dx == 0.0f || dy == 0.0f ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords[16] = {-dx,-y, x,-y, x,-y+dy, dx,-y+dy, dx,y, -x,y, -x,y-dy, -dx,y-dy}; - int fillets[4] = {2,3,6,7}; - double radii[4] = {f2,f1,f2,f1}; - return profile_helper(8,coords,(doFillet || doEdgeFillet) ? 4 : 0,fillets,radii,trsf2d,face); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCShapeProfileDef* l, TopoDS_Shape& face) { - const double y = l->Depth() / 2.0f * getValue(GV_LENGTH_UNIT); - const double x = l->Width() / 2.0f * getValue(GV_LENGTH_UNIT); - const double d1 = l->WallThickness() * getValue(GV_LENGTH_UNIT); - const double d2 = l->Girth() * getValue(GV_LENGTH_UNIT); - bool doFillet = !!l->InternalFilletRadius(); - double f1 = 0; - double f2 = 0; - if ( doFillet ) { - f1 = *l->InternalFilletRadius() * getValue(GV_LENGTH_UNIT); - f2 = f1 + d1; - } - - if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || d2 < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords[24] = {-x,-y,x,-y,x,-y+d2,x-d1,-y+d2,x-d1,-y+d1,-x+d1,-y+d1,-x+d1,y-d1,x-d1,y-d1,x-d1,y-d2,x,y-d2,x,y,-x,y}; - int fillets[8] = {0,1,4,5,6,7,10,11}; - double radii[8] = {f2,f2,f1,f1,f1,f1,f2,f2}; - return profile_helper(12,coords,doFillet ? 8 : 0,fillets,radii,trsf2d,face); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcLShapeProfileDef* l, TopoDS_Shape& face) { - const bool hasSlope = !!l->LegSlope(); - const bool doEdgeFillet = !!l->EdgeRadius(); - const bool doFillet = !!l->FilletRadius(); - - const double y = l->Depth() / 2.0f * getValue(GV_LENGTH_UNIT); - const double x = l->Width().get_value_or(l->Depth()) / 2.0f * getValue(GV_LENGTH_UNIT); - const double d = l->Thickness() * getValue(GV_LENGTH_UNIT); - const double slope = l->LegSlope().get_value_or(0.) * getValue(GV_PLANEANGLE_UNIT); - - double f1 = 0.0f; - double f2 = 0.0f; - if (doFillet) { - f1 = *l->FilletRadius() * getValue(GV_LENGTH_UNIT); - } - if ( doEdgeFillet) { - f2 = *l->EdgeRadius() * getValue(GV_LENGTH_UNIT); - } - - if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - double xx = -x+d; - double xy = -y+d; - double dy1 = 0.; - double dy2 = 0.; - double dx1 = 0.; - double dx2 = 0.; - if (hasSlope) { - dy1 = tan(slope) * x; - dy2 = tan(slope) * (x - d); - dx1 = tan(slope) * y; - dx2 = tan(slope) * (y - d); - - const double x1s = x; const double y1s = -y + d - dy1; - const double x1e = -x + d; const double y1e = -y + d + dy2; - const double x2s = -x + d - dx1; const double y2s = y; - const double x2e = -x + d + dx2; const double y2e = -y + d; - - const double a1 = y1e - y1s; - const double b1 = x1s - x1e; - const double c1 = a1*x1s + b1*y1s; - - const double a2 = y2e - y2s; - const double b2 = x2s - x2e; - const double c2 = a2*x2s + b2*y2s; - - const double det = a1*b2 - a2*b1; - - if (ALMOST_THE_SAME(det, 0.)) { - Logger::Message(Logger::LOG_NOTICE, "Legs do not intersect for:",l); - return false; - } - - xx = (b2*c1 - b1*c2) / det; - xy = (a1*c2 - a2*c1) / det; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords[12] = {-x,-y, x,-y, x,-y+d-dy1, xx, xy, -x+d-dx1,y, -x,y}; - int fillets[3] = {2,3,4}; - double radii[3] = {f2,f1,f2}; - return profile_helper(6,coords,doFillet ? 3 : 0,fillets,radii,trsf2d,face); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcUShapeProfileDef* l, TopoDS_Shape& face) { - const bool doEdgeFillet = !!l->EdgeRadius(); - const bool doFillet = !!l->FilletRadius(); - const bool hasSlope = !!l->FlangeSlope(); - - const double y = l->Depth() / 2.0f * getValue(GV_LENGTH_UNIT); - const double x = l->FlangeWidth() / 2.0f * getValue(GV_LENGTH_UNIT); - const double d1 = l->WebThickness() * getValue(GV_LENGTH_UNIT); - const double d2 = l->FlangeThickness() * getValue(GV_LENGTH_UNIT); - const double slope = l->FlangeSlope().get_value_or(0.) * getValue(GV_PLANEANGLE_UNIT); - - double dy1 = 0.0f; - double dy2 = 0.0f; - double f1 = 0.0f; - double f2 = 0.0f; - - if (doFillet) { - f1 = *l->FilletRadius() * getValue(GV_LENGTH_UNIT); - } - if (doEdgeFillet) { - f2 = *l->EdgeRadius() * getValue(GV_LENGTH_UNIT); - } - - if (hasSlope) { - dy1 = (x - d1) * tan(slope); - dy2 = x * tan(slope); - } - - if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || d2 < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords[16] = {-x,-y, x,-y, x,-y+d2-dy2, -x+d1,-y+d2+dy1, -x+d1,y-d2-dy1, x,y-d2+dy2, x,y, -x,y}; - int fillets[4] = {2,3,4,5}; - double radii[4] = {f2,f1,f1,f2}; - return profile_helper(8, coords, (doFillet || doEdgeFillet) ? 4 : 0, fillets, radii, trsf2d, face); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcTShapeProfileDef* l, TopoDS_Shape& face) { - const bool doFlangeEdgeFillet = !!l->FlangeEdgeRadius(); - const bool doWebEdgeFillet = !!l->WebEdgeRadius(); - const bool doFillet = !!l->FilletRadius(); - const bool hasFlangeSlope = !!l->FlangeSlope(); - const bool hasWebSlope = !!l->WebSlope(); - - const double y = l->Depth() / 2.0f * getValue(GV_LENGTH_UNIT); - const double x = l->FlangeWidth() / 2.0f * getValue(GV_LENGTH_UNIT); - const double d1 = l->WebThickness() * getValue(GV_LENGTH_UNIT); - const double d2 = l->FlangeThickness() * getValue(GV_LENGTH_UNIT); - const double flangeSlope = hasFlangeSlope ? (*l->FlangeSlope() * getValue(GV_PLANEANGLE_UNIT)) : 0.; - const double webSlope = hasWebSlope ? (*l->WebSlope() * getValue(GV_PLANEANGLE_UNIT)) : 0.; - - if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || d2 < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - double dy1 = 0.0f; - double dy2 = 0.0f; - double dx1 = 0.0f; - double dx2 = 0.0f; - double f1 = 0.0f; - double f2 = 0.0f; - double f3 = 0.0f; - - if (doFillet) { - f1 = *l->FilletRadius() * getValue(GV_LENGTH_UNIT); - } - if (doWebEdgeFillet) { - f2 = *l->WebEdgeRadius() * getValue(GV_LENGTH_UNIT); - } - if (doFlangeEdgeFillet) { - f3 = *l->FlangeEdgeRadius() * getValue(GV_LENGTH_UNIT); - } - - double xx, xy; - if (hasFlangeSlope) { - dy1 = (x / 2. - d1) * tan(flangeSlope); - dy2 = x / 2. * tan(flangeSlope); - } - if (hasWebSlope) { - dx1 = (y - d2) * tan(webSlope); - dx2 = y * tan(webSlope); - } - if (hasWebSlope || hasFlangeSlope) { - const double x1s = d1/2. - dx2; const double y1s = -y; - const double x1e = d1/2. + dx1; const double y1e = y - d2; - const double x2s = x; const double y2s = y - d2 + dy2; - const double x2e = d1/2.; const double y2e = y - d2 - dy1; - - const double a1 = y1e - y1s; - const double b1 = x1s - x1e; - const double c1 = a1*x1s + b1*y1s; - - const double a2 = y2e - y2s; - const double b2 = x2s - x2e; - const double c2 = a2*x2s + b2*y2s; - - const double det = a1*b2 - a2*b1; - - if (ALMOST_THE_SAME(det, 0.)) { - Logger::Message(Logger::LOG_NOTICE, "Web and flange do not intersect for:",l); - return false; - } - - xx = (b2*c1 - b1*c2) / det; - xy = (a1*c2 - a2*c1) / det; - } else { - xx = d1 / 2; - xy = y - d2; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords[16] = {d1/2.-dx2,-y, xx,xy, x,y-d2+dy2, x,y, -x,y, -x,y-d2+dy2, -xx,xy, -d1/2.+dx2,-y}; - int fillets[6] = {0,1,2,5,6,7}; - double radii[6] = {f2,f1,f3,f3,f1,f2}; - return profile_helper(8, coords, (doFillet || doWebEdgeFillet || doFlangeEdgeFillet) ? 6 : 0, fillets, radii, trsf2d, face); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCircleProfileDef* l, TopoDS_Shape& face) { - const double r = l->Radius() * getValue(GV_LENGTH_UNIT); - if ( r == 0.0f ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - gp_Ax2 ax = gp_Ax2().Transformed(trsf2d); - - - Handle(Geom_Circle) circle = new Geom_Circle(ax, r); - TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(circle); - - BRepBuilderAPI_MakeWire w; - w.Add(edge); - - TopoDS_Face f; - bool success = convert_wire_to_face(w, f); - if (success) face = f; - return success; -} - -#ifdef SCHEMA_HAS_IfcCraneRailAShapeProfileDef -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCraneRailAShapeProfileDef* l, TopoDS_Shape& face) { - double oh = l->OverallHeight() * getValue(GV_LENGTH_UNIT); - double bw2 = l->BaseWidth2() * getValue(GV_LENGTH_UNIT); - double hw = l->HeadWidth() * getValue(GV_LENGTH_UNIT); - double hd2 = l->HeadDepth2() * getValue(GV_LENGTH_UNIT); - double hd3 = l->HeadDepth3() * getValue(GV_LENGTH_UNIT); - double wt = l->WebThickness() * getValue(GV_LENGTH_UNIT); - double bw4 = l->BaseWidth4() * getValue(GV_LENGTH_UNIT); - double bd1 = l->BaseDepth1() * getValue(GV_LENGTH_UNIT); - double bd2 = l->BaseDepth2() * getValue(GV_LENGTH_UNIT); - double bd3 = l->BaseDepth3() * getValue(GV_LENGTH_UNIT); - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - double coords[28] = { - -hw / 2., +oh / 2., - -hw / 2., +oh / 2. - hd3, - -wt / 2., +oh / 2. - hd2, - -wt / 2., -oh / 2. + bd2, - -bw4 / 2., -oh / 2. + bd3, - -bw2 / 2., -oh / 2. + bd1, - -bw2 / 2., -oh / 2., - +bw2 / 2., -oh / 2., - +bw2 / 2., -oh / 2. + bd1, - +bw4 / 2., -oh / 2. + bd3, - +wt / 2., -oh / 2. + bd2, - +wt / 2., +oh / 2. - hd2, - +hw / 2., +oh / 2. - hd3, - +hw / 2., +oh / 2. - }; - - return profile_helper(14, coords, 0, 0, 0, trsf2d, face); -} -#endif - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCircleHollowProfileDef* l, TopoDS_Shape& face) { - const double r = l->Radius() * getValue(GV_LENGTH_UNIT); - const double t = l->WallThickness() * getValue(GV_LENGTH_UNIT); - - if ( r == 0.0f || t == 0.0f ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - gp_Ax2 ax = gp_Ax2().Transformed(trsf2d); - - BRepBuilderAPI_MakeWire outer; - Handle(Geom_Circle) outerCircle = new Geom_Circle(ax, r); - outer.Add(BRepBuilderAPI_MakeEdge(outerCircle)); - BRepBuilderAPI_MakeFace mf(outer.Wire(), false); - - BRepBuilderAPI_MakeWire inner; - Handle(Geom_Circle) innerCirlce = new Geom_Circle(ax, r-t); - inner.Add(BRepBuilderAPI_MakeEdge(innerCirlce)); - mf.Add(inner); - - ShapeFix_Shape sfs(mf.Face()); - sfs.Perform(); - face = TopoDS::Face(sfs.Shape()); - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcEllipseProfileDef* l, TopoDS_Shape& face) { - double rx = l->SemiAxis1() * getValue(GV_LENGTH_UNIT); - double ry = l->SemiAxis2() * getValue(GV_LENGTH_UNIT); - - if ( rx < ALMOST_ZERO || ry < ALMOST_ZERO ) { - Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); - return false; - } - - const bool rotated = ry > rx; - - gp_Trsf2d trsf2d; - bool has_position = true; -#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf2d); - } - - gp_Ax2 ax = gp_Ax2(); - if (rotated) { - ax.Rotate(ax.Axis(), M_PI / 2.); - std::swap(rx, ry); - } - ax.Transform(trsf2d); - - BRepBuilderAPI_MakeWire w; - Handle(Geom_Ellipse) ellipse = new Geom_Ellipse(ax, rx, ry); - TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(ellipse); - w.Add(edge); - - TopoDS_Face f; - bool success = convert_wire_to_face(w, f); - if (success) face = f; - return success; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCenterLineProfileDef* l, TopoDS_Shape& face) { - const double d = l->Thickness() * getValue(GV_LENGTH_UNIT) / 2.; - - TopoDS_Wire wire; - if (!convert_wire(l->Curve(), wire)) return false; - - // BRepOffsetAPI_MakeOffset insists on creating circular arc - // segments for joining the curves that constitute the center - // line. This is probably not in accordance with the IFC spec. - // Although it does not specify a method to join segments - // explicitly, it does dictate 'a constant thickness along the - // curve'. Therefore for simple singular wires a quick - // alternative is provided that uses a straight join. - - TopExp_Explorer exp(wire, TopAbs_EDGE); - TopoDS_Edge edge = TopoDS::Edge(exp.Current()); - exp.Next(); - - if (!exp.More()) { - double u1, u2; - Handle(Geom_Curve) curve = BRep_Tool::Curve(edge, u1, u2); - - Handle(Geom_TrimmedCurve) trim = new Geom_TrimmedCurve(curve, u1, u2); - - Handle(Geom_OffsetCurve) c1 = new Geom_OffsetCurve(trim, d, gp::DZ()); - Handle(Geom_OffsetCurve) c2 = new Geom_OffsetCurve(trim, -d, gp::DZ()); - - gp_Pnt c1a, c1b, c2a, c2b; - c1->D0(c1->FirstParameter(), c1a); - c1->D0(c1->LastParameter(), c1b); - c2->D0(c2->FirstParameter(), c2a); - c2->D0(c2->LastParameter(), c2b); - - BRepBuilderAPI_MakeWire mw; - mw.Add(BRepBuilderAPI_MakeEdge(c1)); - mw.Add(BRepBuilderAPI_MakeEdge(c1a, c2a)); - mw.Add(BRepBuilderAPI_MakeEdge(c2)); - mw.Add(BRepBuilderAPI_MakeEdge(c2b, c1b)); - - face = BRepBuilderAPI_MakeFace(mw.Wire()); - } else { - BRepOffsetAPI_MakeOffset offset(BRepBuilderAPI_MakeFace(gp_Pln(gp::Origin(), gp::DZ()))); - offset.AddWire(wire); - offset.Perform(d); - face = BRepBuilderAPI_MakeFace(TopoDS::Wire(offset)); - } - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCompositeProfileDef* l, TopoDS_Shape& face) { - // BRepBuilderAPI_MakeFace mf; - - TopoDS_Compound compound; - BRep_Builder builder; - builder.MakeCompound(compound); - - IfcSchema::IfcProfileDef::list::ptr profiles = l->Profiles(); - //bool first = true; - for (IfcSchema::IfcProfileDef::list::it it = profiles->begin(); it != profiles->end(); ++it) { - TopoDS_Face f; - if (convert_face(*it, f)) { - builder.Add(compound, f); - /* TopExp_Explorer exp(f, TopAbs_WIRE); - for (; exp.More(); exp.Next()) { - const TopoDS_Wire& wire = TopoDS::Wire(exp.Current()); - if (first) { - mf.Init(BRepBuilderAPI_MakeFace(wire)); - } else { - mf.Add(wire); - } - first = false; - } */ - } - } - - face = compound; - return !face.IsNull(); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcDerivedProfileDef* l, TopoDS_Shape& face) { - TopoDS_Face f; - gp_Trsf2d trsf2d; - if (convert_face(l->ParentProfile(), f) && IfcGeom::Kernel::convert(l->Operator(), trsf2d)) { - gp_Trsf trsf = trsf2d; - face = BRepBuilderAPI_Transform(f, trsf).Shape(); - return true; - } else { - return false; - } -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcPlane* l, TopoDS_Shape& face) { - gp_Pln pln; - convert(l, pln); - Handle_Geom_Surface surf = new Geom_Plane(pln); -#if OCC_VERSION_HEX < 0x60502 - face = BRepBuilderAPI_MakeFace(surf); -#else - face = BRepBuilderAPI_MakeFace(surf, getValue(GV_PRECISION)); -#endif - return true; -} - -#ifdef SCHEMA_HAS_IfcBSplineSurfaceWithKnots - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcBSplineSurfaceWithKnots* l, TopoDS_Shape& face) { - boost::shared_ptr< aggregate_of_aggregate_of > cps = l->ControlPointsList(); - std::vector uknots = l->UKnots(); - std::vector vknots = l->VKnots(); - std::vector umults = l->UMultiplicities(); - std::vector vmults = l->VMultiplicities(); - - TColgp_Array2OfPnt Poles (0, (int)cps->size() - 1, 0, (int)(*cps->begin()).size() - 1); - TColStd_Array1OfReal UKnots(0, (int)uknots.size() - 1); - TColStd_Array1OfReal VKnots(0, (int)vknots.size() - 1); - TColStd_Array1OfInteger UMults(0, (int)umults.size() - 1); - TColStd_Array1OfInteger VMults(0, (int)vmults.size() - 1); - Standard_Integer UDegree = l->UDegree(); - Standard_Integer VDegree = l->VDegree(); - - int i = 0, j; - for (aggregate_of_aggregate_of::outer_it it = cps->begin(); it != cps->end(); ++it, ++i) { - j = 0; - for (aggregate_of_aggregate_of::inner_it jt = (*it).begin(); jt != (*it).end(); ++jt, ++j) { - IfcSchema::IfcCartesianPoint* p = *jt; - gp_Pnt pnt; - if (!convert(p, pnt)) return false; - Poles(i, j) = pnt; - } - } - i = 0; - for (std::vector::const_iterator it = uknots.begin(); it != uknots.end(); ++it, ++i) { - UKnots(i) = *it; - } - i = 0; - for (std::vector::const_iterator it = vknots.begin(); it != vknots.end(); ++it, ++i) { - VKnots(i) = *it; - } - i = 0; - for (std::vector::const_iterator it = umults.begin(); it != umults.end(); ++it, ++i) { - UMults(i) = *it; - } - i = 0; - for (std::vector::const_iterator it = vmults.begin(); it != vmults.end(); ++it, ++i) { - VMults(i) = *it; - } - Handle_Geom_Surface surf = new Geom_BSplineSurface(Poles, UKnots, VKnots, UMults, VMults, UDegree, VDegree); - -#if OCC_VERSION_HEX < 0x60502 - face = BRepBuilderAPI_MakeFace(surf); -#else - face = BRepBuilderAPI_MakeFace(surf, getValue(GV_PRECISION)); -#endif - - return true; -} - -#endif diff --git a/src/ifcgeom/IfcGeomHelpers.cpp b/src/ifcgeom/IfcGeomHelpers.cpp deleted file mode 100644 index ee2918a1f6..0000000000 --- a/src/ifcgeom/IfcGeomHelpers.cpp +++ /dev/null @@ -1,476 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Implementations of the various conversion functions defined in mapping.i * - * * - ********************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include - -#include "../ifcgeom/IfcGeom.h" - -#define Kernel MAKE_TYPE_NAME(Kernel) - -namespace { - - // Helper functions (re)set gp_(G)Trsf(2d) forms explicitly to 'Identity' - // so that it can be easily identified in the IfcMappedItem processing - - // For axis placements detect equality early in order for the - // relatively computionaly expensive gp_Trsf calculation to be skipped - template - bool axis_equal(const T& a, const T& b, double tolerance); - template <> - bool axis_equal(const gp_Ax3& a, const gp_Ax3& b, double tolerance) { - if (!a.Location().IsEqual(b.Location(), tolerance)) return false; - // Note that the tolerance below is angular, above is linear. Since architectural - // objects are about 1m'ish in scale, it should be somewhat equivalent. Besides, - // this is mostly a filter for NULL or default values in the placements. - if (!a.Direction().IsEqual(b.Direction(), tolerance)) return false; - if (!a.XDirection().IsEqual(b.XDirection(), tolerance)) return false; - if (!a.YDirection().IsEqual(b.YDirection(), tolerance)) return false; - return true; - } - - bool axis_equal(const gp_Ax2d& a, const gp_Ax2d& b, double tolerance) { - if (!a.Location().IsEqual(b.Location(), tolerance)) return false; - if (!a.Direction().IsEqual(b.Direction(), tolerance)) return false; - return true; - } - - template struct dimension_count {}; - template <> struct dimension_count { static const int n = 2; }; - template <> struct dimension_count { static const int n = 2; }; - template <> struct dimension_count < gp_Trsf > { static const int n = 3; }; - template <> struct dimension_count < gp_GTrsf > { static const int n = 3; }; - - template - bool is_identity(const T& t, double tolerance) { - // Note the {1, n+1} range due to Open Cascade's 1-based indexing - // Note the {1, n+2} range due to the translation part of the matrix - for (int i = 1; i < dimension_count::n + 2; ++i) { - for (int j = 1; j < dimension_count::n + 1; ++j) { - const double iden_value = i == j ? 1. : 0.; - const double trsf_value = t.Value(j, i); - if (fabs(trsf_value - iden_value) > tolerance) { - return false; - } - } - } - return true; - } -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCartesianPoint* l, gp_Pnt& point) { - IN_CACHE(IfcCartesianPoint,l,gp_Pnt,point) - std::vector xyz = l->Coordinates(); - point = gp_Pnt( - xyz.size() ? (xyz[0]*getValue(GV_LENGTH_UNIT)) : 0.0f, - xyz.size() > 1 ? (xyz[1]*getValue(GV_LENGTH_UNIT)) : 0.0f, - xyz.size() > 2 ? (xyz[2]*getValue(GV_LENGTH_UNIT)) : 0.0f - ); - CACHE(IfcCartesianPoint,l,point) - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcDirection* l, gp_Dir& dir) { - IN_CACHE(IfcDirection,l,gp_Dir,dir) - std::vector xyz = l->DirectionRatios(); - dir = gp_Dir( - xyz.size() ? xyz[0] : 0.0f, - xyz.size() > 1 ? xyz[1] : 0.0f, - xyz.size() > 2 ? xyz[2] : 0.0f - ); - CACHE(IfcDirection,l,dir) - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcVector* l, gp_Vec& v) { - IN_CACHE(IfcVector,l,gp_Vec,v) - gp_Dir d; - IfcGeom::Kernel::convert(l->Orientation(),d); - v = l->Magnitude() * getValue(GV_LENGTH_UNIT) * d; - CACHE(IfcVector,l,v) - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcAxis2Placement3D* l, gp_Trsf& trsf) { - IN_CACHE(IfcAxis2Placement3D, l, gp_Trsf, trsf) - - gp_Pnt o; - gp_Dir axis(0, 0, 1); - gp_Dir refDirection; - - if (!l->Location()->declaration().is("IfcCartesianPoint")) { - // only applicable to 4x3 rc2 - Logger::Error("Not implemented", l->Location()); - return false; - } - - IfcGeom::Kernel::convert((const IfcSchema::IfcCartesianPoint*) l->Location(), o); - const bool hasAxis = !!l->Axis(); - const bool hasRef = !!l->RefDirection(); - - if (hasAxis != hasRef) { - Logger::Warning("Axis and RefDirection should be specified together", l); - } - - if (hasAxis) { - IfcGeom::Kernel::convert(l->Axis(), axis); - } - - if (hasRef) { - IfcGeom::Kernel::convert(l->RefDirection(), refDirection); - } else { - if (!axis.IsParallel(gp::DX(), 1.e-5)) { - refDirection = gp::DX(); - } else { - refDirection = gp::DZ(); - } - gp_Vec Xvec = axis.Dot(refDirection) * axis; - gp_Vec Xaxis = refDirection.XYZ() - Xvec.XYZ(); - refDirection = Xaxis; - } - - gp_Ax3 ax3(o, axis, refDirection); - - if (!axis_equal(ax3, (gp_Ax3) gp::XOY(), getValue(GV_PRECISION))) { - trsf.SetTransformation(ax3, gp::XOY()); - } - - CACHE(IfcAxis2Placement3D,l,trsf) - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcAxis1Placement* l, gp_Ax1& ax) { - IN_CACHE(IfcAxis1Placement,l,gp_Ax1,ax) - gp_Pnt o;gp_Dir axis = gp_Dir(0,0,1); - - if (!l->Location()->declaration().is("IfcCartesianPoint")) { - // only applicable to 4x3 rc2 - Logger::Error("Not implemented", l->Location()); - return false; - } - - IfcGeom::Kernel::convert((const IfcSchema::IfcCartesianPoint*) l->Location(),o); - if ( l->Axis() ) IfcGeom::Kernel::convert(l->Axis(), axis); - ax = gp_Ax1(o, axis); - CACHE(IfcAxis1Placement,l,ax) - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCartesianTransformationOperator3D* l, gp_Trsf& trsf) { - IN_CACHE(IfcCartesianTransformationOperator3D,l,gp_Trsf,trsf) - gp_Pnt origin; - IfcGeom::Kernel::convert(l->LocalOrigin(),origin); - gp_Dir axis1 (1.,0.,0.); - gp_Dir axis2 (0.,1.,0.); - gp_Dir axis3 (0.,0.,1.); - if ( l->Axis1() ) IfcGeom::Kernel::convert(l->Axis1(),axis1); - if ( l->Axis2() ) IfcGeom::Kernel::convert(l->Axis2(),axis2); - if ( l->Axis3() ) IfcGeom::Kernel::convert(l->Axis3(),axis3); - gp_Ax3 ax3 (origin,axis3,axis1); - if ( axis2.Dot(ax3.YDirection()) < 0 ) ax3.YReverse(); - - if (!axis_equal(ax3, (gp_Ax3) gp::XOY(), getValue(GV_PRECISION))) { - trsf.SetTransformation(ax3); - trsf.Invert(); - } - - if (l->Scale() && !ALMOST_THE_SAME(*l->Scale(), 1.)) { - trsf.SetScaleFactor(*l->Scale()); - } - - CACHE(IfcCartesianTransformationOperator3D,l,trsf) - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCartesianTransformationOperator2D* l, gp_Trsf2d& trsf) { - IN_CACHE(IfcCartesianTransformationOperator2D,l,gp_Trsf2d,trsf) - - gp_Pnt origin; - gp_Dir axis1 (1.,0.,0.); - gp_Dir axis2 (0.,1.,0.); - - IfcGeom::Kernel::convert(l->LocalOrigin(),origin); - if ( l->Axis1() ) IfcGeom::Kernel::convert(l->Axis1(),axis1); - if ( l->Axis2() ) IfcGeom::Kernel::convert(l->Axis2(),axis2); - - const gp_Pnt2d origin2d(origin.X(), origin.Y()); - const gp_Dir2d axis12d(axis1.X(), axis1.Y()); - const gp_Dir2d axis22d(axis2.X(), axis2.Y()); - - // A better match to represent the IfcCartesianTransformationOperator2D would - // be the gp_Ax22d, but to my knowledge no easy way exists to convert it into - // a gp_Trsf2d. Easiest would probably be to simply update the underlying - // gp_Mat2d directly. - - const gp_Ax2d ax2d (origin2d, axis12d); - trsf.SetTransformation(ax2d); - - if ( ax2d.Direction().Rotated(M_PI / 2.).Dot(axis22d) < 0. ) { - gp_Trsf2d mirror; mirror.SetMirror(ax2d); - trsf.Multiply(mirror); - } - - trsf.Invert(); - if (l->Scale() && !ALMOST_THE_SAME(*l->Scale(), 1.)) { - trsf.SetScaleFactor(*l->Scale()); - } - - if (is_identity(trsf, getValue(GV_PRECISION))) { - trsf = gp_Trsf2d(); - } - - CACHE(IfcCartesianTransformationOperator2D,l,trsf) - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCartesianTransformationOperator3DnonUniform* l, gp_GTrsf& gtrsf) { - IN_CACHE(IfcCartesianTransformationOperator3DnonUniform,l,gp_GTrsf,gtrsf) - gp_Trsf trsf; - gp_Pnt origin; - IfcGeom::Kernel::convert(l->LocalOrigin(),origin); - gp_Dir axis1 (1.,0.,0.); - gp_Dir axis2 (0.,1.,0.); - gp_Dir axis3 (0.,0.,1.); - if ( l->Axis1() ) IfcGeom::Kernel::convert(l->Axis1(),axis1); - if ( l->Axis2() ) IfcGeom::Kernel::convert(l->Axis2(),axis2); - if ( l->Axis3() ) IfcGeom::Kernel::convert(l->Axis3(),axis3); - gp_Ax3 ax3 (origin,axis3,axis1); - if ( axis2.Dot(ax3.YDirection()) < 0 ) ax3.YReverse(); - trsf.SetTransformation(ax3); - trsf.Invert(); - const double scale1 = l->Scale().get_value_or(1.); - const double scale2 = l->Scale2().get_value_or(scale1); - const double scale3 = l->Scale3().get_value_or(scale1); - gtrsf = gp_GTrsf(); - gtrsf.SetValue(1,1,scale1); - gtrsf.SetValue(2,2,scale2); - gtrsf.SetValue(3,3,scale3); - gtrsf.PreMultiply(trsf); - - if (is_identity(gtrsf, getValue(GV_PRECISION))) { - gtrsf = gp_GTrsf(); - } - - CACHE(IfcCartesianTransformationOperator3DnonUniform,l,gtrsf) - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCartesianTransformationOperator2DnonUniform* l, gp_GTrsf2d& gtrsf) { - IN_CACHE(IfcCartesianTransformationOperator2DnonUniform,l,gp_GTrsf2d,gtrsf) - - gp_Trsf2d trsf; - gp_Pnt origin; - gp_Dir axis1 (1.,0.,0.); - gp_Dir axis2 (0.,1.,0.); - - IfcGeom::Kernel::convert(l->LocalOrigin(),origin); - if ( l->Axis1() ) IfcGeom::Kernel::convert(l->Axis1(),axis1); - if ( l->Axis2() ) IfcGeom::Kernel::convert(l->Axis2(),axis2); - - const gp_Pnt2d origin2d(origin.X(), origin.Y()); - const gp_Dir2d axis12d(axis1.X(), axis1.Y()); - const gp_Dir2d axis22d(axis2.X(), axis2.Y()); - - const gp_Ax2d ax2d (origin2d, axis12d); - trsf.SetTransformation(ax2d); - - if ( ax2d.Direction().Rotated(M_PI / 2.).Dot(axis22d) < 0. ) { - gp_Trsf2d mirror; mirror.SetMirror(ax2d); - trsf.Multiply(mirror); - } - - trsf.Invert(); - - const double scale1 = l->Scale().get_value_or(1.); - const double scale2 = l->Scale2().get_value_or(scale1); - gtrsf = gp_GTrsf2d(); - gtrsf.SetValue(1,1,scale1); - gtrsf.SetValue(2,2,scale2); - gtrsf.Multiply(trsf); - - if (is_identity(gtrsf, getValue(GV_PRECISION))) { - gtrsf = gp_GTrsf2d(); - } - - CACHE(IfcCartesianTransformationOperator2DnonUniform,l,gtrsf) - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcPlane* pln, gp_Pln& plane) { - IN_CACHE(IfcPlane,pln,gp_Pln,plane) - IfcSchema::IfcAxis2Placement3D* l = pln->Position(); - gp_Pnt o;gp_Dir axis = gp_Dir(0,0,1);gp_Dir refDirection; - - if (!l->Location()->declaration().is("IfcCartesianPoint")) { - // only applicable to 4x3 rc2 - Logger::Error("Not implemented", l->Location()); - return false; - } - - IfcGeom::Kernel::convert((const IfcSchema::IfcCartesianPoint*) l->Location(),o); - bool hasRef = !!l->RefDirection(); - if ( l->Axis() ) IfcGeom::Kernel::convert(l->Axis(),axis); - if ( hasRef ) IfcGeom::Kernel::convert(l->RefDirection(),refDirection); - gp_Ax3 ax3; - if ( hasRef ) ax3 = gp_Ax3(o,axis,refDirection); - else ax3 = gp_Ax3(o,axis); - plane = gp_Pln(ax3); - CACHE(IfcPlane,pln,plane) - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcAxis2Placement2D* l, gp_Trsf2d& trsf) { - IN_CACHE(IfcAxis2Placement2D,l,gp_Trsf2d,trsf) - gp_Pnt P; gp_Dir V (1,0,0); - - if (!l->Location()->declaration().is("IfcCartesianPoint")) { - // only applicable to 4x3 rc2 - Logger::Error("Not implemented", l->Location()); - return false; - } - - IfcGeom::Kernel::convert((const IfcSchema::IfcCartesianPoint*) l->Location(),P); - if (l->RefDirection()) { - IfcGeom::Kernel::convert(l->RefDirection(), V); - } - - gp_Ax2d axis(gp_Pnt2d(P.X(),P.Y()), gp_Dir2d(V.X(),V.Y())); - - if (!axis_equal(axis, gp_Ax2d(), getValue(GV_PRECISION))) { - trsf.SetTransformation(axis, gp_Ax2d()); - } - - CACHE(IfcAxis2Placement2D,l,trsf) - return true; -} - -void IfcGeom::Kernel::set_conversion_placement_rel_to_type(const IfcParse::declaration* type) { - placement_rel_to_type_ = type; -} - -void IfcGeom::Kernel::set_conversion_placement_rel_to_instance(const IfcUtil::IfcBaseEntity* instance) { - placement_rel_to_instance_ = instance; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcObjectPlacement* l, gp_Trsf& trsf) { - IN_CACHE(IfcObjectPlacement,l,gp_Trsf,trsf) - if ( ! l->declaration().is(IfcSchema::IfcLocalPlacement::Class()) ) { - Logger::Message(Logger::LOG_ERROR, "Unsupported IfcObjectPlacement:", l); - return false; - } - IfcSchema::IfcLocalPlacement* current = (IfcSchema::IfcLocalPlacement*)l; - for (;;) { - - gp_Trsf trsf2; - IfcSchema::IfcAxis2Placement* relplacement = current->RelativePlacement(); - if (relplacement->as()) { - IfcGeom::Kernel::convert(relplacement->as(),trsf2); - trsf.PreMultiply(trsf2); - } - - if (current->PlacementRelTo()) { - IfcSchema::IfcObjectPlacement* parent = current->PlacementRelTo(); - - bool parent_placement_ignored = false; - if (placement_rel_to_type_ || placement_rel_to_instance_) { - IfcSchema::IfcProduct::list::ptr parent_places = parent->PlacesObject(); - for (auto iter = parent_places->begin(); iter != parent_places->end(); ++iter) { - if ((placement_rel_to_type_ && (*iter)->declaration().is(*placement_rel_to_type_)) || - (placement_rel_to_instance_ && (*iter)->as() == placement_rel_to_instance_)) { - parent_placement_ignored = true; - } - } - } - - if (parent_placement_ignored) { - // The parent placement of the current is a placement for a type that is - // being ignored (Site or Building) or it is the host element of an opening. - break; - } else if (parent->declaration().is(IfcSchema::IfcLocalPlacement::Class())) { - // Keep processing parent placements - current = current->PlacementRelTo()->as(); - } else { - // This is the root placement (typically Site). - break; - } - } else { - break; - } - } - - trsf.PreMultiply(offset_and_rotation); - - CACHE(IfcObjectPlacement,l,trsf) - return true; -} diff --git a/src/ifcgeom/IfcGeomIteratorImplementation.h b/src/ifcgeom/IfcGeomIteratorImplementation.h index 24074078ef..7746fa13f9 100644 --- a/src/ifcgeom/IfcGeomIteratorImplementation.h +++ b/src/ifcgeom/IfcGeomIteratorImplementation.h @@ -81,11 +81,11 @@ #include "../ifcparse/IfcFile.h" #include "../ifcgeom/IfcGeom.h" -#include "../ifcgeom/IfcGeomElement.h" -#include "../ifcgeom_schema_agnostic/IfcGeomMaterial.h" -#include "../ifcgeom/IfcGeomIteratorSettings.h" -#include "../ifcgeom/IfcRepresentationShapeItem.h" +#include "../ifcgeom_schema_agnostic/IfcGeomElement.h" +#include "../ifcgeom_schema_agnostic/IfcGeomMaterial.h" +#include "../ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h" +#include "../ifcgeom_schema_agnostic/IfcRepresentationShapeItem.h" #include "../ifcgeom_schema_agnostic/IfcGeomFilter.h" #include "../ifcgeom_schema_agnostic/IteratorImplementation.h" @@ -1045,12 +1045,14 @@ namespace IfcGeom { Logger::Error("Failed to find decomposing entity"); } - try { - kernel.convert(ifc_product->ObjectPlacement(), trsf); - } catch (const std::exception& e) { - Logger::Error(e); - } catch (...) { - Logger::Error("Failed to construct placement"); + if (ifc_product->ObjectPlacement()) { + try { + kernel.convert(ifc_product->ObjectPlacement(), trsf); + } catch (const std::exception& e) { + Logger::Error(e); + } catch (...) { + Logger::Error("Failed to construct placement"); + } } } } catch (const std::exception& e) { diff --git a/src/ifcgeom/IfcGeomRenderStyles.cpp b/src/ifcgeom/IfcGeomRenderStyles.cpp deleted file mode 100644 index 0644ca1cc6..0000000000 --- a/src/ifcgeom/IfcGeomRenderStyles.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -#include - -#include "IfcGeom.h" - -namespace { - - bool process_colour(IfcSchema::IfcColourRgb* colour, double* rgb) { - if (colour != 0) { - rgb[0] = colour->Red(); - rgb[1] = colour->Green(); - rgb[2] = colour->Blue(); - } - return colour != 0; - } - - bool process_colour(IfcSchema::IfcNormalisedRatioMeasure* factor, double* rgb) { - if (factor != 0) { - const double f = *factor; - rgb[0] = rgb[1] = rgb[2] = f; - } - return factor != 0; - } - - bool process_colour(IfcSchema::IfcColourOrFactor* colour_or_factor, double* rgb) { - if (colour_or_factor == 0) { - return false; - } else if (colour_or_factor->declaration().is(IfcSchema::IfcColourRgb::Class())) { - return process_colour(static_cast(colour_or_factor), rgb); - } else if (colour_or_factor->declaration().is(IfcSchema::IfcNormalisedRatioMeasure::Class())) { - return process_colour(static_cast(colour_or_factor), rgb); - } else { - return false; - } - } - -} - -#define Kernel MAKE_TYPE_NAME(Kernel) - -std::shared_ptr IfcGeom::Kernel::internalize_surface_style(const std::pair& shading_styles) { - if (shading_styles.second == 0) { - return 0; - } - int surface_style_id = shading_styles.first->data().id(); - auto it = style_cache.find(surface_style_id); - if (it != style_cache.end()) { - return it->second; - } - - - IfcSchema::IfcSurfaceStyle* style = shading_styles.first->as(); - IfcSchema::IfcSurfaceStyleShading* shading = shading_styles.second->as(); - - std::shared_ptr surface_style_ptr; - - if (style->Name()) { - surface_style_ptr.reset(new SurfaceStyle(surface_style_id, *style->Name())); - } else { - surface_style_ptr.reset(new SurfaceStyle(surface_style_id)); - } - - std::shared_ptr surface_style_ptr_const = std::const_pointer_cast(surface_style_ptr); - SurfaceStyle& surface_style = *surface_style_ptr; - - double rgb[3]; - if (process_colour(shading->SurfaceColour(), rgb)) { - surface_style.Diffuse().reset(SurfaceStyle::ColorComponent(rgb[0], rgb[1], rgb[2])); - } - if (shading_styles.second->declaration().is(IfcSchema::IfcSurfaceStyleRendering::Class())) { - IfcSchema::IfcSurfaceStyleRendering* rendering_style = static_cast(shading_styles.second); - if (rendering_style->DiffuseColour() && process_colour(rendering_style->DiffuseColour(), rgb)) { - SurfaceStyle::ColorComponent diffuse = surface_style.Diffuse().get_value_or(SurfaceStyle::ColorComponent(1,1,1)); - surface_style.Diffuse().reset(SurfaceStyle::ColorComponent(diffuse.R() * rgb[0], diffuse.G() * rgb[1], diffuse.B() * rgb[2])); - } - if (rendering_style->DiffuseTransmissionColour()) { - // Not supported - } - if (rendering_style->ReflectionColour()) { - // Not supported - } - if (rendering_style->SpecularColour() && process_colour(rendering_style->SpecularColour(), rgb)) { - surface_style.Specular().reset(SurfaceStyle::ColorComponent(rgb[0], rgb[1], rgb[2])); - } - if (rendering_style->SpecularHighlight()) { - IfcSchema::IfcSpecularHighlightSelect* highlight = rendering_style->SpecularHighlight(); - if (highlight->declaration().is(IfcSchema::IfcSpecularRoughness::Class())) { - double roughness = *((IfcSchema::IfcSpecularRoughness*)highlight); - if (roughness >= 1e-9) { - surface_style.Specularity().reset(1.0 / roughness); - } - } else if (highlight->declaration().is(IfcSchema::IfcSpecularExponent::Class())) { - surface_style.Specularity().reset(*((IfcSchema::IfcSpecularExponent*)highlight)); - } - } - if (rendering_style->TransmissionColour()) { - // Not supported - } - if (rendering_style->Transparency()) { - const double d = *rendering_style->Transparency(); - surface_style.Transparency().reset(d); - } - } - return style_cache[surface_style_id] = surface_style_ptr_const; -} - -std::shared_ptr IfcGeom::Kernel::get_style(const IfcSchema::IfcRepresentationItem* item) { - return internalize_surface_style(get_surface_style(item)); -} - -std::shared_ptr IfcGeom::Kernel::get_style(const IfcSchema::IfcMaterial* material) { - IfcSchema::IfcMaterialDefinitionRepresentation::list::ptr defs = material->HasRepresentation(); - for (IfcSchema::IfcMaterialDefinitionRepresentation::list::it jt = defs->begin(); jt != defs->end(); ++jt) { - IfcSchema::IfcRepresentation::list::ptr reps = (*jt)->Representations(); - IfcSchema::IfcStyledItem::list::ptr styles(new IfcSchema::IfcStyledItem::list); - for (IfcSchema::IfcRepresentation::list::it it = reps->begin(); it != reps->end(); ++it) { - styles->push((**it).Items()->as()); - } - for (IfcSchema::IfcStyledItem::list::it it = styles->begin(); it != styles->end(); ++it) { - const std::pair ss = get_surface_style(*it); - if (ss.second) { - return internalize_surface_style(ss); - } - } - } - auto material_style = std::make_shared(material->data().id(), material->Name()); - return style_cache[material->data().id()] = material_style; -} diff --git a/src/ifcgeom/IfcGeomRepresentation.cpp b/src/ifcgeom/IfcGeomRepresentation.cpp deleted file mode 100644 index c346471aa4..0000000000 --- a/src/ifcgeom/IfcGeomRepresentation.cpp +++ /dev/null @@ -1,257 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -#include -#include -#include - -#include -#include -#include -#include - -#include "../ifcgeom/IfcGeom.h" - -#include "IfcGeomRepresentation.h" - -IfcGeom::Representation::Serialization::Serialization(const BRep& brep) - : Representation(brep.settings()) - , id_(brep.id()) -{ - TopoDS_Compound compound = brep.as_compound(); - for (IfcGeom::IfcRepresentationShapeItems::const_iterator it = brep.begin(); it != brep.end(); ++ it) { - int sid = -1; - - if (it->hasStyle() && it->Style().Diffuse()) { - const IfcGeom::SurfaceStyle::ColorComponent& clr = *it->Style().Diffuse(); - surface_styles_.push_back(clr.R()); - surface_styles_.push_back(clr.G()); - surface_styles_.push_back(clr.B()); - - sid = it->Style().Id().get_value_or(-1); - } else { - surface_styles_.push_back(-1.); - surface_styles_.push_back(-1.); - surface_styles_.push_back(-1.); - } - - if (it->hasStyle() && it->Style().Transparency()) { - surface_styles_.push_back(1. - *it->Style().Transparency()); - } else { - surface_styles_.push_back(1.); - } - - surface_style_ids_.push_back(sid); - } - std::stringstream sstream; - BRepTools::Write(compound,sstream); - brep_data_ = sstream.str(); -} - -// todo copied from kernel -#include -#include - -TopoDS_Shape apply_transformation(const TopoDS_Shape& s, const gp_Trsf& t) { - if (t.Form() == gp_Identity) { - return s; - } else { - /// @todo set to 1. and exactly 1. or use epsilon? - if (t.ScaleFactor() != 1.) { - return BRepBuilderAPI_Transform(s, t, true); - } else { - return s.Moved(t); - } - } -} - -TopoDS_Shape apply_transformation(const TopoDS_Shape& s, const gp_GTrsf& t) { - if (t.Form() == gp_Other) { - return BRepBuilderAPI_GTransform(s, t, true); - } else { - return apply_transformation(s, t.Trsf()); - } -} - -TopoDS_Compound IfcGeom::Representation::BRep::as_compound(bool force_meters) const { - TopoDS_Compound compound; - BRep_Builder builder; - builder.MakeCompound(compound); - for (IfcGeom::IfcRepresentationShapeItems::const_iterator it = begin(); it != end(); ++it) { - const TopoDS_Shape& s = it->Shape(); - gp_GTrsf trsf = it->Placement(); - - if (!force_meters && settings().get(IteratorSettings::CONVERT_BACK_UNITS)) { - gp_Trsf scale; - scale.SetScaleFactor(1.0 / settings().unit_magnitude()); - trsf.PreMultiply(scale); - } - - const TopoDS_Shape moved_shape = apply_transformation(s, trsf); - builder.Add(compound, moved_shape); - } - return compound; -} - -namespace { - void accumulate(const gp_Ax3& ax, const gp_Dir& normal, double area, double& along_x, double& along_y, double& along_z) { - along_x += area * fabs(ax.XDirection().Dot(normal)); - along_y += area * fabs(ax.YDirection().Dot(normal)); - along_z += area * fabs(ax.Direction().Dot(normal)); - } - - void surface_area_along_direction(double tol, const TopoDS_Shape& s, const gp_Ax3& ax, double& along_x, double& along_y, double& along_z) { - along_x = along_y = along_z = 0.; - - bool meshed = false; - - TopExp_Explorer exp(s, TopAbs_FACE); - for (; exp.More(); exp.Next()) { - const TopoDS_Face& face = TopoDS::Face(exp.Current()); - Handle(Geom_Surface) surf = BRep_Tool::Surface(face); - Handle(Geom_Plane) plane = Handle(Geom_Plane)::DownCast(surf); - - if (surf->DynamicType() == STANDARD_TYPE(Geom_Plane)) { - GProp_GProps prop_area; - BRepGProp::SurfaceProperties(face, prop_area); - const double area = prop_area.Mass(); - - accumulate(ax, plane->Position().Direction(), area, along_x, along_y, along_z); - } else { - - if (!meshed) { - try { - BRepMesh_IncrementalMesh(s, tol); - } catch (...) { - Logger::Message(Logger::LOG_ERROR, "Failed to triangulate shape"); - return; - } - meshed = true; - } - - TopLoc_Location loc; - Handle(Poly_Triangulation) tri = BRep_Tool::Triangulation(face, loc); - if (!tri.IsNull()) { - std::vector coords; - coords.reserve(tri->NbNodes()); - - for (int i = 1; i <= tri->NbNodes(); ++i) { - coords.push_back(tri->Node(i).Transformed(loc).XYZ()); - } - - const Poly_Array1OfTriangle& triangles = tri->Triangles(); - for (int i = 1; i <= triangles.Length(); ++i) { - int n1, n2, n3; - - if (face.Orientation() == TopAbs_REVERSED) { - triangles(i).Get(n3, n2, n1); - } else { - triangles(i).Get(n1, n2, n3); - } - - const gp_XYZ& pt1 = coords[n1 - 1]; - const gp_XYZ& pt2 = coords[n2 - 1]; - const gp_XYZ& pt3 = coords[n3 - 1]; - const gp_Vec v1 = pt2 - pt1; - const gp_Vec v2 = pt3 - pt2; - const gp_Vec v3 = pt1 - pt3; - const gp_Vec normal_vector = v1 ^ v2; - if (normal_vector.Magnitude() > ALMOST_ZERO) { - gp_Dir normal = gp_Dir(); - - double edge_lengths[3] = { v1.Magnitude(), v2.Magnitude(), v3.Magnitude() }; - std::sort(&edge_lengths[0], &edge_lengths[2]); - - const double& a = edge_lengths[0]; - const double& b = edge_lengths[1]; - const double& c = edge_lengths[2]; - - const double area = 0.25 * sqrt((a + (b + c))*(c - (a - b))*(c + (a - b))*(a + (b - c))); - accumulate(ax, normal, area, along_x, along_y, along_z); - } - } - } - } - } - } -} - -bool IfcGeom::Representation::BRep::calculate_surface_area(double& area) const { - try { - area = 0.; - - for (IfcGeom::IfcRepresentationShapeItems::const_iterator it = begin(); it != end(); ++it) { - GProp_GProps prop; - BRepGProp::SurfaceProperties(it->Shape(), prop); - area += prop.Mass(); - } - - return true; - } catch (...) { - Logger::Error("Error during calculation of surface area"); - return false; - } -} - -bool IfcGeom::Representation::BRep::calculate_volume(double& volume) const { - try { - volume = 0.; - - for (IfcGeom::IfcRepresentationShapeItems::const_iterator it = begin(); it != end(); ++it) { - if (Kernel::is_manifold(it->Shape())) { - GProp_GProps prop; - BRepGProp::VolumeProperties(it->Shape(), prop); - volume += prop.Mass(); - } else { - return false; - } - } - - return true; - } catch (...) { - Logger::Error("Error during calculation of volume"); - return false; - } -} - -bool IfcGeom::Representation::BRep::calculate_projected_surface_area(const gp_Ax3 & ax, double & along_x, double & along_y, double & along_z) const { - try { - along_x = along_y = along_z = 0.; - - for (IfcGeom::IfcRepresentationShapeItems::const_iterator it = begin(); it != end(); ++it) { - double x, y, z; - surface_area_along_direction(settings().deflection_tolerance(), it->Shape(), ax, x, y, z); - - if (Kernel::is_manifold(it->Shape())) { - x /= 2.; - y /= 2.; - z /= 2.; - } - - along_x += x; - along_y += y; - along_z += z; - } - - return true; - } catch (...) { - Logger::Error("Error during calculation of projected surface area"); - return false; - } -} diff --git a/src/ifcgeom/IfcGeomRepresentation.h b/src/ifcgeom/IfcGeomRepresentation.h deleted file mode 100644 index 40f6718c59..0000000000 --- a/src/ifcgeom/IfcGeomRepresentation.h +++ /dev/null @@ -1,447 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -#ifndef IFCGEOMREPRESENTATION_H -#define IFCGEOMREPRESENTATION_H - -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include "../ifcgeom/IfcGeomIteratorSettings.h" -#include "../ifcgeom_schema_agnostic/IfcGeomMaterial.h" -#include "../ifcgeom/IfcRepresentationShapeItem.h" - -#include - -namespace IfcGeom { - - namespace Representation { - - class IFC_GEOM_API Representation { - Representation(const Representation&); //N/A - Representation& operator =(const Representation&); //N/A - protected: - const ElementSettings settings_; - public: - explicit Representation(const ElementSettings& settings) - : settings_(settings) - {} - const ElementSettings& settings() const { return settings_; } - virtual ~Representation() {} - }; - - class IFC_GEOM_API BRep : public Representation { - private: - std::string id_; - const IfcGeom::IfcRepresentationShapeItems shapes_; - BRep(const BRep& other); - BRep& operator=(const BRep& other); - public: - BRep(const ElementSettings& settings, const std::string& id, const IfcGeom::IfcRepresentationShapeItems& shapes) - : Representation(settings) - , id_(id) - , shapes_(shapes) - {} - virtual ~BRep() {} - IfcGeom::IfcRepresentationShapeItems::const_iterator begin() const { return shapes_.begin(); } - IfcGeom::IfcRepresentationShapeItems::const_iterator end() const { return shapes_.end(); } - const IfcGeom::IfcRepresentationShapeItems& shapes() const { return shapes_; } - const std::string& id() const { return id_; } - TopoDS_Compound as_compound(bool force_meters = false) const; - - bool calculate_volume(double&) const; - bool calculate_surface_area(double&) const; - bool calculate_projected_surface_area(const gp_Ax3& ax, double& along_x, double& along_y, double& along_z) const; - }; - - class IFC_GEOM_API Serialization : public Representation { - private: - std::string id_; - std::string brep_data_; - std::vector surface_styles_; - std::vector surface_style_ids_; - public: - const std::string& brep_data() const { return brep_data_; } - const std::vector& surface_styles() const { return surface_styles_; } - const std::vector& surface_style_ids() const { return surface_style_ids_; } - Serialization(const BRep& brep); - virtual ~Serialization() {} - const std::string& id() const { return id_; } - private: - Serialization(); - Serialization(const Serialization&); - Serialization& operator=(const Serialization&); - }; - - class Triangulation : public Representation { - private: - // A nested pair of floats and a material index to be able to store an XYZ coordinate in a map. - // TODO: Make this a std::tuple when compilers add support for that. - typedef typename std::pair > Coordinate; - typedef typename std::pair VertexKey; - typedef std::map VertexKeyMap; - typedef std::pair Edge; - - std::string id_; - std::vector _verts; - std::vector _faces; - std::vector _edges; - std::vector _normals; - std::vector uvs_; - std::vector _material_ids; - std::vector _materials; - size_t weld_offset_; - VertexKeyMap welds; - - // when read from serialization, the element needs to take ownership of the styles, - // the material vector is constructor off of this. - // @todo this can be improved - std::vector> styles_; - - public: - const std::string& id() const { return id_; } - const std::vector& verts() const { return _verts; } - const std::vector& faces() const { return _faces; } - const std::vector& edges() const { return _edges; } - const std::vector& normals() const { return _normals; } - const std::vector& uvs() const { return uvs_; } - const std::vector& material_ids() const { return _material_ids; } - const std::vector& materials() const { return _materials; } - - Triangulation(const BRep& shape_model) - : Representation(shape_model.settings()) - , id_(shape_model.id()) - , weld_offset_(0) - { - for ( IfcGeom::IfcRepresentationShapeItems::const_iterator iit = shape_model.begin(); iit != shape_model.end(); ++ iit ) { - - // Don't weld vertices that belong to different items to prevent non-manifold situations. - weld_offset_ += welds.size(); - welds.clear(); - - int surface_style_id = -1; - if (iit->hasStyle()) { - Material adapter(iit->StylePtr()); - std::vector::const_iterator jt = std::find(_materials.begin(), _materials.end(), adapter); - if (jt == _materials.end()) { - surface_style_id = (int)_materials.size(); - _materials.push_back(adapter); - } else { - surface_style_id = (int)(jt - _materials.begin()); - } - } - - if (settings().get(IteratorSettings::APPLY_DEFAULT_MATERIALS) && surface_style_id == -1) { - Material material(IfcGeom::get_default_style(settings().element_type())); - std::vector::const_iterator mit = std::find(_materials.begin(), _materials.end(), material); - if (mit == _materials.end()) { - surface_style_id = (int)_materials.size(); - _materials.push_back(material); - } else { - surface_style_id = (int)(mit - _materials.begin()); - } - } - - const TopoDS_Shape& s = iit->Shape(); - const gp_GTrsf& trsf = iit->Placement(); - - // Triangulate the shape - try { - BRepMesh_IncrementalMesh(s, settings().deflection_tolerance(), false, settings().angular_tolerance()); - } catch(...) { - Logger::Message(Logger::LOG_ERROR, "Failed to triangulate shape"); - continue; - } - - // Iterates over the faces of the shape - int num_faces = 0; - TopExp_Explorer exp; - for ( exp.Init(s,TopAbs_FACE); exp.More(); exp.Next(), ++num_faces ) { - TopoDS_Face face = TopoDS::Face(exp.Current()); - TopLoc_Location loc; - Handle_Poly_Triangulation tri = BRep_Tool::Triangulation(face,loc); - - if (tri.IsNull()) { - Logger::Message(Logger::LOG_ERROR, "Triangulation missing for face"); - } else { - // A 3x3 matrix to rotate the vertex normals - const gp_Mat rotation_matrix = trsf.VectorialPart(); - - // Keep track of the number of times an edge is used - // Manifold edges (i.e. edges used twice) are deemed invisible - std::map,int> edgecount; - std::vector > edges_temp; - - std::vector coords; - BRepGProp_Face prop(face); - std::map dict; - - // Vertex normals are only calculated if vertices are not welded and calculation is not disable explicitly. - const bool calculate_normals = !settings().get(IteratorSettings::WELD_VERTICES) && - !settings().get(IteratorSettings::NO_NORMALS); - - for( int i = 1; i <= tri->NbNodes(); ++ i ) { - coords.push_back(tri->Node(i).Transformed(loc).XYZ()); - trsf.Transforms(*coords.rbegin()); - dict[i] = addVertex(surface_style_id, *coords.rbegin()); - - if ( calculate_normals ) { - const gp_Pnt2d& uv = tri->UVNode(i); - gp_Pnt p; - gp_Vec normal_direction; - prop.Normal(uv.X(),uv.Y(),p,normal_direction); - gp_Vec normal(0., 0., 0.); - if (normal_direction.Magnitude() > 1.e-9) { - normal = gp_Dir(normal_direction.XYZ() * rotation_matrix); - } else { - Handle_Geom_Surface surf = BRep_Tool::Surface(face); - // Special case the normal at the poles of a spherical surface - if (surf->DynamicType() == STANDARD_TYPE(Geom_SphericalSurface)) { - if (fabs(fabs(uv.Y()) - M_PI / 2.) < 1.e-9) { - const bool is_top = uv.Y() > 0; - const bool is_forward = face.Orientation() == TopAbs_FORWARD; - const double z = (is_top == is_forward) ? 1. : -1.; - normal = gp_Dir(gp_XYZ(0, 0, z) * rotation_matrix); - } - } - // TODO: Do the same for conical surfaces, but they are rare in IFC. - } - _normals.push_back(normal.X()); - _normals.push_back(normal.Y()); - _normals.push_back(normal.Z()); - } - } - - const Poly_Array1OfTriangle& triangles = tri->Triangles(); - for( int i = 1; i <= triangles.Length(); ++ i ) { - int n1,n2,n3; - if ( face.Orientation() == TopAbs_REVERSED ) - triangles(i).Get(n3,n2,n1); - else triangles(i).Get(n1,n2,n3); - - /* An alternative would be to calculate normals based - * on the coordinates of the mesh vertices */ - /* - const gp_XYZ pt1 = coords[n1-1]; - const gp_XYZ pt2 = coords[n2-1]; - const gp_XYZ pt3 = coords[n3-1]; - const gp_XYZ v1 = pt2-pt1; - const gp_XYZ v2 = pt3-pt2; - gp_Dir normal = gp_Dir(v1^v2); - _normals.push_back((float)normal.X()); - _normals.push_back((float)normal.Y()); - _normals.push_back((float)normal.Z()); - */ - - _faces.push_back(dict[n1]); - _faces.push_back(dict[n2]); - _faces.push_back(dict[n3]); - - _material_ids.push_back(surface_style_id); - - addEdge(dict[n1], dict[n2], edgecount, edges_temp); - addEdge(dict[n2], dict[n3], edgecount, edges_temp); - addEdge(dict[n3], dict[n1], edgecount, edges_temp); - } - for ( std::vector >::const_iterator jt = edges_temp.begin(); jt != edges_temp.end(); ++jt ) { - if (edgecount[*jt] == 1) { - // non manifold edge, face boundary - _edges.push_back(jt->first); - _edges.push_back(jt->second); - } - } - } - } - - if (!_normals.empty() && settings().get(IfcGeom::IteratorSettings::GENERATE_UVS)) { - uvs_ = box_project_uvs(_verts, _normals); - } - - if (num_faces == 0) { - // Edges are only emitted if there are no faces. A mixed representation of faces - // and loose edges is discouraged by the standard. An alternative would be to use - // TopExp_Explorer texp(s, TopAbs_EDGE, TopAbs_FACE) to find edges that do not - // belong to any face. - for (TopExp_Explorer texp(s, TopAbs_EDGE); texp.More(); texp.Next()) { - BRepAdaptor_Curve crv(TopoDS::Edge(texp.Current())); - GCPnts_QuasiUniformDeflection tessellater(crv, settings().deflection_tolerance()); - int n = tessellater.NbPoints(); - int previous = -1; - - for (int i = 1; i <= n; ++i) { - gp_XYZ p = tessellater.Value(i).XYZ(); - - int current = addVertex(surface_style_id, p); - - std::vector> segments; - if (i > 1) { - segments.push_back(std::make_pair(previous, current)); - } - - if (settings().get(IfcGeom::IteratorSettings::EDGE_ARROWS)) { - // In case you want direction arrows on your edges - double u = tessellater.Parameter(i); - gp_XYZ p2, p3; - gp_Pnt tmp; - gp_Vec tmp2; - crv.D1(u, tmp, tmp2); - gp_Dir d1, d2, d3, d4; - d1 = tmp2; - if (texp.Current().Orientation() == TopAbs_REVERSED) { - d1 = -d1; - } - if (fabs(d1.Z()) < 0.5) { - d2 = d1.Crossed(gp::DZ()); - } else { - d2 = d1.Crossed(gp::DY()); - } - d3 = d1.XYZ() + d2.XYZ(); - d4 = d1.XYZ() - d2.XYZ(); - p2 = p - d3.XYZ() / 10.; - p3 = p - d4.XYZ() / 10.; - trsf.Transforms(p2); - trsf.Transforms(p3); - trsf.Transforms(p); - - int left = addVertex(surface_style_id, p2); - int right = addVertex(surface_style_id, p3); - - segments.push_back(std::make_pair(left, current)); - segments.push_back(std::make_pair(right, current)); - } - - for (auto& sgmt : segments) { - _edges.push_back(sgmt.first); - _edges.push_back(sgmt.second); - _material_ids.push_back(surface_style_id); - } - - previous = current; - } - } - } - - BRepTools::Clean(s); - } - } - - Triangulation( - ElementSettings settings, - const std::string& id, - const std::vector& verts, - const std::vector& faces, - const std::vector& edges, - const std::vector& normals, - const std::vector& uvs, - const std::vector& material_ids, - const std::vector>& styles) - : Representation(settings) - , id_(id) - , _verts(verts) - , _faces(faces) - , _edges(edges) - , _normals(normals) - , uvs_(uvs) - , _material_ids(material_ids) - , styles_(styles) - { - for (auto& s : styles_) { - _materials.push_back(IfcGeom::Material(s)); - } - } - - virtual ~Triangulation() {} - - /// Generates UVs for a single mesh using box projection. - /// @todo Very simple impl. Assumes that input vertices and normals match 1:1. - static std::vector box_project_uvs(const std::vector &vertices, const std::vector &normals) - { - std::vector uvs; - uvs.resize(vertices.size() / 3 * 2); - for (size_t uv_idx = 0, v_idx = 0; - uv_idx < uvs.size() && v_idx < vertices.size() && v_idx < normals.size(); - uv_idx += 2, v_idx += 3) { - - double n_x = normals[v_idx], n_y = normals[v_idx + 1], n_z = normals[v_idx + 2]; - double v_x = vertices[v_idx], v_y = vertices[v_idx + 1], v_z = vertices[v_idx + 2]; - - if (std::abs(n_x) > std::abs(n_y) && std::abs(n_x) > std::abs(n_z)) { - uvs[uv_idx] = v_z; - uvs[uv_idx + 1] = v_y; - } - if (std::abs(n_y) > std::abs(n_x) && std::abs(n_y) > std::abs(n_z)) { - uvs[uv_idx] = v_x; - uvs[uv_idx + 1] = v_z; - } - if (std::abs(n_z) > std::abs(n_x) && std::abs(n_z) > std::abs(n_y)) { - uvs[uv_idx] = v_x; - uvs[uv_idx + 1] = v_y; - } - } - - return uvs; - } - - private: - // Welds vertices that belong to different faces - int addVertex(int material_index, const gp_XYZ& p) { - const bool convert = settings().get(IteratorSettings::CONVERT_BACK_UNITS); - const double X = convert ? (p.X() / settings().unit_magnitude()) : p.X(); - const double Y = convert ? (p.Y() / settings().unit_magnitude()) : p.Y(); - const double Z = convert ? (p.Z() / settings().unit_magnitude()) : p.Z(); - int i = (int) _verts.size() / 3; - if (settings().get(IteratorSettings::WELD_VERTICES)) { - const VertexKey key = std::make_pair(material_index, std::make_pair(X, std::make_pair(Y, Z))); - typename VertexKeyMap::const_iterator it = welds.find(key); - if ( it != welds.end() ) return it->second; - i = (int) (welds.size() + weld_offset_); - welds[key] = i; - } - _verts.push_back(X); - _verts.push_back(Y); - _verts.push_back(Z); - return i; - } - inline void addEdge(int n1, int n2, std::map,int>& edgecount, std::vector >& edges_temp) { - const Edge e = Edge( (std::min)(n1,n2),(std::max)(n1,n2) ); - if ( edgecount.find(e) == edgecount.end() ) edgecount[e] = 1; - else edgecount[e] ++; - edges_temp.push_back(e); - } - Triangulation(); - Triangulation(const Triangulation&); - Triangulation& operator=(const Triangulation&); - }; - - } -} - -#endif diff --git a/src/ifcgeom/IfcGeomShapes.cpp b/src/ifcgeom/IfcGeomShapes.cpp deleted file mode 100644 index 2303774d01..0000000000 --- a/src/ifcgeom/IfcGeomShapes.cpp +++ /dev/null @@ -1,1864 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Implementations of the various conversion functions defined in mapping.i * - * * - ********************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#include - -#include - -#include - -#include "../ifcgeom/IfcGeom.h" - -#include - -#ifdef SCHEMA_HAS_IfcToroidalSurface -#include -#endif - -#define Kernel MAKE_TYPE_NAME(Kernel) - -// uncomment if you'd like negative or close to zero extrusion depths to succeed -// #define PERMISSIVE_EXTRUSION - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcExtrudedAreaSolid* l, TopoDS_Shape& shape) { - const double height = l->Depth() * getValue(GV_LENGTH_UNIT); - if (height < getValue(GV_PRECISION)) { - Logger::Message(Logger::LOG_ERROR, "Non-positive extrusion height encountered for:", l); -#ifndef PERMISSIVE_EXTRUSION - return false; -#endif - } - - TopoDS_Shape face; - if ( !convert_face(l->SweptArea(),face) ) return false; - -#ifdef PERMISSIVE_EXTRUSION - if (abs(height) < getValue(GV_PRECISION)) { - shape = face; - return true; - } -#endif - - gp_Trsf trsf; - bool has_position = true; -#ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf); - } - - gp_Dir dir; - convert(l->ExtrudedDirection(),dir); - - shape.Nullify(); - - /* - // @nb This logic was probably flawed always as this does not by itself result in a valid compsolid... - if (face.ShapeType() == TopAbs_COMPOUND) { - - // For compounds (most likely the result of a IfcCompositeProfileDef) - // create a compound solid shape. - - TopExp_Explorer exp(face, TopAbs_FACE); - - TopoDS_CompSolid compound; - BRep_Builder builder; - builder.MakeCompSolid(compound); - - int num_faces_extruded = 0; - for (; exp.More(); exp.Next(), ++num_faces_extruded) { - builder.Add(compound, BRepPrimAPI_MakePrism(exp.Current(), height*dir)); - } - - if (num_faces_extruded) { - shape = compound; - } - - } - */ - - if (shape.IsNull()) { - shape = BRepPrimAPI_MakePrism(face, height*dir); - } - - if (has_position && !shape.IsNull()) { - // IfcSweptAreaSolid.Position (trsf) is an IfcAxis2Placement3D - // and therefore has a unit scale factor - shape.Move(trsf); - } - - return !shape.IsNull(); -} - -#ifdef SCHEMA_HAS_IfcExtrudedAreaSolidTapered -bool IfcGeom::Kernel::convert(const IfcSchema::IfcExtrudedAreaSolidTapered* l, TopoDS_Shape& shape) { - const double height = l->Depth() * getValue(GV_LENGTH_UNIT); - if (height < getValue(GV_PRECISION)) { - Logger::Message(Logger::LOG_ERROR, "Non-positive extrusion height encountered for:", l); - return false; - } - - TopoDS_Shape face1, face2; - if (!convert_face(l->SweptArea(), face1)) return false; - if (!convert_face(l->EndSweptArea(), face2)) return false; - - gp_Trsf trsf; - bool has_position = true; -#ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf); - } - - gp_Dir dir; - convert(l->ExtrudedDirection(), dir); - - gp_Trsf end_profile; - end_profile.SetTranslation(height * dir); - - TopoDS_Edge spine_edge = BRepBuilderAPI_MakeEdge(gp_Pnt(), gp_Pnt((height * dir).XYZ())).Edge(); - TopoDS_Wire wire = BRepBuilderAPI_MakeWire(spine_edge).Wire(); - - shape.Nullify(); - - TopExp_Explorer exp1(face1, TopAbs_WIRE); - TopExp_Explorer exp2(face2, TopAbs_WIRE); - - TopoDS_Vertex v1, v2; - TopExp::Vertices(wire, v1, v2); - - TopoDS_Shape shell; - TopoDS_Compound compound; - BRep_Builder compound_builder; - - for (; exp1.More() && exp2.More(); exp1.Next(), exp2.Next()) { - const TopoDS_Wire& w1 = TopoDS::Wire(exp1.Current()); - const TopoDS_Wire& w2 = TopoDS::Wire(exp2.Current()); - - BRepOffsetAPI_MakePipeShell builder(wire); - builder.Add(w1, v1); - builder.Add(w2.Moved(end_profile), v2); - - TopoDS_Shape result = builder.Shape(); - - TopTools_ListOfShape li; - shape_to_face_list(result, li); - li.Append(BRepBuilderAPI_MakeFace(w1).Face().Reversed()); - li.Append(BRepBuilderAPI_MakeFace(w2).Face().Moved(end_profile)); - - create_solid_from_faces(li, result, true); - - // @todo ugly hack - - // The reason for this distinction is that at this point of the loop we're not sure anymore - // whether this was constructed from an inner or outer bound. So rather than iterating over - // wires of `face1` and `face2` we should iterate over the faces and then properly check with - // BRepTools::OuterBound(). - // Currently this distinction happens based on profile type which is not robust and probably - // not complete. - if (shell.IsNull()) { - shell = result; - } else if (l->SweptArea()->declaration().is(IfcSchema::IfcCircleHollowProfileDef::Class()) || - l->SweptArea()->declaration().is(IfcSchema::IfcRectangleHollowProfileDef::Class()) || - l->SweptArea()->declaration().is(IfcSchema::IfcArbitraryProfileDefWithVoids::Class())) - { - // @todo properly check for failure and all. - shell = BRepAlgoAPI_Cut(shell, result).Shape(); - } else { - if (compound.IsNull()) { - compound_builder.MakeCompound(compound); - compound_builder.Add(compound, shell); - } - compound_builder.Add(compound, result); - } - } - - if (!compound.IsNull()) { - shell = compound; - } - - shape = shell; - - if (exp1.More() != exp2.More()) { - Logger::Message(Logger::LOG_ERROR, "Inconsistent profiles encountered for:", l); - } - - if (has_position && !shape.IsNull()) { - // IfcSweptAreaSolid.Position (trsf) is an IfcAxis2Placement3D - // and therefore has a unit scale factor - shape.Move(trsf); - } - - return !shape.IsNull(); -} -#endif - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcSurfaceOfLinearExtrusion* l, TopoDS_Shape& shape) { - TopoDS_Wire wire; - if ( !convert_wire(l->SweptCurve(), wire) ) { - TopoDS_Face face; - if ( !convert_face(l->SweptCurve(),face) ) return false; - TopExp_Explorer exp(face, TopAbs_WIRE); - wire = TopoDS::Wire(exp.Current()); - } - const double height = l->Depth() * getValue(GV_LENGTH_UNIT); - - gp_Trsf trsf; - bool has_position = true; -#ifdef SCHEMA_IfcSweptSurface_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf); - } - - gp_Dir dir; - convert(l->ExtrudedDirection(),dir); - - shape = BRepPrimAPI_MakePrism(wire, height*dir); - - if (has_position) { - // IfcSweptSurface.Position (trsf) is an IfcAxis2Placement3D - // and therefore has a unit scale factor - shape.Move(trsf); - } - - return !shape.IsNull(); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcSurfaceOfRevolution* l, TopoDS_Shape& shape) { - TopoDS_Wire wire; - if ( !convert_wire(l->SweptCurve(), wire) ) { - TopoDS_Face face; - if ( !convert_face(l->SweptCurve(),face) ) return false; - TopExp_Explorer exp(face, TopAbs_WIRE); - wire = TopoDS::Wire(exp.Current()); - } - - gp_Ax1 ax1; - IfcGeom::Kernel::convert(l->AxisPosition(), ax1); - - gp_Trsf trsf; - bool has_position = true; -#ifdef SCHEMA_IfcSweptSurface_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf); - } - - shape = BRepPrimAPI_MakeRevol(wire, ax1); - - if (has_position) { - // IfcSweptSurface.Position (trsf) is an IfcAxis2Placement3D - // and therefore has a unit scale factor - shape.Move(trsf); - } - - return !shape.IsNull(); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcRevolvedAreaSolid* l, TopoDS_Shape& shape) { - const double ang = l->Angle() * getValue(GV_PLANEANGLE_UNIT); - - TopoDS_Shape face; - if ( ! convert_face(l->SweptArea(),face) ) return false; - - gp_Ax1 ax1; - IfcGeom::Kernel::convert(l->Axis(), ax1); - - gp_Trsf trsf; - bool has_position = true; -#ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf); - } - - - { - // https://github.com/IfcOpenShell/IfcOpenShell/issues/1030 - // Check whether Axis does not intersect SweptArea - - double min_dot = +std::numeric_limits::infinity(); - double max_dot = -std::numeric_limits::infinity(); - - gp_Ax2 ax(ax1.Location(), gp::DZ(), ax1.Direction()); - - TopExp_Explorer exp(face, TopAbs_EDGE); - for (; exp.More(); exp.Next()) { - BRepAdaptor_Curve crv(TopoDS::Edge(exp.Current())); - GCPnts_QuasiUniformDeflection tessellater(crv, getValue(GV_PRECISION)); - - int n = tessellater.NbPoints(); - for (int i = 1; i <= n; ++i) { - double d = ax.YDirection().XYZ().Dot(tessellater.Value(i).XYZ()); - if (d < min_dot) { - min_dot = d; - } - if (d > max_dot) { - max_dot = d; - } - } - } - - bool intersecting; - if (std::abs(min_dot) > std::abs(max_dot)) { - intersecting = max_dot > + getValue(GV_PRECISION); - } else { - intersecting = min_dot < - getValue(GV_PRECISION); - } - - if (intersecting) { - Logger::Warning("Warning Axis and SweptArea intersecting", l); - } - } - - if (ang >= M_PI * 2. - ALMOST_ZERO) { - shape = BRepPrimAPI_MakeRevol(face, ax1); - } else { - shape = BRepPrimAPI_MakeRevol(face, ax1, ang); - } - - if (has_position) { - // IfcSweptAreaSolid.Position (trsf) is an IfcAxis2Placement3D - // and therefore has a unit scale factor - shape.Move(trsf); - } - - return !shape.IsNull(); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcManifoldSolidBrep* l, IfcRepresentationShapeItems& shape) { - TopoDS_Shape s; - auto collective_style = get_style(l); - if (convert_shape(l->Outer(),s) ) { - auto indiv_style = get_style(l->Outer()); - - IfcSchema::IfcClosedShell::list::ptr voids(new IfcSchema::IfcClosedShell::list); - if (l->declaration().is(IfcSchema::IfcFacetedBrepWithVoids::Class())) { - voids = l->as()->Voids(); - } -#ifdef SCHEMA_HAS_IfcAdvancedBrepWithVoids - if (l->declaration().is(IfcSchema::IfcAdvancedBrepWithVoids::Class())) { - voids = l->as()->Voids(); - } -#endif - - for (IfcSchema::IfcClosedShell::list::it it = voids->begin(); it != voids->end(); ++it) { - TopoDS_Shape s2; - /// @todo No extensive shapefixing since shells should be disjoint. - /// @todo Awaiting generalized boolean ops module with appropriate checking - if (convert_shape(l->Outer(), s2)) { - s = BRepAlgoAPI_Cut(s, s2).Shape(); - } - } - - shape.push_back(IfcRepresentationShapeItem(l->data().id(), s, indiv_style ? indiv_style : collective_style)); - return true; - } - return false; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcFaceBasedSurfaceModel* l, IfcRepresentationShapeItems& shapes) { - bool part_success = false; - IfcSchema::IfcConnectedFaceSet::list::ptr facesets = l->FbsmFaces(); - auto collective_style = get_style(l); - for( IfcSchema::IfcConnectedFaceSet::list::it it = facesets->begin(); it != facesets->end(); ++ it ) { - TopoDS_Shape s; - auto shell_style = get_style(*it); - if (convert_shape(*it,s)) { - shapes.push_back(IfcRepresentationShapeItem(l->data().id(), s, shell_style ? shell_style : collective_style)); - part_success |= true; - } - } - return part_success; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcHalfSpaceSolid* l, TopoDS_Shape& shape) { - IfcSchema::IfcSurface* surface = l->BaseSurface(); - if ( ! surface->declaration().is(IfcSchema::IfcPlane::Class()) ) { - Logger::Message(Logger::LOG_ERROR, "Unsupported BaseSurface:", surface); - return false; - } - gp_Pln pln; - IfcGeom::Kernel::convert((IfcSchema::IfcPlane*)surface,pln); - const gp_Pnt pnt = pln.Location().Translated( l->AgreementFlag() ? -pln.Axis().Direction() : pln.Axis().Direction()); - shape = BRepPrimAPI_MakeHalfSpace(BRepBuilderAPI_MakeFace(pln),pnt).Solid(); - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcPolygonalBoundedHalfSpace* l, TopoDS_Shape& shape) { - TopoDS_Shape halfspace; - if ( ! IfcGeom::Kernel::convert((IfcSchema::IfcHalfSpaceSolid*)l,halfspace) ) return false; - - TopoDS_Wire wire; - if ( ! convert_wire(l->PolygonalBoundary(),wire) || ! wire.Closed() ) return false; - - gp_Trsf trsf; - if ( ! convert(l->Position(),trsf) ) return false; - - TColgp_SequenceOfPnt points; - if (wire_to_sequence_of_point(wire, points)) { - // Boolean subtractions not very robust for narrow operands, - // increase minimal point spacing to eliminate such shapes. - const double t = getValue(GV_PRECISION) * 10.; - remove_duplicate_points_from_loop(points, wire.Closed() != 0, t); // Note: wire always closed, as per if statement above - remove_collinear_points_from_loop(points, wire.Closed() != 0, t); - if (points.Length() < 3) { - Logger::Message(Logger::LOG_ERROR, "Not enough points retained from:", l->PolygonalBoundary()); - return false; - } - sequence_of_point_to_wire(points, wire, wire.Closed() != 0); - } - - TopoDS_Shape prism = BRepPrimAPI_MakePrism(BRepBuilderAPI_MakeFace(wire),gp_Vec(0,0,200)); - gp_Trsf down; down.SetTranslation(gp_Vec(0,0,-100.0)); - - // `trsf` and `down` both have a unit scale factor - prism.Move(trsf*down); - - shape = BRepAlgoAPI_Common(halfspace,prism); - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcShellBasedSurfaceModel* l, IfcRepresentationShapeItems& shapes) { - aggregate_of_instance::ptr shells = l->SbsmBoundary(); - auto collective_style = get_style(l); - for( aggregate_of_instance::it it = shells->begin(); it != shells->end(); ++ it ) { - TopoDS_Shape s; - decltype(collective_style) shell_style; - if ((*it)->declaration().is(IfcSchema::IfcRepresentationItem::Class())) { - shell_style = get_style((IfcSchema::IfcRepresentationItem*)*it); - } - if (convert_shape(*it,s)) { - shapes.push_back(IfcRepresentationShapeItem(l->data().id(), s, shell_style ? shell_style : collective_style)); - } - } - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcBooleanResult* l, TopoDS_Shape& shape) { - - TopoDS_Shape s1; - IfcRepresentationShapeItems items1; - TopoDS_Wire boundary_wire; - IfcSchema::IfcBooleanOperand* operand1 = l->FirstOperand(); - IfcSchema::IfcBooleanOperand* operand2 = l->SecondOperand(); - bool has_halfspace_operand = false; - - BOPAlgo_Operation occ_op; - - const IfcSchema::IfcBooleanOperator::Value op = l->Operator(); - if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE) { - occ_op = BOPAlgo_CUT; - } else if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_INTERSECTION) { - occ_op = BOPAlgo_COMMON; - } else if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_UNION) { - occ_op = BOPAlgo_FUSE; - } else { - return false; - } - - std::vector second_operands; - second_operands.push_back(operand2); - - if (occ_op == BOPAlgo_CUT) { - int n_half_space_operands = 0; - bool process_as_list = true; - while (true) { - auto res1 = operand1->as(); - if (res1 && res1->SecondOperand()->as() && ++n_half_space_operands > 8) { - // There is something peculiar about many half space subtraction operands that OCCT does not like. - // Often these are used to create a semi-curved arch, as is the case in 693. Supplying all these - // operands at once apparently leads to too many edge-edge interference checks. - process_as_list = false; - break; - } - if (res1) { - if (res1->Operator() == op) { - operand1 = res1->FirstOperand(); - second_operands.push_back(res1->SecondOperand()); - } else { - process_as_list = false; - break; - } - } else { - break; - } - } - - if (!process_as_list) { - operand1 = l->FirstOperand(); - second_operands = { operand2 }; - } - } - - if ( shape_type(operand1) == ST_SHAPELIST ) { - if (!(convert_shapes(operand1, items1) && flatten_shape_list(items1, s1, true))) { - return false; - } - } else if ( shape_type(operand1) == ST_SHAPE ) { - if ( ! convert_shape(operand1, s1) ) { - return false; - } - { TopoDS_Solid temp_solid; - s1 = ensure_fit_for_subtraction(s1, temp_solid); } - } else { - Logger::Message(Logger::LOG_ERROR, "Invalid representation item for boolean operation", operand1); - return false; - } - - if (getValue(GV_DISABLE_BOOLEAN_RESULT) > 0.0) { - shape = s1; - return true; - } - - const double first_operand_volume = shape_volume(s1); - if (first_operand_volume <= ALMOST_ZERO) { - Logger::Message(Logger::LOG_WARNING, "Empty solid for:", l->FirstOperand()); - } - - TopTools_ListOfShape second_operand_shapes; - - for (auto& op2 : second_operands) { - TopoDS_Shape s2; - - bool shape2_processed = false; - - bool is_halfspace = op2->declaration().is(IfcSchema::IfcHalfSpaceSolid::Class()); - bool is_unbounded_halfspace = is_halfspace && !op2->declaration().is(IfcSchema::IfcPolygonalBoundedHalfSpace::Class()); - has_halfspace_operand |= is_halfspace; - - { - if (shape_type(op2) == ST_SHAPELIST) { - IfcRepresentationShapeItems items2; - shape2_processed = convert_shapes(op2, items2) && flatten_shape_list(items2, s2, true); - } else if (shape_type(op2) == ST_SHAPE) { - shape2_processed = convert_shape(op2, s2); - if (shape2_processed) { - TopoDS_Solid temp_solid; - s2 = ensure_fit_for_subtraction(s2, temp_solid); - } - } else { - Logger::Message(Logger::LOG_ERROR, "Invalid representation item for boolean operation", op2); - } - } - - if (is_unbounded_halfspace) { - TopoDS_Shape temp; - double d; - if (fit_halfspace(s1, s2, temp, d)) { - if (d < getValue(GV_PRECISION)) { - Logger::Message(Logger::LOG_WARNING, "Halfspace subtraction yields unchanged volume:", l); - continue; - } else { - s2 = temp; - } - } - } - - if (!shape2_processed) { - Logger::Message(Logger::LOG_ERROR, "Failed to convert SecondOperand:", op2); - continue; - } - - if (op2->declaration().is(IfcSchema::IfcHalfSpaceSolid::Class())) { - const double second_operand_volume = shape_volume(s2); - if (second_operand_volume <= ALMOST_ZERO) { - Logger::Message(Logger::LOG_WARNING, "Empty solid for:", op2); - } - } - - second_operand_shapes.Append(s2); - } - - /* - // TK: A little debugging trick to output both operands for visual inspection - - BRep_Builder builder; - TopoDS_Compound compound; - builder.MakeCompound(compound); - builder.Add(compound, s1); - for (const auto& s2 : second_operand_shapes) { - builder.Add(compound, s2); - } - shape = compound; - return true; - */ - -#if OCC_VERSION_HEX < 0x60900 - // @todo: this currently does not compile anymore, do we still need this? - bool valid_result = boolean_operation(s1, s2, occ_op, shape); -#else - - bool valid_result; - - if (s1.ShapeType() == TopAbs_COMPOUND && TopoDS_Iterator(s1).More() && TopoDS_Iterator(s1).Value().ShapeType() == TopAbs_SOLID) { - TopoDS_Compound C; - BRep_Builder B; - B.MakeCompound(C); - TopoDS_Iterator it(s1); - valid_result = true; - for (; it.More(); it.Next()) { - TopoDS_Shape part; - if (boolean_operation(it.Value(), second_operand_shapes, occ_op, part)) { - B.Add(C, part); - } else { - valid_result = false; - } - } - shape = C; - } else { - valid_result = boolean_operation(s1, second_operand_shapes, occ_op, shape); - } - -#endif - - if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE) { - // In case of a subtraction, a check on volume is performed. - if (valid_result) { - const double volume_after_subtraction = shape_volume(shape); - if ( ALMOST_THE_SAME(first_operand_volume,volume_after_subtraction) ) - Logger::Message(Logger::LOG_WARNING,"Subtraction yields unchanged volume:",l); - } else { - Logger::Message(Logger::LOG_ERROR,"Failed to process subtraction:",l); - shape = s1; - } - // NB: After issuing error the first operand is returned! - return true; - } else if (op == IfcSchema::IfcBooleanOperator::IfcBooleanOperator_UNION && !valid_result) { - BRep_Builder B; - TopoDS_Compound C; - B.MakeCompound(C); - B.Add(C, s1); - TopTools_ListIteratorOfListOfShape it(second_operand_shapes); - for (; it.More(); it.Next()) { - B.Add(C, it.Value()); - } - Logger::Message(Logger::LOG_ERROR, "Failed to process union, creating compound:", l); - shape = C; - return true; - } else { - return valid_result; - } - return false; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcConnectedFaceSet* l, TopoDS_Shape& shape) { - std::unique_ptr> helper_scope; - - IfcSchema::IfcCartesianPoint::list::ptr points = IfcParse::traverse((IfcUtil::IfcBaseClass*) l)->as(); - std::vector points_(points->begin(), points->end()); - - IfcSchema::IfcPolyLoop::list::ptr loops = IfcParse::traverse((IfcUtil::IfcBaseClass*)l)->as(); - std::vector loops_(loops->begin(), loops->end()); - - helper_scope.reset(new faceset_helper<>( - this, - points_, - loops_, - l->declaration().is(IfcSchema::IfcClosedShell::Class()) - )); - - faceset_helper_ = helper_scope.get(); - - IfcSchema::IfcFace::list::ptr faces = l->CfsFaces(); - - double min_face_area = faceset_helper_ - ? (faceset_helper_->epsilon() * faceset_helper_->epsilon() / 20.) - : getValue(GV_MINIMAL_FACE_AREA); - - TopTools_ListOfShape face_list; - for (IfcSchema::IfcFace::list::it it = faces->begin(); it != faces->end(); ++it) { - bool success = false; - TopoDS_Face face; - - try { - success = convert_face(*it, face); - } catch (const std::exception& e) { - Logger::Error(e); - } catch (const Standard_Failure& e) { - if (e.GetMessageString() && strlen(e.GetMessageString())) { - Logger::Error(e.GetMessageString()); - } else { - Logger::Error("Unknown error creating face"); - } - } catch (...) { - Logger::Error("Unknown error creating face"); - } - - if (!success) { - Logger::Message(Logger::LOG_WARNING, "Failed to convert face:", (*it)); - continue; - } - - if (face.ShapeType() == TopAbs_COMPOUND) { - TopoDS_Iterator face_it(face, false); - for (; face_it.More(); face_it.Next()) { - if (face_it.Value().ShapeType() == TopAbs_FACE) { - // This should really be the case. This is not asserted. - const TopoDS_Face& triangle = TopoDS::Face(face_it.Value()); - if (face_area(triangle) > min_face_area) { - face_list.Append(triangle); - } else { - Logger::Message(Logger::LOG_WARNING, "Degenerate face:", (*it)); - } - } - } - } else { - if (face_area(face) > min_face_area) { - face_list.Append(face); - } else { - Logger::Message(Logger::LOG_WARNING, "Degenerate face:", (*it)); - } - } - } - - if (face_list.Extent() == 0) { - return false; - } - - if (face_list.Extent() > getValue(GV_MAX_FACES_TO_ORIENT) || !create_solid_from_faces(face_list, shape)) { - TopoDS_Compound compound; - BRep_Builder builder; - builder.MakeCompound(compound); - - TopTools_ListIteratorOfListOfShape face_iterator; - for (face_iterator.Initialize(face_list); face_iterator.More(); face_iterator.Next()) { - builder.Add(compound, face_iterator.Value()); - } - shape = compound; - } - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcMappedItem* l, IfcRepresentationShapeItems& shapes) { - gp_GTrsf gtrsf; - IfcSchema::IfcCartesianTransformationOperator* transform = l->MappingTarget(); - if ( transform->declaration().is(IfcSchema::IfcCartesianTransformationOperator3DnonUniform::Class()) ) { - IfcGeom::Kernel::convert((IfcSchema::IfcCartesianTransformationOperator3DnonUniform*)transform,gtrsf); - } else if ( transform->declaration().is(IfcSchema::IfcCartesianTransformationOperator2DnonUniform::Class()) ) { - Logger::Message(Logger::LOG_ERROR, "Unsupported MappingTarget:", transform); - return false; - } else if ( transform->declaration().is(IfcSchema::IfcCartesianTransformationOperator3D::Class()) ) { - gp_Trsf trsf; - IfcGeom::Kernel::convert((IfcSchema::IfcCartesianTransformationOperator3D*)transform,trsf); - gtrsf = trsf; - } else if ( transform->declaration().is(IfcSchema::IfcCartesianTransformationOperator2D::Class()) ) { - gp_Trsf2d trsf_2d; - IfcGeom::Kernel::convert((IfcSchema::IfcCartesianTransformationOperator2D*)transform,trsf_2d); - gtrsf = (gp_Trsf) trsf_2d; - } - IfcSchema::IfcRepresentationMap* map = l->MappingSource(); - IfcSchema::IfcAxis2Placement* placement = map->MappingOrigin(); - gp_Trsf trsf; - if (placement->declaration().is(IfcSchema::IfcAxis2Placement3D::Class())) { - IfcGeom::Kernel::convert((IfcSchema::IfcAxis2Placement3D*)placement,trsf); - } else { - gp_Trsf2d trsf_2d; - IfcGeom::Kernel::convert((IfcSchema::IfcAxis2Placement2D*)placement,trsf_2d); - trsf = trsf_2d; - } - gtrsf.Multiply(trsf); - - auto mapped_item_style = get_style(l); - - const size_t previous_size = shapes.size(); - bool b = convert_shapes(map->MappedRepresentation(), shapes); - - for (size_t i = previous_size; i < shapes.size(); ++ i ) { - shapes[i].prepend(gtrsf); - - // Apply styles assigned to the mapped item only if on - // a more granular level no styles have been applied - if (!shapes[i].hasStyle()) { - shapes[i].setStyle(mapped_item_style); - } - } - - return b; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcRepresentation* l, IfcRepresentationShapeItems& shapes) { - IfcSchema::IfcRepresentationItem::list::ptr items = l->Items(); - bool part_succes = false; - if ( items->size() ) { - for ( IfcSchema::IfcRepresentationItem::list::it it = items->begin(); it != items->end(); ++ it ) { - IfcSchema::IfcRepresentationItem* representation_item = *it; - if ( shape_type(representation_item) == ST_SHAPELIST ) { - part_succes |= convert_shapes(*it, shapes); - } else { - TopoDS_Shape s; - if (convert_shape(representation_item, s)) { - if (s.ShapeType() == TopAbs_COMPOUND && TopoDS_Iterator(s).More() && TopoDS_Iterator(s).Value().ShapeType() == TopAbs_SOLID) { - TopoDS_Iterator it(s); - for (; it.More(); it.Next()) { - shapes.push_back(IfcRepresentationShapeItem(representation_item->data().id(), it.Value(), get_style(representation_item))); - } - } else { - shapes.push_back(IfcRepresentationShapeItem(representation_item->data().id(), s, get_style(representation_item))); - } - part_succes |= true; - } - } - } - } - return part_succes; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcGeometricSet* l, IfcRepresentationShapeItems& shapes) { - // @nb the selection is partly duplicated from convert_curves() but it's needed as a - // geometric set by it's static class definition does not inform us of the type of elements. - // @todo handle this better so that this doesn't log an error. - const bool include_curves = getValue(GV_DIMENSIONALITY) != +1; - const bool include_solids_and_surfaces = getValue(GV_DIMENSIONALITY) != -1; - - aggregate_of_instance::ptr elements = l->Elements(); - if ( !elements->size() ) return false; - bool part_succes = false; - auto parent_style = get_style(l); - for (aggregate_of_instance::it it = elements->begin(); it != elements->end(); ++it) { - auto element = *it; - TopoDS_Shape s; - if (shape_type(element) == ST_SHAPELIST) { - IfcRepresentationShapeItems items; - if (!(convert_shapes(element, items) && flatten_shape_list(items, s, false))) { - continue; - } - } else if (shape_type(element) == ST_SHAPE && include_solids_and_surfaces) { - if (!convert_shape(element, s)) { - continue; - } - } else if (shape_type(element) == ST_WIRE && include_curves) { - TopoDS_Wire w; - if (!convert_wire(element, w)) { - continue; - } - s = w; - } else { - continue; - } - - part_succes = true; - decltype(parent_style) style = 0; - if (element->declaration().is(IfcSchema::IfcPoint::Class())) { - style = get_style((IfcSchema::IfcPoint*) element); - } - else if (element->declaration().is(IfcSchema::IfcCurve::Class())) { - style = get_style((IfcSchema::IfcCurve*) element); - } - else if (element->declaration().is(IfcSchema::IfcSurface::Class())) { - style = get_style((IfcSchema::IfcSurface*) element); - } - shapes.push_back(IfcRepresentationShapeItem(l->data().id(), s, style ? style : parent_style)); - } - return part_succes; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcBlock* l, TopoDS_Shape& shape) { - const double dx = l->XLength() * getValue(GV_LENGTH_UNIT); - const double dy = l->YLength() * getValue(GV_LENGTH_UNIT); - const double dz = l->ZLength() * getValue(GV_LENGTH_UNIT); - - BRepPrimAPI_MakeBox builder(dx, dy, dz); - gp_Trsf trsf; - IfcGeom::Kernel::convert(l->Position(),trsf); - - // IfcCsgPrimitive3D.Position has unit scale factor - shape = builder.Solid().Moved(trsf); - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcBoundingBox* l, TopoDS_Shape& shape) { - const double dx = l->XDim() * getValue(GV_LENGTH_UNIT); - const double dy = l->YDim() * getValue(GV_LENGTH_UNIT); - const double dz = l->ZDim() * getValue(GV_LENGTH_UNIT); - - gp_Pnt corner; - IfcGeom::Kernel::convert(l->Corner(), corner); - BRepPrimAPI_MakeBox builder(corner, dx, dy, dz); - - shape = builder.Solid(); - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcRectangularPyramid* l, TopoDS_Shape& shape) { - const double dx = l->XLength() * getValue(GV_LENGTH_UNIT); - const double dy = l->YLength() * getValue(GV_LENGTH_UNIT); - const double dz = l->Height() * getValue(GV_LENGTH_UNIT); - - BRepPrimAPI_MakeWedge builder(dx, dz, dy, dx / 2., dy / 2., dx / 2., dy / 2.); - - gp_Trsf trsf1, trsf2; - trsf2.SetValues( - 1, 0, 0, 0, - 0, 0, 1, 0, - 0, 1, 0, 0 -#if OCC_VERSION_HEX < 0x60800 - , Precision::Angular(), Precision::Confusion() -#endif - ); - - IfcGeom::Kernel::convert(l->Position(), trsf1); - shape = BRepBuilderAPI_Transform(builder.Solid(), trsf1 * trsf2); - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcRightCircularCylinder* l, TopoDS_Shape& shape) { - const double r = l->Radius() * getValue(GV_LENGTH_UNIT); - const double h = l->Height() * getValue(GV_LENGTH_UNIT); - - BRepPrimAPI_MakeCylinder builder(r, h); - gp_Trsf trsf; - IfcGeom::Kernel::convert(l->Position(),trsf); - - // IfcCsgPrimitive3D.Position has unit scale factor - shape = builder.Solid().Moved(trsf); - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcRightCircularCone* l, TopoDS_Shape& shape) { - const double r = l->BottomRadius() * getValue(GV_LENGTH_UNIT); - const double h = l->Height() * getValue(GV_LENGTH_UNIT); - - BRepPrimAPI_MakeCone builder(r, 0., h); - gp_Trsf trsf; - IfcGeom::Kernel::convert(l->Position(),trsf); - - // IfcCsgPrimitive3D.Position has unit scale factor - shape = builder.Solid().Moved(trsf); - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcSphere* l, TopoDS_Shape& shape) { - const double r = l->Radius() * getValue(GV_LENGTH_UNIT); - - BRepPrimAPI_MakeSphere builder(r); - gp_Trsf trsf; - IfcGeom::Kernel::convert(l->Position(),trsf); - - // IfcCsgPrimitive3D.Position has unit scale factor - shape = builder.Solid().Moved(trsf); - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCsgSolid* l, TopoDS_Shape& shape) { - return convert_shape(l->TreeRootExpression(), shape); -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCurveBoundedPlane* l, TopoDS_Shape& face) { - gp_Pln pln; - if (!IfcGeom::Kernel::convert(l->BasisSurface(), pln)) { - return false; - } - - gp_Trsf trsf; - trsf.SetTransformation(pln.Position(), gp::XOY()); - - TopoDS_Wire outer; - if (!convert_wire(l->OuterBoundary(), outer)) { - return false; - } - - BRepBuilderAPI_MakeFace mf(outer); - - if (!mf.IsDone() || mf.Shape().IsNull()) { - Logger::Error("Invalid outer boundary:", l->OuterBoundary()); - return false; - } - - IfcSchema::IfcCurve::list::ptr boundaries = l->InnerBoundaries(); - - for (IfcSchema::IfcCurve::list::it it = boundaries->begin(); it != boundaries->end(); ++it) { - TopoDS_Wire inner; - if (convert_wire(*it, inner)) { - mf.Add(inner); - } - } - - ShapeFix_Shape sfs(mf.Face()); - sfs.Perform(); - - // `trsf` consitutes the placement of the plane and therefore has unit scale factor - face = TopoDS::Face(sfs.Shape()).Moved(trsf); - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcRectangularTrimmedSurface* l, TopoDS_Shape& face) { - if (!l->BasisSurface()->declaration().is(IfcSchema::IfcPlane::Class())) { - Logger::Message(Logger::LOG_ERROR, "Unsupported BasisSurface:", l->BasisSurface()); - return false; - } - gp_Pln pln; - IfcGeom::Kernel::convert((IfcSchema::IfcPlane*) l->BasisSurface(), pln); - - BRepBuilderAPI_MakeFace mf(pln, l->U1(), l->U2(), l->V1(), l->V2()); - - face = mf.Face(); - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcSurfaceCurveSweptAreaSolid* l, TopoDS_Shape& shape) { - gp_Trsf directrix; - TopoDS_Shape face; - TopoDS_Face surface_face; - TopoDS_Wire wire, section; - - const bool is_plane = l->ReferenceSurface()->declaration().is(IfcSchema::IfcPlane::Class()); - - if (!is_plane) { - TopoDS_Shape surface_shell; - if (!convert_shape(l->ReferenceSurface(), surface_shell)) { - Logger::Error("Failed to convert reference surface", l); - return false; - } - if (count(surface_shell, TopAbs_FACE) != 1) { - Logger::Error("Non-continuous reference surface", l); - return false; - } - surface_face = TopoDS::Face(TopExp_Explorer(surface_shell, TopAbs_FACE).Current()); - } - - gp_Trsf trsf; - bool has_position = true; -#ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL - has_position = l->Position() != nullptr; -#endif - if (has_position) { - IfcGeom::Kernel::convert(l->Position(), trsf); - } - - if (!convert_face(l->SweptArea(), face) || - !convert_wire(l->Directrix(), wire) ) { - return false; - } - - gp_Pln pln; - gp_Pnt directrix_origin; - gp_Vec directrix_tangent; - bool directrix_on_plane = is_plane; - - if (is_plane) { - IfcGeom::Kernel::convert((IfcSchema::IfcPlane*) l->ReferenceSurface(), pln); - - // As per Informal propositions 2: The Directrix shall lie on the ReferenceSurface. - // This is not always the case with the test files in the repository. I am not sure - // how to deal with this and whether my interpretation of the propositions is - // correct. However, if it has been asserted that the vertices of the directrix do - // not conform to the ReferenceSurface, the ReferenceSurface is ignored. - { - for (TopExp_Explorer exp(wire, TopAbs_VERTEX); exp.More(); exp.Next()) { - if (pln.Distance(BRep_Tool::Pnt(TopoDS::Vertex(exp.Current()))) > ALMOST_ZERO) { - directrix_on_plane = false; - Logger::Message(Logger::LOG_WARNING, "The Directrix does not lie on the ReferenceSurface", l); - break; - } - } - } - } - - { - TopExp_Explorer exp(wire, TopAbs_EDGE); - TopoDS_Edge edge = TopoDS::Edge(exp.Current()); - double u0, u1; - Handle(Geom_Curve) crv = BRep_Tool::Curve(edge, u0, u1); - crv->D1(u0, directrix_origin, directrix_tangent); - } - - if (is_plane && pln.Axis().Direction().IsNormal(directrix_tangent, Precision::Approximation()) && directrix_on_plane) { - directrix.SetTransformation(gp_Ax3(directrix_origin, directrix_tangent, pln.Axis().Direction()), gp::XOY()); - } else if (!is_plane) { - ShapeAnalysis_Surface sas(BRep_Tool::Surface(surface_face)); - auto pnt2d = sas.ValueOfUV(directrix_origin, getValue(GV_PRECISION) * 10.); - BRepGProp_Face prop(surface_face); - gp_Pnt _; - gp_Vec surface_normal; - prop.Normal(pnt2d.X(), pnt2d.Y(), _, surface_normal); - directrix.SetTransformation(gp_Ax3(directrix_origin, directrix_tangent, surface_normal), gp::XOY()); - } else { - directrix.SetTransformation(gp_Ax3(directrix_origin, directrix_tangent), gp::XOY()); - } - face = BRepBuilderAPI_Transform(face, directrix); - - if (!is_plane) { - TopExp_Explorer exp(wire, TopAbs_EDGE); - for (; exp.More(); exp.Next()) { - ShapeFix_Edge sfe; - sfe.FixAddPCurve(TopoDS::Edge(exp.Current()), surface_face, false, getValue(GV_PRECISION)); - } - } - - // NB: Note that StartParam and EndParam param are ignored and the assumption is - // made that the parametric range over which to be swept matches the IfcCurve in - // its entirety. - BRepOffsetAPI_MakePipeShell builder(wire); - - { TopExp_Explorer exp(face, TopAbs_WIRE); - section = TopoDS::Wire(exp.Current()); } - - builder.Add(section); - builder.SetTransitionMode(BRepBuilderAPI_RightCorner); - if (directrix_on_plane) { - builder.SetMode(pln.Axis().Direction()); - } else if (!is_plane) { - builder.SetMode(surface_face); - } - builder.Build(); - builder.MakeSolid(); - shape = builder.Shape(); - - if (has_position) { - // IfcSweptAreaSolid.Position (trsf) is an IfcAxis2Placement3D - // and therefore has a unit scale factor - shape.Move(trsf); - } - - return true; -} - -namespace { - bool wire_is_c1_continuous(const TopoDS_Wire& w, double tol) { - // NB Note that c0 continuity is NOT checked! - - TopTools_IndexedDataMapOfShapeListOfShape map; - TopExp::MapShapesAndAncestors(w, TopAbs_VERTEX, TopAbs_EDGE, map); - for (int i = 1; i <= map.Extent(); ++i) { - const auto& li = map.FindFromIndex(i); - if (li.Extent() == 2) { - const TopoDS_Vertex& v = TopoDS::Vertex(map.FindKey(i)); - - const TopoDS_Edge& e0 = TopoDS::Edge(li.First()); - const TopoDS_Edge& e1 = TopoDS::Edge(li.Last()); - - double u0 = BRep_Tool::Parameter(v, e0); - double u1 = BRep_Tool::Parameter(v, e1); - - double _, __; - Handle(Geom_Curve) c0 = BRep_Tool::Curve(e0, _, __); - Handle(Geom_Curve) c1 = BRep_Tool::Curve(e1, _, __); - - gp_Pnt p; - gp_Vec v0, v1; - c0->D1(u0, p, v0); - c1->D1(u1, p, v1); - - if (1. - std::abs(v0.Normalized().Dot(v1.Normalized())) > tol) { - return false; - } - } - } - return true; - } -} - -namespace { - bool wire_to_ax(const TopoDS_Wire& wire, gp_Ax2& directrix) { - gp_Pnt directrix_origin; - gp_Vec directrix_tangent; - - TopoDS_Edge edge; - - // Find first edge - TopoDS_Vertex v0, v1; - TopExp::Vertices(wire, v0, v1); - TopTools_IndexedDataMapOfShapeListOfShape map; - TopExp::MapShapesAndAncestors(wire, TopAbs_VERTEX, TopAbs_EDGE, map); - if (v0.IsSame(v1) && map.Contains(v0) && map.FindFromKey(v0).Extent() == 2) { - // Closed wire, with more than 1 edges - auto es = map.FindFromKey(v0); - auto e1 = TopoDS::Edge(es.First()); - auto e2 = TopoDS::Edge(es.Last()); - - double u0, u1; - - gp_Vec accum; - - Handle(Geom_Curve) crv = BRep_Tool::Curve(e1, u0, u1); - crv->D1(TopExp::FirstVertex(e1).IsSame(v0) ? u0 : u1, directrix_origin, directrix_tangent); - - accum += directrix_tangent; - - crv = BRep_Tool::Curve(e2, u0, u1); - crv->D1(TopExp::FirstVertex(e2).IsSame(v0) ? u0 : u1, directrix_origin, directrix_tangent); - - accum += directrix_tangent; - - directrix_tangent = accum; - - } else if (map.Contains(v0) && map.FindFromKey(v0).Extent() == 1) { - edge = TopoDS::Edge(map.FindFromKey(v0).First()); - - double u0, u1; - Handle(Geom_Curve) crv = BRep_Tool::Curve(edge, u0, u1); - crv->D1(u0, directrix_origin, directrix_tangent); - } else { - Logger::Error("Unable to locate first edge"); - return false; - } - - directrix = gp_Ax2(directrix_origin, directrix_tangent); - - return true; - } - - bool is_single_linear_edge(const TopoDS_Wire& wire) { - TopExp_Explorer exp(wire, TopAbs_EDGE); - if (!exp.More()) { - return false; - } - TopoDS_Edge e = TopoDS::Edge(exp.Current()); - exp.Next(); - if (exp.More()) { - return false; - } - double u, v; - Handle_Geom_Curve crv = BRep_Tool::Curve(e, u, v); - return crv->DynamicType() == STANDARD_TYPE(Geom_Line); - } - - bool is_single_circular_edge(const TopoDS_Wire& wire) { - TopExp_Explorer exp(wire, TopAbs_EDGE); - if (!exp.More()) { - return false; - } - TopoDS_Edge e = TopoDS::Edge(exp.Current()); - exp.Next(); - if (exp.More()) { - return false; - } - double u, v; - Handle_Geom_Curve crv = BRep_Tool::Curve(e, u, v); - return crv->DynamicType() == STANDARD_TYPE(Geom_Circle); - } - - void process_sweep_as_extrusion(const TopoDS_Wire& wire, const TopoDS_Wire& section, TopoDS_Shape& result) { - TopExp_Explorer exp(wire, TopAbs_EDGE); - TopoDS_Edge e = TopoDS::Edge(exp.Current()); - double u, v; - Handle_Geom_Curve crv = BRep_Tool::Curve(e, u, v); - const auto& dir = Handle(Geom_Line)::DownCast(crv)->Position().Direction(); - // OCCT line is normalized so diff in parametric coords equals length - const double depth = std::abs(u - v); - // @todo we could be extruding the wire only when we know this is an intermediate edge. - TopoDS_Face face = BRepBuilderAPI_MakeFace(section).Face(); - result = BRepPrimAPI_MakePrism(face, depth*dir).Shape(); - } - - void process_sweep_as_revolution(const TopoDS_Wire& wire, const TopoDS_Wire& section, TopoDS_Shape& result) { - TopExp_Explorer exp(wire, TopAbs_EDGE); - TopoDS_Edge e = TopoDS::Edge(exp.Current()); - double u, v; - Handle_Geom_Curve crv = BRep_Tool::Curve(e, u, v); - auto circ = Handle(Geom_Circle)::DownCast(crv); - // @todo we could be extruding the wire only when we know this is an intermediate edge. - const double depth = std::abs(u - v); - TopoDS_Face face = BRepBuilderAPI_MakeFace(section).Face(); - result = BRepPrimAPI_MakeRevol(face, circ->Axis(), depth).Shape(); - } - - void process_sweep_as_pipe(const TopoDS_Wire& wire, const TopoDS_Wire& section, TopoDS_Shape& result, bool force_transformed=false) { - // This tolerance is fairly high due to the linear edge substitution for small (or large radii) conical curves. - const bool is_continuous = wire_is_c1_continuous(wire, 1.e-2); - BRepOffsetAPI_MakePipeShell builder(wire); - builder.Add(section); - builder.SetTransitionMode(is_continuous || force_transformed ? BRepBuilderAPI_Transformed : BRepBuilderAPI_RightCorner); - try { - builder.Build(); - } catch (Standard_Failure& e) { - // We fallback to BRepBuilderAPI_Transformed, but likely with visual artefacts. - if (!(is_continuous || force_transformed)) { - return process_sweep_as_pipe(wire, section, result, true); - } else { - throw e; - } - } - builder.MakeSolid(); - result = builder.Shape(); - } - - void sort_edges(const TopoDS_Wire& wire, std::vector& sorted_edges) { - TopTools_IndexedDataMapOfShapeListOfShape map; - TopExp::MapShapesAndAncestors(wire, TopAbs_VERTEX, TopAbs_EDGE, map); - - for (int i = 1; i <= map.Extent(); ++i) { - if (map.FindFromIndex(i).Extent() > 2) { - Logger::Warning("Self-intersecting Directrix"); - } - } - - std::set seen; - - auto num_edges = IfcGeom::Kernel::count(wire, TopAbs_EDGE); - - TopoDS_Vertex v0, v1; - // @todo this creates the ancestor map twice - TopExp::Vertices(wire, v0, v1); - - bool ignore_first_equality_because_closed = v0.IsSame(v1); - - // @todo this probably still does not work on a closed wire consisting of one (circular) edge. - - while ((int) sorted_edges.size() < num_edges && - (!v0.IsSame(v1) || ignore_first_equality_because_closed)) - { - ignore_first_equality_because_closed = false; - if (!map.Contains(v0)) { - throw std::runtime_error("Disconnected vertex"); - } - const TopTools_ListOfShape& es = map.FindFromKey(v0); - TopoDS_Vertex ve0, ve1; - TopTools_ListIteratorOfListOfShape it(es); - bool added = false; - for (; it.More(); it.Next()) { - const TopoDS_Edge& e = TopoDS::Edge(it.Value()); - TopExp::Vertices(e, ve0, ve1, true); - if (ve0.IsSame(v0) && seen.find(&*e.TShape()) == seen.end()) { - sorted_edges.push_back(e); - v0 = ve1; - added = true; - seen.insert(&*e.TShape()); - break; - } - } - if (!added) { - throw std::runtime_error("Disconnected edge"); - } - } - } - - - // #939: a closed loop causes failed triangulation in 7.3 and artefacts - // in 7.4 so we break up a closed wire into two equal parts. - void break_closed(const TopoDS_Wire& wire, std::vector& wires) { - std::vector sorted_edges; - sort_edges(wire, sorted_edges); - - if (sorted_edges.size() == 1) { - wires.push_back(wire); - return; - } - - BRep_Builder B; - - wires.emplace_back(); - B.MakeWire(wires.back()); - - for (size_t i = 0; i < sorted_edges.size(); ++i) { - if (i == sorted_edges.size() / 2) { - wires.emplace_back(); - B.MakeWire(wires.back()); - } - - const auto& e = sorted_edges[i]; - B.Add(wires.back(), e); - } - } - - void segment_adjacent_non_linear(const TopoDS_Wire& wire, std::vector& wires) { - std::vector sorted_edges; - sort_edges(wire, sorted_edges); - - BRep_Builder B; - double u, v; - - wires.emplace_back(); - B.MakeWire(wires.back()); - - for (int i = 0; i < (int) sorted_edges.size() - 1; ++i) { - const auto& e = sorted_edges[i]; - Handle_Geom_Curve crv = BRep_Tool::Curve(e, u, v); - const bool is_linear = crv->DynamicType() == STANDARD_TYPE(Geom_Line); - - const auto& f = sorted_edges[i+1]; - crv = BRep_Tool::Curve(f, u, v); - const bool next_is_linear = crv->DynamicType() == STANDARD_TYPE(Geom_Line); - - B.Add(wires.back(), e); - - if (!is_linear && !next_is_linear) { - wires.emplace_back(); - B.MakeWire(wires.back()); - } - } - - if (!sorted_edges.empty()) { - B.Add(wires.back(), sorted_edges.back()); - } - } - - // @todo make this generic for other sweeps not just swept disk - void process_sweep(const TopoDS_Wire& wire, double radius, TopoDS_Shape& result) { - std::vector wires, wires_tmp; - segment_adjacent_non_linear(wire, wires_tmp); - for (auto& w : wires_tmp) { - break_closed(w, wires); - } - - TopoDS_Compound C; - BRep_Builder B; - if (wires.size() > 1) { - B.MakeCompound(C); - } - - for (auto& w : wires) { - TopoDS_Shape part; - - gp_Ax2 directrix; - if (!wire_to_ax(w, directrix)) { - continue; - } - Handle(Geom_Circle) circle = new Geom_Circle(directrix, radius); - TopoDS_Wire section = BRepBuilderAPI_MakeWire(BRepBuilderAPI_MakeEdge(circle)); - - if (is_single_circular_edge(w)) { - process_sweep_as_revolution(w, section, part); - } else if (is_single_linear_edge(w)) { - process_sweep_as_extrusion(w, section, part); - } else { - process_sweep_as_pipe(w, section, part); - } - if (wires.size() > 1) { - B.Add(C, part); - } else { - result = part; - } - } - - if (wires.size() > 1) { - result = C; - } - - /* - // Eliminate Swept Surfaces? - result = ShapeCustom::SweptToElementary(result); - - // Eliminate Trimmed Surfaces? - ShapeBuild_ReShape sbrs; - BRep_Builder b; - TopExp_Explorer exp(result, TopAbs_FACE); - for (; exp.More(); exp.Next()) { - const TopoDS_Face& f = TopoDS::Face(exp.Current()); - auto S = BRep_Tool::Surface(f); - if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) { - auto RTS = Handle(Geom_RectangularTrimmedSurface)::DownCast(S); - auto B = RTS->BasisSurface(); - TopoDS_Shape newf = f.EmptyCopied(); - // @todo Is it ok to assume no location? - b.MakeFace(TopoDS::Face(newf), B, BRep_Tool::Tolerance(f)); - sbrs.Replace(f, newf); - } - } - result = sbrs.Apply(result); - */ - } -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcSweptDiskSolid* l, TopoDS_Shape& shape) { - TopoDS_Wire wire, section1, section2; - - bool hasInnerRadius = !!l->InnerRadius(); - - if (!convert_wire(l->Directrix(), wire)) { - return false; - } - - // Start- EndParam became optional in IFC4 -#ifdef SCHEMA_IfcSweptDiskSolid_StartParam_IS_OPTIONAL - auto sp = l->StartParam(); - auto ep = l->EndParam(); -#else - boost::optional sp, ep; - sp = l->StartParam(); - ep = l->EndParam(); -#endif - - if (count(wire, TopAbs_EDGE) == 1 && sp && ep) { - TopoDS_Vertex v0, v1; - TopExp::Vertices(wire, v0, v1); - if (v0.IsSame(v1)) { - TopExp_Explorer exp(wire, TopAbs_EDGE); - auto& e = TopoDS::Edge(exp.Current()); - double a, b; - auto crv = BRep_Tool::Curve(e, a, b); - if ((crv->DynamicType() == STANDARD_TYPE(Geom_Circle)) || - (crv->DynamicType() == STANDARD_TYPE(Geom_Ellipse))) - { - BRepBuilderAPI_MakeEdge me(crv, *sp, *ep); - if (me.IsDone()) { - auto e2 = me.Edge(); - BRep_Builder B; - wire.Nullify(); - B.MakeWire(wire); - B.Add(wire, e2); - } - } - } - } - - // NB: Note that StartParam and EndParam param are ignored and the assumption is - // made that the parametric range over which to be swept matches the IfcCurve in - // its entirety. - - process_sweep(wire, l->Radius() * getValue(GV_LENGTH_UNIT), shape); - - if (shape.IsNull()) { - return false; - } - - double r2 = 0.; - - if (hasInnerRadius) { - // Subtraction of pipes with small radii is unstable. - r2 = *l->InnerRadius() * getValue(GV_LENGTH_UNIT); - } - - if (r2 > getValue(GV_PRECISION) * 10.) { - TopoDS_Shape inner; - process_sweep(wire, r2, inner); - - bool is_valid = false; - - // Boolean op on the compound of separately processed sweeps - // is not attempted. - // @todo iterate over compound subshapes and process boolean - // separately. - // @todo don't process as boolean op at all, since we know - // only the start and end faces intersect and we know they - // are co-planar and we know they are circles. - if (shape.ShapeType() != TopAbs_COMPOUND) { - BRepAlgoAPI_Cut brep_cut(shape, inner); - if (brep_cut.IsDone()) { - TopoDS_Shape result = brep_cut; - - ShapeFix_Shape fix(result); - fix.Perform(); - result = fix.Shape(); - - is_valid = BRepCheck_Analyzer(result).IsValid() != 0; - if (is_valid) { - shape = result; - } - } - } - - if (!is_valid) { - Logger::Message(Logger::LOG_WARNING, "Failed to subtract inner radius void for:", l); - } - } - - return true; -} - -#ifdef SCHEMA_HAS_IfcCylindricalSurface - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCylindricalSurface* l, TopoDS_Shape& face) { - gp_Trsf trsf; - IfcGeom::Kernel::convert(l->Position(),trsf); - - // IfcElementarySurface.Position has unit scale factor - face = BRepBuilderAPI_MakeFace(new Geom_CylindricalSurface(gp::XOY(), l->Radius() * getValue(GV_LENGTH_UNIT)), getValue(GV_PRECISION)).Face().Moved(trsf); - return true; -} - -#endif - -#ifdef SCHEMA_HAS_IfcSphericalSurface - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcSphericalSurface* l, TopoDS_Shape& face) { - gp_Trsf trsf; - IfcGeom::Kernel::convert(l->Position(), trsf); - - // IfcElementarySurface.Position has unit scale factor - face = BRepBuilderAPI_MakeFace(new Geom_SphericalSurface(gp::XOY(), l->Radius() * getValue(GV_LENGTH_UNIT)), getValue(GV_PRECISION)).Face().Moved(trsf); - return true; -} - -#endif - -#ifdef SCHEMA_HAS_IfcToroidalSurface - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcToroidalSurface* l, TopoDS_Shape& face) { - gp_Trsf trsf; - IfcGeom::Kernel::convert(l->Position(), trsf); - - // IfcElementarySurface.Position has unit scale factor - face = BRepBuilderAPI_MakeFace(new Geom_ToroidalSurface(gp::XOY(), l->MajorRadius() * getValue(GV_LENGTH_UNIT), l->MinorRadius() * getValue(GV_LENGTH_UNIT)), getValue(GV_PRECISION)).Face().Moved(trsf); - return true; -} - -#endif - -#ifdef SCHEMA_HAS_IfcAdvancedBrep - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcAdvancedBrep* l, TopoDS_Shape& shape) { - return convert(l->Outer(), shape); -} - -#endif - -#ifdef SCHEMA_HAS_IfcTriangulatedFaceSet - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcTriangulatedFaceSet* l, TopoDS_Shape& shape) { - IfcSchema::IfcCartesianPointList3D* point_list = l->Coordinates(); - auto coord_list = point_list->CoordList(); - std::vector> indices = l->CoordIndex(); - - faceset_helper< - std::vector, - std::vector - > helper(this, coord_list, indices, l->Closed().get_value_or(false)); - - TopTools_ListOfShape faces; - - for (auto it = indices.begin(); it != indices.end(); ++it) { - TopoDS_Wire w; - if (helper.wire(*it, w)) { - BRepBuilderAPI_MakeFace mf(w); - if (mf.IsDone()) { - faces.Append(mf.Face()); - } - } - } - - if (faces.Extent() > getValue(GV_MAX_FACES_TO_ORIENT) || !create_solid_from_faces(faces, shape)) { - TopoDS_Compound compound; - BRep_Builder builder; - builder.MakeCompound(compound); - - TopTools_ListIteratorOfListOfShape face_iterator; - for (face_iterator.Initialize(faces); face_iterator.More(); face_iterator.Next()) { - builder.Add(compound, face_iterator.Value()); - } - shape = compound; - } - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcPolygonalFaceSet* pfs, TopoDS_Shape& shape) { - IfcSchema::IfcCartesianPointList3D* point_list = pfs->Coordinates(); - auto coord_list = point_list->CoordList(); - auto polygonal_faces = pfs->Faces(); - - std::vector> indices; - indices.reserve(polygonal_faces->size() * 2); - - std::vector> loop_grouping; - loop_grouping.reserve(polygonal_faces->size()); - - for (auto& f : *polygonal_faces) { - loop_grouping.emplace_back(); - loop_grouping.back().push_back(indices.size()); - indices.push_back(f->CoordIndex()); - if (f->as()) { - auto inner_coordinates = f->as()->InnerCoordIndices(); - for (auto& x : inner_coordinates) { - loop_grouping.back().push_back(indices.size()); - indices.push_back(x); - } - } - } - - faceset_helper< - std::vector, - std::vector - > helper(this, coord_list, indices, pfs->Closed().get_value_or(false)); - - TopTools_ListOfShape faces; - - for (auto& f : loop_grouping) { - bool not_planar = false; - - TopoDS_Wire w; - if (!helper.wire(indices[f[0]], w)) { - continue; - } - - TopoDS_Face face; - std::vector ws = { w }; - - // @todo triangulate - BRepBuilderAPI_MakeFace mf(w); - if (mf.Error() == BRepBuilderAPI_NotPlanar) { - not_planar = true; - } else if (mf.IsDone()) { - face = mf.Face(); - } else { - // todo log - continue; - } - - if (f.size() > 1) { - - if (not_planar) { - for (auto it = f.begin() + 1; it != f.end(); ++it) { - TopoDS_Wire w2; - if (helper.wire(indices[*it], w2)) { - ws.push_back(w2); - } - } - } else { - BRepBuilderAPI_MakeFace mf2(face); - for (auto it = f.begin() + 1; it != f.end(); ++it) { - TopoDS_Wire w2; - if (helper.wire(indices[*it], w2)) { - mf2.Add(w2); - ws.push_back(w2); - } - - } - - if (mf2.Error() == BRepBuilderAPI_NotPlanar) { - not_planar = true; - } else if (mf2.IsDone()) { - face = mf2.Face(); - } - } - - } - - if (not_planar) { - TopTools_ListOfShape fs; - if (triangulate_wire(ws, fs)) { - Logger::Warning("Triangulated face boundary:", pfs); - TopTools_ListIteratorOfListOfShape it(fs); - for (; it.More(); it.Next()) { - const TopoDS_Face& tri = TopoDS::Face(it.Value()); - if (face_area(tri) > getValue(GV_MINIMAL_FACE_AREA)) { - faces.Append(tri); - } - } - } - } else { - faces.Append(face); - } - } - - if (faces.Extent() > getValue(GV_MAX_FACES_TO_ORIENT) || !create_solid_from_faces(faces, shape)) { - TopoDS_Compound compound; - BRep_Builder builder; - builder.MakeCompound(compound); - - TopTools_ListIteratorOfListOfShape face_iterator; - for (face_iterator.Initialize(faces); face_iterator.More(); face_iterator.Next()) { - builder.Add(compound, face_iterator.Value()); - } - shape = compound; - } - - return true; -} - -#endif diff --git a/src/ifcgeom/IfcGeomWires.cpp b/src/ifcgeom/IfcGeomWires.cpp deleted file mode 100644 index c1bb274c1b..0000000000 --- a/src/ifcgeom/IfcGeomWires.cpp +++ /dev/null @@ -1,1086 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Implementations of the various conversion functions defined in mapping.i * - * * - ********************************************************************************/ - -#define _USE_MATH_DEFINES -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#if OCC_VERSION_HEX < 0x70600 -#include -#endif - -#include - -#include "../ifcgeom/IfcGeom.h" - -#define Kernel MAKE_TYPE_NAME(Kernel) - -namespace { - // Returns the first edge of a wire - TopoDS_Edge first_edge(const TopoDS_Wire& w) { - TopoDS_Vertex v1, v2; - TopExp::Vertices(w, v1, v2); - TopTools_IndexedDataMapOfShapeListOfShape wm; - TopExp::MapShapesAndAncestors(w, TopAbs_VERTEX, TopAbs_EDGE, wm); - return TopoDS::Edge(wm.FindFromKey(v1).First()); - } - - // Returns new wire with the edge replaced by a linear edge with the vertex v moved to p - TopoDS_Wire adjust(const TopoDS_Wire& w, const TopoDS_Vertex& v, const gp_Pnt& p) { - TopTools_IndexedDataMapOfShapeListOfShape map; - TopExp::MapShapesAndAncestors(w, TopAbs_VERTEX, TopAbs_EDGE, map); - - bool all_linear = true, single_circle = false, first = true; - - const TopTools_ListOfShape& edges = map.FindFromKey(v); - TopTools_ListIteratorOfListOfShape it(edges); - for (; it.More(); it.Next()) { - const TopoDS_Edge& e = TopoDS::Edge(it.Value()); - double _, __; - Handle(Geom_Curve) crv = BRep_Tool::Curve(e, _, __); - const bool is_line = crv->DynamicType() == STANDARD_TYPE(Geom_Line); - const bool is_circle = crv->DynamicType() == STANDARD_TYPE(Geom_Circle); - all_linear = all_linear && is_line; - single_circle = first && is_circle; - } - - if (all_linear) { - BRep_Builder b; - TopoDS_Vertex v2; - b.MakeVertex(v2, p, BRep_Tool::Tolerance(v)); - - ShapeBuild_ReShape reshape; - reshape.Replace(v.Oriented(TopAbs_FORWARD), v2); - - return TopoDS::Wire(reshape.Apply(w)); - } else if (single_circle) { - TopoDS_Vertex v1, v2; - TopExp::Vertices(w, v1, v2); - - gp_Pnt p1, p2, p3; - p1 = v.IsEqual(v1) ? p : BRep_Tool::Pnt(v1); - p3 = v.IsEqual(v2) ? p : BRep_Tool::Pnt(v2); - - double a, b; - Handle(Geom_Curve) crv = BRep_Tool::Curve(TopoDS::Edge(edges.First()), a, b); - crv->D0((a + b) / 2., p2); - - GC_MakeCircle mc(p1, p2, p3); - if (!mc.IsDone()) { - throw IfcGeom::geometry_exception("Failed to adjust circle"); - } - - TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(mc.Value(), p1, p3).Edge(); - BRepBuilderAPI_MakeWire builder; - builder.Add(edge); - return builder.Wire(); - } else { - throw IfcGeom::geometry_exception("Unexpected wire to adjust"); - } - } - - // A wrapper around BRepBuilderAPI_MakeWire that makes sure segments are connected either by moving end points or by adding intermediate segments - class wire_builder { - private: - BRepBuilderAPI_MakeWire mw_; - double p_; - bool override_next_; - gp_Pnt next_override_; - const IfcUtil::IfcBaseClass* inst_; - - public: - wire_builder(double p, const IfcUtil::IfcBaseClass* inst = 0) : p_(p), override_next_(false), inst_(inst) {} - - void operator()(const TopoDS_Shape& a) { - const TopoDS_Wire& w = TopoDS::Wire(a); - if (override_next_) { - override_next_ = false; - TopoDS_Edge e = first_edge(w); - mw_.Add(adjust(w, TopExp::FirstVertex(e, true), next_override_)); - } else { - mw_.Add(w); - } - } - - void operator()(const TopoDS_Shape& a, const TopoDS_Shape& b, bool last) { - TopoDS_Wire w1 = TopoDS::Wire(a); - const TopoDS_Wire& w2 = TopoDS::Wire(b); - - if (override_next_) { - override_next_ = false; - TopoDS_Edge e = first_edge(w1); - w1 = adjust(w1, TopExp::FirstVertex(e, true), next_override_); - } - - TopoDS_Vertex w11, w12, w21, w22; - TopExp::Vertices(w1, w11, w12); - TopExp::Vertices(w2, w21, w22); - - gp_Pnt p1 = BRep_Tool::Pnt(w12); - gp_Pnt p2 = BRep_Tool::Pnt(w21); - - double dist = p1.Distance(p2); - - // Distance is within tolerance, this is fine - if (dist < p_) { - mw_.Add(w1); - goto check; - } - - // Distance is too large for attempting to move end points, add intermediate edge - if (dist > 1000. * p_) { - mw_.Add(w1); - mw_.Add(BRepBuilderAPI_MakeEdge(p1, p2)); - Logger::Warning("Added additional segment to close gap with length " + boost::lexical_cast(dist) + " to:", inst_); - goto check; - } - - { - TopTools_IndexedDataMapOfShapeListOfShape wmap1, wmap2; - - // Find edges connected to end- and begin vertex - TopExp::MapShapesAndAncestors(w1, TopAbs_VERTEX, TopAbs_EDGE, wmap1); - TopExp::MapShapesAndAncestors(w2, TopAbs_VERTEX, TopAbs_EDGE, wmap2); - - const TopTools_ListOfShape& last_edges = wmap1.FindFromKey(w12); - const TopTools_ListOfShape& first_edges = wmap2.FindFromKey(w21); - - double _, __; - if (last_edges.Extent() == 1 && first_edges.Extent() == 1) { - Handle(Geom_Curve) c1 = BRep_Tool::Curve(TopoDS::Edge(last_edges.First()), _, __); - Handle(Geom_Curve) c2 = BRep_Tool::Curve(TopoDS::Edge(first_edges.First()), _, __); - - const bool is_line1 = c1->DynamicType() == STANDARD_TYPE(Geom_Line); - const bool is_line2 = c2->DynamicType() == STANDARD_TYPE(Geom_Line); - - const bool is_circle1 = c1->DynamicType() == STANDARD_TYPE(Geom_Circle); - const bool is_circle2 = c2->DynamicType() == STANDARD_TYPE(Geom_Circle); - - // Preferably adjust the segment that is linear - if (is_line1 || (is_circle1 && !is_line2)) { - mw_.Add(adjust(w1, w12, p2)); - Logger::Notice("Adjusted edge end-point with distance " + boost::lexical_cast(dist) + " on:", inst_); - } else if ((is_line2 || is_circle2) && !last) { - mw_.Add(w1); - override_next_ = true; - next_override_ = p1; - Logger::Notice("Adjusted edge end-point with distance " + boost::lexical_cast(dist) + " on:", inst_); - } else { - // In all other cases an edge is added - mw_.Add(w1); - mw_.Add(BRepBuilderAPI_MakeEdge(p1, p2)); - Logger::Warning("Added additional segment to close gap with length " + boost::lexical_cast(dist) + " to:", inst_); - } - } else { - Logger::Error("Internal error, inconsistent wire segments", inst_); - mw_.Add(w1); - } - } - - check: - if (mw_.Error() == BRepBuilderAPI_NonManifoldWire) { - Logger::Error("Non-manifold curve segments:", inst_); - } else if (mw_.Error() == BRepBuilderAPI_DisconnectedWire) { - Logger::Error("Failed to join curve segments:", inst_); - } - } - - const TopoDS_Wire& wire() { return mw_.Wire(); } - }; - - template - void shape_pair_enumerate(TopTools_ListIteratorOfListOfShape& it, Fn& fn, bool closed) { - bool is_first = true; - TopoDS_Shape first, previous, current; - for (; it.More(); it.Next(), is_first = false) { - current = it.Value(); - if (is_first) { - first = current; - } else { - fn(previous, current, false); - } - previous = current; - } - if (closed) { - fn(current, first, true); - } else { - fn(current); - } - } -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcCompositeCurve* l, TopoDS_Wire& wire) { - if ( getValue(GV_PLANEANGLE_UNIT)<0 ) { - Logger::Message(Logger::LOG_WARNING,"Creating a composite curve without unit information:",l); - - // Temporarily pretend we do have unit information - setValue(GV_PLANEANGLE_UNIT,1.0); - - bool succes_radians = false; - bool succes_degrees = false; - bool use_radians = false; - bool use_degrees = false; - - // First try radians - TopoDS_Wire wire_radians, wire_degrees; - try { - succes_radians = IfcGeom::Kernel::convert(l,wire_radians); - } catch (const std::exception& e) { - Logger::Notice(e); - } catch (const Standard_Failure& e) { - if (e.GetMessageString() && strlen(e.GetMessageString())) { - Logger::Notice(e.GetMessageString()); - } else { - Logger::Notice("Unknown error using radians"); - } - } catch (...) { - Logger::Notice("Unknown error using radians"); - } - - // Now try degrees - setValue(GV_PLANEANGLE_UNIT,0.0174532925199433); - try { - succes_degrees = IfcGeom::Kernel::convert(l,wire_degrees); - } catch (const std::exception& e) { - Logger::Notice(e); - } catch (const Standard_Failure& e) { - if (e.GetMessageString() && strlen(e.GetMessageString())) { - Logger::Notice(e.GetMessageString()); - } else { - Logger::Notice("Unknown error using degrees"); - } - } catch (...) { - Logger::Notice("Unknown error using degrees"); - } - - // Restore to unknown unit state - setValue(GV_PLANEANGLE_UNIT,-1.0); - - if ( succes_degrees && ! succes_radians ) { - use_degrees = true; - } else if ( succes_radians && ! succes_degrees ) { - use_radians = true; - } else if ( succes_radians && succes_degrees ) { - if ( wire_degrees.Closed() && ! wire_radians.Closed() ) { - use_degrees = true; - } else if ( wire_radians.Closed() && ! wire_degrees.Closed() ) { - use_radians = true; - } else { - // No heuristic left to prefer the one over the other, - // apparently both variants are equally successful. - // The curve might be composed of only straight segments. - // Let's go with the wire created using radians as that - // at least is a SI unit. - use_radians = true; - } - } - - if ( use_radians ) { - Logger::Message(Logger::LOG_NOTICE,"Used radians to create composite curve"); - wire = wire_radians; - } else if ( use_degrees ) { - Logger::Message(Logger::LOG_NOTICE,"Used degrees to create composite curve"); - wire = wire_degrees; - } - - return use_radians || use_degrees; - } - -#ifdef SCHEMA_HAS_IfcSegment - // 4x3 - IfcSchema::IfcSegment::list::ptr segments = l->Segments(); -#else - IfcSchema::IfcCompositeCurveSegment::list::ptr segments = l->Segments(); -#endif - - TopTools_ListOfShape converted_segments; - - for (auto it = segments->begin(); it != segments->end(); ++it) { - - if (!(*it)->declaration().is(IfcSchema::IfcCompositeCurveSegment::Class())) { - Logger::Error("Not implemented", *it); - return false; - } - - IfcSchema::IfcCurve* curve = ((IfcSchema::IfcCompositeCurveSegment*)(*it))->ParentCurve(); - - // The type of ParentCurve is IfcCurve, but the documentation says: - // ParentCurve: The *bounded curve* which defines the geometry of the segment. - // At least let's exclude IfcLine as an infinite linear segment - // definitely does not make any sense. - TopoDS_Wire segment; - - if (curve->as()) { - Logger::Notice("Infinite IfcLine used as ParentCurve of segment, treating as a segment", *it); - Handle_Geom_Curve handle; - convert_curve(curve, handle); - double u0 = 0.0; - double u1 = curve->as()->Dir()->Magnitude() * getValue(GV_LENGTH_UNIT); - if (u1 < getValue(GV_PRECISION)) { - Logger::Warning("Segment length below tolerance", *it); - } - BRepBuilderAPI_MakeEdge me(handle, u0, u1); - if (me.IsDone()) { - BRep_Builder B; - B.MakeWire(segment); - B.Add(segment, me.Edge()); - } - } else if (!convert_wire(curve, segment)) { - const bool failed_on_purpose = curve->as() && !segment.IsNull(); - Logger::Message(failed_on_purpose ? Logger::LOG_WARNING : Logger::LOG_ERROR, "Failed to convert curve:", curve); - continue; - } - - if (!((IfcSchema::IfcCompositeCurveSegment*)(*it))->SameSense()) { - segment.Reverse(); - } - - ShapeFix_ShapeTolerance FTol; - FTol.SetTolerance(segment, getValue(GV_PRECISION), TopAbs_WIRE); - - converted_segments.Append(segment); - - } - - if (converted_segments.Extent() == 0) { - Logger::Message(Logger::LOG_ERROR, "No segment succesfully converted:", l); - return false; - } - - BRepBuilderAPI_MakeWire w; - TopoDS_Vertex wire_first_vertex, wire_last_vertex, edge_first_vertex, edge_last_vertex; - - TopTools_ListIteratorOfListOfShape it(converted_segments); - - aggregate_of_instance::ptr profile = l->data().getInverse(&IfcSchema::IfcProfileDef::Class(), -1); - const bool force_close = profile && profile->size() > 0; - - wire_builder bld(getValue(GV_PRECISION), l); - shape_pair_enumerate(it, bld, force_close); - wire = bld.wire(); - - return true; -} - -namespace { - - /* - Below is code to deduce the formula below in SageMath - - | R, b = var('R b') - | - | Bxy = R * cos(b), R * sin(b) - | Cxy = R * cos(b/2), R * sin(b/2) - | - | def dot(v, w): - | return v[0] * w[0] + v[1] * w[1] - | - | def norm(v): - | l = sqrt(v[0]^2 + v[1]^2) - | return v[0] / l, v[1] / l - | - | (R - R*dot(norm(Cxy), norm(Bxy))).full_simplify() - */ - - double deflection_for_approximating_circle(double radius, double param) { - return -radius * std::cos(1. / 2. * param) * std::cos(param) - radius * std::sin(1. / 2. * param) * std::sin(param) + radius; - } -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcTrimmedCurve* l, TopoDS_Wire& wire) { - IfcSchema::IfcCurve* basis_curve = l->BasisCurve(); - bool isConic = basis_curve->declaration().is(IfcSchema::IfcConic::Class()); - double parameterFactor = isConic ? getValue(GV_PLANEANGLE_UNIT) : getValue(GV_LENGTH_UNIT); - - Handle(Geom_Curve) curve; - if (shape_type(basis_curve) == ST_CURVE) { - if (!convert_curve(basis_curve, curve)) return false; - } else if (shape_type(basis_curve) == ST_WIRE) { - Logger::Warning("Approximating BasisCurve due to possible discontinuities", l); - TopoDS_Wire w; - if (!convert_wire(basis_curve, w)) return false; -#if OCC_VERSION_HEX < 0x70600 - BRepAdaptor_CompCurve cc(w, true); - Handle(Adaptor3d_HCurve) hcc = Handle(Adaptor3d_HCurve)(new BRepAdaptor_HCompCurve(cc)); -#else - auto hcc = new BRepAdaptor_CompCurve(w, true); -#endif - // @todo, arbitrary numbers here, note they cannot be too high as contiguous memory is allocated based on them. - Approx_Curve3d approx(hcc, getValue(GV_PRECISION), GeomAbs_C0, 10, 10); - curve = approx.Curve(); - } else { - Logger::Error("Unknown BasisCurve", l); - return false; - } - - bool trim_cartesian = l->MasterRepresentation() != IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER; - aggregate_of_instance::ptr trims1 = l->Trim1(); - aggregate_of_instance::ptr trims2 = l->Trim2(); - - unsigned sense_agreement = l->SenseAgreement() ? 0 : 1; - double flts[2]; - gp_Pnt pnts[2]; - bool has_flts[2] = {false,false}; - bool has_pnts[2] = {false,false}; - - TopoDS_Edge e; - - for ( aggregate_of_instance::it it = trims1->begin(); it != trims1->end(); it ++ ) { - IfcUtil::IfcBaseClass* i = *it; - if ( i->declaration().is(IfcSchema::IfcCartesianPoint::Class()) ) { - IfcGeom::Kernel::convert((IfcSchema::IfcCartesianPoint*)i, pnts[sense_agreement] ); - has_pnts[sense_agreement] = true; - } else if ( i->declaration().is(IfcSchema::IfcParameterValue::Class()) ) { - const double value = *((IfcSchema::IfcParameterValue*)i); - flts[sense_agreement] = value * parameterFactor; - has_flts[sense_agreement] = true; - } - } - - for ( aggregate_of_instance::it it = trims2->begin(); it != trims2->end(); it ++ ) { - IfcUtil::IfcBaseClass* i = *it; - if ( i->declaration().is(IfcSchema::IfcCartesianPoint::Class()) ) { - IfcGeom::Kernel::convert((IfcSchema::IfcCartesianPoint*)i, pnts[1-sense_agreement] ); - has_pnts[1-sense_agreement] = true; - } else if ( i->declaration().is(IfcSchema::IfcParameterValue::Class()) ) { - const double value = *((IfcSchema::IfcParameterValue*)i); - flts[1-sense_agreement] = value * parameterFactor; - has_flts[1-sense_agreement] = true; - } - } - - trim_cartesian &= has_pnts[0] && has_pnts[1]; - bool trim_cartesian_failed = !trim_cartesian; - if ( trim_cartesian ) { - if ( pnts[0].Distance(pnts[1]) < 2 * getValue(GV_PRECISION) ) { - Logger::Message(Logger::LOG_WARNING,"Skipping segment with length below tolerance level:",l); - return false; - } - ShapeFix_ShapeTolerance FTol; - TopoDS_Vertex v1 = BRepBuilderAPI_MakeVertex(pnts[0]); - TopoDS_Vertex v2 = BRepBuilderAPI_MakeVertex(pnts[1]); - FTol.SetTolerance(v1, getValue(GV_PRECISION), TopAbs_VERTEX); - FTol.SetTolerance(v2, getValue(GV_PRECISION), TopAbs_VERTEX); - BRepBuilderAPI_MakeEdge me (curve,v1,v2); - if (!me.IsDone()) { - BRepBuilderAPI_EdgeError err = me.Error(); - if ( err == BRepBuilderAPI_PointProjectionFailed ) { - Logger::Message(Logger::LOG_WARNING,"Point projection failed for:",l); - trim_cartesian_failed = true; - } - } else { - e = me.Edge(); - // BRepBuilderAPI_MakeEdge swaps v1 and v2 if the parameter value of v2 is - // smaller than that of v1. In that case the edge has to be reversed so that - // the vertex order is consistent with Trim1 and Trim2. Otherwise the - // IfcOpenShell wire builder will create intermediate edges automatically. - // The alternative would be to reverse the underlying curve instead. - if (!TopExp::FirstVertex(e, true).IsSame(v1)) { - e.Reverse(); - } - } - } - - if ( (!trim_cartesian || trim_cartesian_failed) && (has_flts[0] && has_flts[1]) ) { - // The Geom_Line is constructed from a gp_Pnt and gp_Dir, whereas the IfcLine - // is defined by an IfcCartesianPoint and an IfcVector with Magnitude. Because - // the vector is normalised when passed to Geom_Line constructor the magnitude - // needs to be factored in with the IfcParameterValue here. - if ( basis_curve->declaration().is(IfcSchema::IfcLine::Class()) ) { - IfcSchema::IfcLine* line = static_cast(basis_curve); - const double magnitude = line->Dir()->Magnitude(); - flts[0] *= magnitude; flts[1] *= magnitude; - } - if ( basis_curve->declaration().is(IfcSchema::IfcEllipse::Class()) ) { - IfcSchema::IfcEllipse* ellipse = static_cast(basis_curve); - double x = ellipse->SemiAxis1() * getValue(GV_LENGTH_UNIT); - double y = ellipse->SemiAxis2() * getValue(GV_LENGTH_UNIT); - const bool rotated = y > x; - if (rotated) { - flts[0] -= M_PI / 2.; - flts[1] -= M_PI / 2.; - } - } - - double radius = 1.0; - if (curve->DynamicType() == STANDARD_TYPE(Geom_Circle)) { - auto circle_curve = Handle_Geom_Circle::DownCast(curve); - radius = circle_curve->Radius(); - } else if (curve->DynamicType() == STANDARD_TYPE(Geom_Ellipse)) { - auto circle_curve = Handle_Geom_Ellipse::DownCast(curve); - radius = (circle_curve->MajorRadius() + circle_curve->MinorRadius()) / 2.; - } - - // Fix from @sanderboer to compare using model tolerance, see #744 - // Made dependent on radius, see #928 - - // A good critereon for determining whether to take full curve - // or trimmed segment would be whether there are other curve segments or this - // is the only one. - boost::optional num_segments; - auto segment = l->data().getInverse(&IfcSchema::IfcCompositeCurveSegment::Class(), -1); - if (segment->size() == 1) { - auto comp = (*segment->begin())->data().getInverse(&IfcSchema::IfcCompositeCurve::Class(), -1); - if (comp->size() == 1) { - num_segments = (*comp->begin())->as()->Segments()->size(); - } - } - - // @todo is 100. not too much? Check with the original issue. - const double precision_markup = getValue(IfcGeom::Kernel::GV_PRECISION_FACTOR) == 1. ? 1. : 100.; - - if (isConic && ALMOST_THE_SAME(fmod(flts[1]-flts[0],M_PI*2.), 0., precision_markup * getValue(GV_PRECISION) / (2 * M_PI * radius))) { - e = BRepBuilderAPI_MakeEdge(curve).Edge(); - } else { - BRepBuilderAPI_MakeEdge me (curve,flts[0],flts[1]); - e = me.Edge(); - } - - if (num_segments && *num_segments > 1) { - TopoDS_Vertex v0, v1; - TopExp::Vertices(e, v0, v1); - if (v0.IsSame(v1)) { - Logger::Warning("Skipping degenerate segment", l); - return false; - } - } - - } else if ( trim_cartesian_failed && (has_pnts[0] && has_pnts[1]) ) { - e = BRepBuilderAPI_MakeEdge(pnts[0], pnts[1]).Edge(); - } - - if (e.IsNull()) { - return false; - } - - if (isConic) { - // Tiny circle segnments can cause issues later on, for example - // when the comp curve is used as the sweeping directrix. - double a, b; - Handle(Geom_Curve) crv = BRep_Tool::Curve(e, a, b); - double radius = -1.; - if (crv->DynamicType() == STANDARD_TYPE(Geom_Circle)) { - radius = Handle(Geom_Circle)::DownCast(crv)->Radius(); - } else if (crv->DynamicType() == STANDARD_TYPE(Geom_Ellipse)) { - // The formula in deflection_for_approximating_circle() is for circles, but probably good enough - radius = Handle(Geom_Ellipse)::DownCast(crv)->MajorRadius(); - } - if (radius > 0. && deflection_for_approximating_circle(radius, b - a) < 100 * getValue(GV_PRECISION) && std::abs(b-a) < M_PI/4.) { - TopoDS_Vertex v0, v1; - TopExp::Vertices(e, v0, v1); - e = TopoDS::Edge(BRepBuilderAPI_MakeEdge(v0, v1).Edge().Oriented(e.Orientation())); - Logger::Warning("Subsituted edge with linear approximation", l); - } - } - - BRepBuilderAPI_MakeWire w; - w.Add(e); - - if (w.IsDone()) { - wire = w.Wire(); - - // When SenseAgreement == .F. the vertices above have been reversed to - // comply with the direction of conical curves. The ordering of the - // vertices then still needs to be reversed in order to have begin and - // end vertex consistent with IFC. - if (sense_agreement != 0) { // .F. - wire.Reverse(); - } - - return true; - } else { - return false; - } -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcPolyline* l, TopoDS_Wire& result) { - IfcSchema::IfcCartesianPoint::list::ptr points = l->Points(); - - // Parse and store the points in a sequence - TColgp_SequenceOfPnt polygon; - for(IfcSchema::IfcCartesianPoint::list::it it = points->begin(); it != points->end(); ++ it) { - gp_Pnt pnt; - IfcGeom::Kernel::convert(*it, pnt); - polygon.Append(pnt); - } - - // @todo the strict tolerance should also govern these arbitrary precision increases - const double eps = getValue(GV_PRECISION) * 10; - const bool closed_by_proximity = polygon.Length() >= 3 && polygon.First().Distance(polygon.Last()) < eps; - if (closed_by_proximity) { - // tfk: note 1-based - polygon.Remove(polygon.Length()); - } - - // Remove points that are too close to one another - remove_duplicate_points_from_loop(polygon, closed_by_proximity, eps); - - if (polygon.Length() < 2) { - // We somehow need to signal we fail this curve on purpose not to trigger an error. - BRep_Builder B; - B.MakeWire(result); - return false; - } - - BRepBuilderAPI_MakePolygon w; - for (int i = 1; i <= polygon.Length(); ++i) { - w.Add(polygon.Value(i)); - } - - if (closed_by_proximity) { - w.Close(); - } - - result = w.Wire(); - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcPolyLoop* l, TopoDS_Wire& result) { - IfcSchema::IfcCartesianPoint::list::ptr points = l->Polygon(); - - // Parse and store the points in a sequence - TColgp_SequenceOfPnt polygon; - for(IfcSchema::IfcCartesianPoint::list::it it = points->begin(); it != points->end(); ++ it) { - gp_Pnt pnt; - IfcGeom::Kernel::convert(*it, pnt); - polygon.Append(pnt); - } - - // A loop should consist of at least three vertices - int original_count = polygon.Length(); - if (original_count < 3) { - Logger::Message(Logger::LOG_ERROR, "Not enough edges for:", l); - return false; - } - - // Remove points that are too close to one another - const double eps = getValue(GV_PRECISION) * 10; - remove_duplicate_points_from_loop(polygon, true, eps); - - int count = polygon.Length(); - if (original_count - count != 0) { - std::stringstream ss; ss << (original_count - count) << " edges removed for:"; - Logger::Message(Logger::LOG_WARNING, ss.str(), l); - } - - if (count < 3) { - Logger::Message(Logger::LOG_ERROR, "Not enough edges for:", l); - return false; - } - - BRepBuilderAPI_MakePolygon w; - for (int i = 1; i <= polygon.Length(); ++i) { - w.Add(polygon.Value(i)); - } - w.Close(); - - result = w.Wire(); - - TopTools_ListOfShape results; - if (wire_intersections(result, results)) { - Logger::Error("Self-intersections with " + boost::lexical_cast(results.Extent()) + " cycles detected", l); - select_largest(results, result); - } - - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcArbitraryOpenProfileDef* l, TopoDS_Wire& result) { - return convert_wire(l->Curve(), result); -} - -#include - -namespace { - bool create_edge_over_curve_with_log_messages(const Handle_Geom_Curve& crv, const double eps, const gp_Pnt& p1, const gp_Pnt& p2, TopoDS_Edge& result) { - if (crv->IsClosed() && p1.Distance(p2) <= eps) { - BRepBuilderAPI_MakeEdge me(crv); - if (me.IsDone()) { - result = me.Edge(); - return true; - } else { - return false; - } - } - - BRep_Builder builder; - TopoDS_Vertex v1, v2; - /// @todo project first and emit warnings accordingly - builder.MakeVertex(v1, p1, eps); - builder.MakeVertex(v2, p2, eps); - - BRepBuilderAPI_MakeEdge me(crv, v1, v2); - if (!me.IsDone()) { - const double eps2 = eps * eps; - if (me.Error() == BRepBuilderAPI_PointProjectionFailed) { - GeomAdaptor_Curve GAC(crv); - const gp_Pnt* ps[2] = { &p1, &p2 }; - for (int i = 0; i < 2; ++i) { - Extrema_ExtPC extrema(*ps[i], GAC); - if (extrema.IsDone()) { - int n = extrema.NbExt(); - double dmin = std::numeric_limits::infinity(); - for (int j = 1; j <= n; j++) { - const double d = extrema.SquareDistance(j); - if (d < dmin) { - dmin = d; - } - } - if (dmin == std::numeric_limits::infinity()) { - Logger::Error("No extrema for point"); - } else if (dmin > eps2) { - Logger::Error("Distance of " + boost::lexical_cast(std::sqrt(dmin)) + " exceeds tolerance"); - } - } else { - Logger::Error("Failed to calculate extrema for point"); - } - } - } - return false; - } - result = me.Edge(); - return true; - } -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcEdgeCurve* l, TopoDS_Wire& result) { - IfcSchema::IfcPoint* pnt1 = ((IfcSchema::IfcVertexPoint*) l->EdgeStart())->VertexGeometry(); - IfcSchema::IfcPoint* pnt2 = ((IfcSchema::IfcVertexPoint*) l->EdgeEnd())->VertexGeometry(); - if (!pnt1->declaration().is(IfcSchema::IfcCartesianPoint::Class()) || !pnt2->declaration().is(IfcSchema::IfcCartesianPoint::Class())) { - Logger::Message(Logger::LOG_ERROR, "Only IfcCartesianPoints are supported for VertexGeometry", l); - return false; - } - - gp_Pnt p1, p2; - if (!IfcGeom::Kernel::convert(((IfcSchema::IfcCartesianPoint*)pnt1), p1) || - !IfcGeom::Kernel::convert(((IfcSchema::IfcCartesianPoint*)pnt2), p2)) - { - return false; - } - - BRepBuilderAPI_MakeWire mw; - Handle_Geom_Curve crv; - - // The lack of a clear separation between topological and geometrical entities - // is starting to get problematic. If the underlying curve is bounded it is - // assumed that a topological wire can be crafted from it. After which an - // attempt is made to reconstruct it from the individual curves and the vertices - // of the IfcEdgeCurve. - const bool is_bounded = l->EdgeGeometry()->declaration().is(IfcSchema::IfcBoundedCurve::Class()); - - if (!is_bounded && convert_curve(l->EdgeGeometry(), crv)) { - TopoDS_Edge e; - if (create_edge_over_curve_with_log_messages(crv, getValue(GV_PRECISION), p1, p2, e)) { - mw.Add(e); - result = mw; - return true; - } else { - return false; - } - } else if (is_bounded && convert_wire(l->EdgeGeometry(), result)) { - if (!l->SameSense()) { - result.Reverse(); - } - - bool first = true; - TopExp_Explorer exp(result, TopAbs_EDGE); - - while (exp.More()) { - const TopoDS_Edge& ed = TopoDS::Edge(exp.Current()); - Standard_Real u1, u2; - Handle(Geom_Curve) ecrv = BRep_Tool::Curve(ed, u1, u2); - exp.Next(); - const bool last = !exp.More(); - - gp_Pnt a, b; - - if (first && last) { - a = p1; - b = p2; - } else if (first) { - a = p1; - ecrv->D0(u2, b); - } else if (last) { - ecrv->D0(u1, a); - b = p2; - } else { - BRepBuilderAPI_MakeEdge me(ecrv, u1, u2); - if (!me.IsDone()) { - return false; - } - mw.Add(me.Edge()); - first = false; - continue; - } - - TopoDS_Edge e; - if (create_edge_over_curve_with_log_messages(ecrv, getValue(GV_PRECISION), a, b, e)) { - mw.Add(e); - } else { - return false; - } - - first = false; - } - result = mw; - return true; - } else { - return false; - } -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcEdgeLoop* l, TopoDS_Wire& result) { - IfcSchema::IfcOrientedEdge::list::ptr li = l->EdgeList(); - BRepBuilderAPI_MakeWire mw; - for (IfcSchema::IfcOrientedEdge::list::it it = li->begin(); it != li->end(); ++it) { - TopoDS_Wire w; - if (convert_wire(*it, w)) { - mw.Add(TopoDS::Edge(TopoDS_Iterator(w).Value())); - } - } - if (!mw.IsDone()) { - return false; - } - result = mw.Wire(); - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcEdge* l, TopoDS_Wire& result) { - if (!l->EdgeStart()->declaration().is(IfcSchema::IfcVertexPoint::Class()) || !l->EdgeEnd()->declaration().is(IfcSchema::IfcVertexPoint::Class())) { - Logger::Message(Logger::LOG_ERROR, "Only IfcVertexPoints are supported for EdgeStart and -End", l); - return false; - } - - IfcSchema::IfcPoint* pnt1 = ((IfcSchema::IfcVertexPoint*) l->EdgeStart())->VertexGeometry(); - IfcSchema::IfcPoint* pnt2 = ((IfcSchema::IfcVertexPoint*) l->EdgeEnd())->VertexGeometry(); - if (!pnt1->declaration().is(IfcSchema::IfcCartesianPoint::Class()) || !pnt2->declaration().is(IfcSchema::IfcCartesianPoint::Class())) { - Logger::Message(Logger::LOG_ERROR, "Only IfcCartesianPoints are supported for VertexGeometry", l); - return false; - } - - gp_Pnt p1, p2; - if (!convert(((IfcSchema::IfcCartesianPoint*)pnt1), p1) || - !convert(((IfcSchema::IfcCartesianPoint*)pnt2), p2)) - { - return false; - } - - BRepBuilderAPI_MakeWire mw; - mw.Add(BRepBuilderAPI_MakeEdge(p1, p2)); - - result = mw.Wire(); - return true; -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcOrientedEdge* l, TopoDS_Wire& result) { - if (convert_wire(l->EdgeElement(), result)) { - if (!l->Orientation()) { - result.Reverse(); - } - return true; - } else { - return false; - } -} - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcSubedge* l, TopoDS_Wire& result) { - TopoDS_Wire temp; - if (convert_wire(l->ParentEdge(), result) && convert((IfcSchema::IfcEdge*) l, temp)) { - TopExp_Explorer exp(result, TopAbs_EDGE); - TopoDS_Edge edge = TopoDS::Edge(exp.Current()); - Standard_Real u1, u2; - Handle(Geom_Curve) crv = BRep_Tool::Curve(edge, u1, u2); - TopoDS_Vertex v1, v2; - TopExp::Vertices(temp, v1, v2); - BRepBuilderAPI_MakeWire mw; - mw.Add(BRepBuilderAPI_MakeEdge(crv, v1, v2)); - result = mw.Wire(); - return true; - } else { - return false; - } -} - -#ifdef SCHEMA_HAS_IfcIndexedPolyCurve - -bool IfcGeom::Kernel::convert(const IfcSchema::IfcIndexedPolyCurve* l, TopoDS_Wire& result) { - - IfcSchema::IfcCartesianPointList* point_list = l->Points(); - std::vector< std::vector > coordinates; - if (point_list->as()) { - coordinates = point_list->as()->CoordList(); - } else if (point_list->as()) { - coordinates = point_list->as()->CoordList(); - } - - std::vector points; - points.reserve(coordinates.size()); - for (std::vector< std::vector >::const_iterator it = coordinates.begin(); it != coordinates.end(); ++it) { - const std::vector& coords = *it; - points.push_back(gp_Pnt( - coords.size() < 1 ? 0. : coords[0] * getValue(GV_LENGTH_UNIT), - coords.size() < 2 ? 0. : coords[1] * getValue(GV_LENGTH_UNIT), - coords.size() < 3 ? 0. : coords[2] * getValue(GV_LENGTH_UNIT))); - } - - int max_index = points.size(); - - BRepBuilderAPI_MakeWire w; - - // ignored, just for capturing the curve parameters on the null check - double u, v; - - if(l->Segments()) { - aggregate_of_instance::ptr segments = *l->Segments(); - for (aggregate_of_instance::it it = segments->begin(); it != segments->end(); ++it) { - IfcUtil::IfcBaseClass* segment = *it; - if (segment->declaration().is(IfcSchema::IfcLineIndex::Class())) { - IfcSchema::IfcLineIndex* line = (IfcSchema::IfcLineIndex*) segment; - std::vector indices = *line; - gp_Pnt previous; - for (std::vector::const_iterator jt = indices.begin(); jt != indices.end(); ++jt) { - if (*jt < 1 || *jt > max_index) { - throw IfcParse::IfcException("IfcIndexedPolyCurve index out of bounds for index " + boost::lexical_cast(*jt)); - } - const gp_Pnt& current = points[*jt - 1]; - if (jt != indices.begin()) { - BRepBuilderAPI_MakeEdge me(previous, current); - if (me.IsDone() && !BRep_Tool::Curve(me.Edge(), u, v).IsNull()) { - w.Add(me.Edge()); - } else { - Logger::Warning("Ignoring segment on", l); - } - } - previous = current; - } - } else if (segment->declaration().is(IfcSchema::IfcArcIndex::Class())) { - IfcSchema::IfcArcIndex* arc = (IfcSchema::IfcArcIndex*) segment; - std::vector indices = *arc; - if (indices.size() != 3) { - throw IfcParse::IfcException("Invalid IfcArcIndex encountered"); - } - for (int i = 0; i < 3; ++i) { - const int& idx = indices[i]; - if (idx < 1 || idx > max_index) { - throw IfcParse::IfcException("IfcIndexedPolyCurve index out of bounds for index " + boost::lexical_cast(idx)); - } - } - const gp_Pnt& a = points[indices[0] - 1]; - const gp_Pnt& b = points[indices[1] - 1]; - const gp_Pnt& c = points[indices[2] - 1]; - Handle(Geom_Circle) circ = GC_MakeCircle(a, b, c).Value(); - BRepBuilderAPI_MakeEdge me(circ, a, c); - if (me.IsDone() && !BRep_Tool::Curve(me.Edge(), u, v).IsNull()) { - w.Add(me.Edge()); - } else { - Logger::Warning("Ignoring segment on", l); - } - } else { - throw IfcParse::IfcException("Unexpected IfcIndexedPolyCurve segment of type " + segment->declaration().name()); - } - } - } else if (points.begin() < points.end()) { - std::vector::const_iterator previous = points.begin(); - for (std::vector::const_iterator current = previous+1; current < points.end(); ++current){ - BRepBuilderAPI_MakeEdge me(*previous, *current); - if (me.IsDone() && !BRep_Tool::Curve(me.Edge(), u, v).IsNull()) { - w.Add(me.Edge()); - previous = current; - } - } - } - - result = w.Wire(); - return true; -} - -#endif diff --git a/src/ifcgeom/IfcGeometricSet.cpp b/src/ifcgeom/IfcGeometricSet.cpp new file mode 100644 index 0000000000..5c121f1c10 --- /dev/null +++ b/src/ifcgeom/IfcGeometricSet.cpp @@ -0,0 +1,73 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" +#include + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcGeometricSet* l, IfcRepresentationShapeItems& shapes) { + // @nb the selection is partly duplicated from convert_curves() but it's needed as a + // geometric set by it's static class definition does not inform us of the type of elements. + // @todo handle this better so that this doesn't log an error. + const bool include_curves = getValue(GV_DIMENSIONALITY) != +1; + const bool include_solids_and_surfaces = getValue(GV_DIMENSIONALITY) != -1; + + aggregate_of_instance::ptr elements = l->Elements(); + if ( !elements->size() ) return false; + bool part_succes = false; + auto parent_style = get_style(l); + for (aggregate_of_instance::it it = elements->begin(); it != elements->end(); ++it) { + auto element = *it; + TopoDS_Shape s; + if (shape_type(element) == ST_SHAPELIST) { + IfcRepresentationShapeItems items; + if (!(convert_shapes(element, items) && flatten_shape_list(items, s, false))) { + continue; + } + } else if (shape_type(element) == ST_SHAPE && include_solids_and_surfaces) { + if (!convert_shape(element, s)) { + continue; + } + } else if (shape_type(element) == ST_WIRE && include_curves) { + TopoDS_Wire w; + if (!convert_wire(element, w)) { + continue; + } + s = w; + } else { + continue; + } + + part_succes = true; + decltype(parent_style) style = 0; + if (element->declaration().is(IfcSchema::IfcPoint::Class())) { + style = get_style((IfcSchema::IfcPoint*) element); + } + else if (element->declaration().is(IfcSchema::IfcCurve::Class())) { + style = get_style((IfcSchema::IfcCurve*) element); + } + else if (element->declaration().is(IfcSchema::IfcSurface::Class())) { + style = get_style((IfcSchema::IfcSurface*) element); + } + shapes.push_back(IfcRepresentationShapeItem(l->data().id(), s, style ? style : parent_style)); + } + return part_succes; +} diff --git a/src/ifcgeom/IfcHalfSpaceSolid.cpp b/src/ifcgeom/IfcHalfSpaceSolid.cpp new file mode 100644 index 0000000000..a77210dcc8 --- /dev/null +++ b/src/ifcgeom/IfcHalfSpaceSolid.cpp @@ -0,0 +1,42 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcHalfSpaceSolid* l, TopoDS_Shape& shape) { + IfcSchema::IfcSurface* surface = l->BaseSurface(); + if ( ! surface->declaration().is(IfcSchema::IfcPlane::Class()) ) { + Logger::Message(Logger::LOG_ERROR, "Unsupported BaseSurface:", surface); + return false; + } + gp_Pln pln; + IfcGeom::Kernel::convert((IfcSchema::IfcPlane*)surface,pln); + const gp_Pnt pnt = pln.Location().Translated( l->AgreementFlag() ? -pln.Axis().Direction() : pln.Axis().Direction()); + shape = BRepPrimAPI_MakeHalfSpace(BRepBuilderAPI_MakeFace(pln),pnt).Solid(); + return true; +} diff --git a/src/ifcgeom/IfcIShapeProfileDef.cpp b/src/ifcgeom/IfcIShapeProfileDef.cpp new file mode 100644 index 0000000000..37affbce91 --- /dev/null +++ b/src/ifcgeom/IfcIShapeProfileDef.cpp @@ -0,0 +1,71 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcIShapeProfileDef* l, TopoDS_Shape& face) { + const double x1 = l->OverallWidth() / 2.0f * getValue(GV_LENGTH_UNIT); + const double y = l->OverallDepth() / 2.0f * getValue(GV_LENGTH_UNIT); + const double d1 = l->WebThickness() / 2.0f * getValue(GV_LENGTH_UNIT); + const double dy1 = l->FlangeThickness() * getValue(GV_LENGTH_UNIT); + + bool doFillet1 = !!l->FilletRadius(); + double f1 = 0.; + if ( doFillet1 ) { + f1 = *l->FilletRadius() * getValue(GV_LENGTH_UNIT); + } + + bool doFillet2 = doFillet1; + double x2 = x1, dy2 = dy1, f2 = f1; + + // @todo in IFC4 a IfcAsymmetricIShapeProfileDef is not a subtype anymore of IfcIShapeProfileDef! + if (l->declaration().is(IfcSchema::IfcAsymmetricIShapeProfileDef::Class())) { + IfcSchema::IfcAsymmetricIShapeProfileDef* assym = (IfcSchema::IfcAsymmetricIShapeProfileDef*) l; + x2 = assym->TopFlangeWidth() / 2. * getValue(GV_LENGTH_UNIT); + doFillet2 = !!assym->TopFlangeFilletRadius(); + if (doFillet2) { + f2 = *assym->TopFlangeFilletRadius() * getValue(GV_LENGTH_UNIT); + } + if (assym->TopFlangeThickness()) { + dy2 = *assym->TopFlangeThickness() * getValue(GV_LENGTH_UNIT); + } + } + + if ( x1 < ALMOST_ZERO || x2 < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || dy1 < ALMOST_ZERO || dy2 < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords[24] = {-x1,-y, x1,-y, x1,-y+dy1, d1,-y+dy1, d1,y-dy2, x2,y-dy2, x2,y, -x2,y, -x2,y-dy2, -d1,y-dy2, -d1,-y+dy1, -x1,-y+dy1}; + int fillets[4] = {3,4,9,10}; + double radii[4] = {f1,f2,f2,f1}; + return profile_helper(12,coords,(doFillet1||doFillet2) ? 4 : 0,fillets,radii,trsf2d,face); +} diff --git a/src/ifcgeom/IfcIndexedPolyCurve.cpp b/src/ifcgeom/IfcIndexedPolyCurve.cpp new file mode 100644 index 0000000000..35886a34db --- /dev/null +++ b/src/ifcgeom/IfcIndexedPolyCurve.cpp @@ -0,0 +1,124 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define _USE_MATH_DEFINES +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcIndexedPolyCurve + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcIndexedPolyCurve* l, TopoDS_Wire& result) { + + IfcSchema::IfcCartesianPointList* point_list = l->Points(); + std::vector< std::vector > coordinates; + if (point_list->as()) { + coordinates = point_list->as()->CoordList(); + } else if (point_list->as()) { + coordinates = point_list->as()->CoordList(); + } + + std::vector points; + points.reserve(coordinates.size()); + for (std::vector< std::vector >::const_iterator it = coordinates.begin(); it != coordinates.end(); ++it) { + const std::vector& coords = *it; + points.push_back(gp_Pnt( + coords.size() < 1 ? 0. : coords[0] * getValue(GV_LENGTH_UNIT), + coords.size() < 2 ? 0. : coords[1] * getValue(GV_LENGTH_UNIT), + coords.size() < 3 ? 0. : coords[2] * getValue(GV_LENGTH_UNIT))); + } + + int max_index = points.size(); + + BRepBuilderAPI_MakeWire w; + + // ignored, just for capturing the curve parameters on the null check + double u, v; + + if(l->Segments()) { + aggregate_of_instance::ptr segments = *l->Segments(); + for (aggregate_of_instance::it it = segments->begin(); it != segments->end(); ++it) { + IfcUtil::IfcBaseClass* segment = *it; + if (segment->declaration().is(IfcSchema::IfcLineIndex::Class())) { + IfcSchema::IfcLineIndex* line = (IfcSchema::IfcLineIndex*) segment; + std::vector indices = *line; + gp_Pnt previous; + for (std::vector::const_iterator jt = indices.begin(); jt != indices.end(); ++jt) { + if (*jt < 1 || *jt > max_index) { + throw IfcParse::IfcException("IfcIndexedPolyCurve index out of bounds for index " + boost::lexical_cast(*jt)); + } + const gp_Pnt& current = points[*jt - 1]; + if (jt != indices.begin()) { + BRepBuilderAPI_MakeEdge me(previous, current); + if (me.IsDone() && !BRep_Tool::Curve(me.Edge(), u, v).IsNull()) { + w.Add(me.Edge()); + } else { + Logger::Warning("Ignoring segment on", l); + } + } + previous = current; + } + } else if (segment->declaration().is(IfcSchema::IfcArcIndex::Class())) { + IfcSchema::IfcArcIndex* arc = (IfcSchema::IfcArcIndex*) segment; + std::vector indices = *arc; + if (indices.size() != 3) { + throw IfcParse::IfcException("Invalid IfcArcIndex encountered"); + } + for (int i = 0; i < 3; ++i) { + const int& idx = indices[i]; + if (idx < 1 || idx > max_index) { + throw IfcParse::IfcException("IfcIndexedPolyCurve index out of bounds for index " + boost::lexical_cast(idx)); + } + } + const gp_Pnt& a = points[indices[0] - 1]; + const gp_Pnt& b = points[indices[1] - 1]; + const gp_Pnt& c = points[indices[2] - 1]; + Handle(Geom_Circle) circ = GC_MakeCircle(a, b, c).Value(); + BRepBuilderAPI_MakeEdge me(circ, a, c); + if (me.IsDone() && !BRep_Tool::Curve(me.Edge(), u, v).IsNull()) { + w.Add(me.Edge()); + } else { + Logger::Warning("Ignoring segment on", l); + } + } else { + throw IfcParse::IfcException("Unexpected IfcIndexedPolyCurve segment of type " + segment->declaration().name()); + } + } + } else if (points.begin() < points.end()) { + std::vector::const_iterator previous = points.begin(); + for (std::vector::const_iterator current = previous+1; current < points.end(); ++current){ + BRepBuilderAPI_MakeEdge me(*previous, *current); + if (me.IsDone() && !BRep_Tool::Curve(me.Edge(), u, v).IsNull()) { + w.Add(me.Edge()); + previous = current; + } + } + } + + result = w.Wire(); + return true; +} + +#endif diff --git a/src/ifcgeom/IfcLShapeProfileDef.cpp b/src/ifcgeom/IfcLShapeProfileDef.cpp new file mode 100644 index 0000000000..c006e41835 --- /dev/null +++ b/src/ifcgeom/IfcLShapeProfileDef.cpp @@ -0,0 +1,98 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcLShapeProfileDef* l, TopoDS_Shape& face) { + const bool hasSlope = !!l->LegSlope(); + const bool doEdgeFillet = !!l->EdgeRadius(); + const bool doFillet = !!l->FilletRadius(); + + const double y = l->Depth() / 2.0f * getValue(GV_LENGTH_UNIT); + const double x = l->Width().get_value_or(l->Depth()) / 2.0f * getValue(GV_LENGTH_UNIT); + const double d = l->Thickness() * getValue(GV_LENGTH_UNIT); + const double slope = l->LegSlope().get_value_or(0.) * getValue(GV_PLANEANGLE_UNIT); + + double f1 = 0.0f; + double f2 = 0.0f; + if (doFillet) { + f1 = *l->FilletRadius() * getValue(GV_LENGTH_UNIT); + } + if ( doEdgeFillet) { + f2 = *l->EdgeRadius() * getValue(GV_LENGTH_UNIT); + } + + if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + double xx = -x+d; + double xy = -y+d; + double dy1 = 0.; + double dy2 = 0.; + double dx1 = 0.; + double dx2 = 0.; + if (hasSlope) { + dy1 = tan(slope) * x; + dy2 = tan(slope) * (x - d); + dx1 = tan(slope) * y; + dx2 = tan(slope) * (y - d); + + const double x1s = x; const double y1s = -y + d - dy1; + const double x1e = -x + d; const double y1e = -y + d + dy2; + const double x2s = -x + d - dx1; const double y2s = y; + const double x2e = -x + d + dx2; const double y2e = -y + d; + + const double a1 = y1e - y1s; + const double b1 = x1s - x1e; + const double c1 = a1*x1s + b1*y1s; + + const double a2 = y2e - y2s; + const double b2 = x2s - x2e; + const double c2 = a2*x2s + b2*y2s; + + const double det = a1*b2 - a2*b1; + + if (ALMOST_THE_SAME(det, 0.)) { + Logger::Message(Logger::LOG_NOTICE, "Legs do not intersect for:",l); + return false; + } + + xx = (b2*c1 - b1*c2) / det; + xy = (a1*c2 - a2*c1) / det; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords[12] = {-x,-y, x,-y, x,-y+d-dy1, xx, xy, -x+d-dx1,y, -x,y}; + int fillets[3] = {2,3,4}; + double radii[3] = {f2,f1,f2}; + return profile_helper(6,coords,doFillet ? 3 : 0,fillets,radii,trsf2d,face); +} diff --git a/src/ifcgeom/IfcLine.cpp b/src/ifcgeom/IfcLine.cpp new file mode 100644 index 0000000000..a21bf8ae37 --- /dev/null +++ b/src/ifcgeom/IfcLine.cpp @@ -0,0 +1,34 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcLine* l, Handle(Geom_Curve)& curve) { + gp_Pnt pnt;gp_Vec vec; + convert(l->Pnt(),pnt); + convert(l->Dir(),vec); + // See note at IfcGeomWires.cpp:237 + curve = new Geom_Line(pnt,vec); + return true; +} diff --git a/src/ifcgeom/IfcManifoldSolidBrep.cpp b/src/ifcgeom/IfcManifoldSolidBrep.cpp new file mode 100644 index 0000000000..b278997b4b --- /dev/null +++ b/src/ifcgeom/IfcManifoldSolidBrep.cpp @@ -0,0 +1,55 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" +#include + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcManifoldSolidBrep* l, IfcRepresentationShapeItems& shape) { + TopoDS_Shape s; + auto collective_style = get_style(l); + if (convert_shape(l->Outer(),s) ) { + auto indiv_style = get_style(l->Outer()); + + IfcSchema::IfcClosedShell::list::ptr voids(new IfcSchema::IfcClosedShell::list); + if (l->declaration().is(IfcSchema::IfcFacetedBrepWithVoids::Class())) { + voids = l->as()->Voids(); + } +#ifdef SCHEMA_HAS_IfcAdvancedBrepWithVoids + if (l->declaration().is(IfcSchema::IfcAdvancedBrepWithVoids::Class())) { + voids = l->as()->Voids(); + } +#endif + + for (IfcSchema::IfcClosedShell::list::it it = voids->begin(); it != voids->end(); ++it) { + TopoDS_Shape s2; + /// @todo No extensive shapefixing since shells should be disjoint. + /// @todo Awaiting generalized boolean ops module with appropriate checking + if (convert_shape(l->Outer(), s2)) { + s = BRepAlgoAPI_Cut(s, s2).Shape(); + } + } + + shape.push_back(IfcRepresentationShapeItem(l->data().id(), s, indiv_style ? indiv_style : collective_style)); + return true; + } + return false; +} diff --git a/src/ifcgeom/IfcMappedItem.cpp b/src/ifcgeom/IfcMappedItem.cpp new file mode 100644 index 0000000000..751a8dbd23 --- /dev/null +++ b/src/ifcgeom/IfcMappedItem.cpp @@ -0,0 +1,72 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcMappedItem* l, IfcRepresentationShapeItems& shapes) { + gp_GTrsf gtrsf; + IfcSchema::IfcCartesianTransformationOperator* transform = l->MappingTarget(); + if ( transform->declaration().is(IfcSchema::IfcCartesianTransformationOperator3DnonUniform::Class()) ) { + IfcGeom::Kernel::convert((IfcSchema::IfcCartesianTransformationOperator3DnonUniform*)transform,gtrsf); + } else if ( transform->declaration().is(IfcSchema::IfcCartesianTransformationOperator2DnonUniform::Class()) ) { + Logger::Message(Logger::LOG_ERROR, "Unsupported MappingTarget:", transform); + return false; + } else if ( transform->declaration().is(IfcSchema::IfcCartesianTransformationOperator3D::Class()) ) { + gp_Trsf trsf; + IfcGeom::Kernel::convert((IfcSchema::IfcCartesianTransformationOperator3D*)transform,trsf); + gtrsf = trsf; + } else if ( transform->declaration().is(IfcSchema::IfcCartesianTransformationOperator2D::Class()) ) { + gp_Trsf2d trsf_2d; + IfcGeom::Kernel::convert((IfcSchema::IfcCartesianTransformationOperator2D*)transform,trsf_2d); + gtrsf = (gp_Trsf) trsf_2d; + } + IfcSchema::IfcRepresentationMap* map = l->MappingSource(); + IfcSchema::IfcAxis2Placement* placement = map->MappingOrigin(); + gp_Trsf trsf; + if (placement->declaration().is(IfcSchema::IfcAxis2Placement3D::Class())) { + IfcGeom::Kernel::convert((IfcSchema::IfcAxis2Placement3D*)placement,trsf); + } else { + gp_Trsf2d trsf_2d; + IfcGeom::Kernel::convert((IfcSchema::IfcAxis2Placement2D*)placement,trsf_2d); + trsf = trsf_2d; + } + gtrsf.Multiply(trsf); + + auto mapped_item_style = get_style(l); + + const size_t previous_size = shapes.size(); + bool b = convert_shapes(map->MappedRepresentation(), shapes); + + for (size_t i = previous_size; i < shapes.size(); ++ i ) { + shapes[i].prepend(gtrsf); + + // Apply styles assigned to the mapped item only if on + // a more granular level no styles have been applied + if (!shapes[i].hasStyle()) { + shapes[i].setStyle(mapped_item_style); + } + } + + return b; +} diff --git a/src/ifcgeom/IfcObjectPlacement.cpp b/src/ifcgeom/IfcObjectPlacement.cpp new file mode 100644 index 0000000000..ab3605aae5 --- /dev/null +++ b/src/ifcgeom/IfcObjectPlacement.cpp @@ -0,0 +1,75 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcObjectPlacement* l, gp_Trsf& trsf) { + IN_CACHE(IfcObjectPlacement,l,gp_Trsf,trsf) + if ( ! l->declaration().is(IfcSchema::IfcLocalPlacement::Class()) ) { + Logger::Message(Logger::LOG_ERROR, "Unsupported IfcObjectPlacement:", l); + return false; + } + IfcSchema::IfcLocalPlacement* current = (IfcSchema::IfcLocalPlacement*)l; + for (;;) { + + gp_Trsf trsf2; + IfcSchema::IfcAxis2Placement* relplacement = current->RelativePlacement(); + if (relplacement->as()) { + IfcGeom::Kernel::convert(relplacement->as(),trsf2); + trsf.PreMultiply(trsf2); + } + + if (current->PlacementRelTo()) { + IfcSchema::IfcObjectPlacement* parent = current->PlacementRelTo(); + + bool parent_placement_ignored = false; + if (placement_rel_to_type_ || placement_rel_to_instance_) { + IfcSchema::IfcProduct::list::ptr parent_places = parent->PlacesObject(); + for (auto iter = parent_places->begin(); iter != parent_places->end(); ++iter) { + if ((placement_rel_to_type_ && (*iter)->declaration().is(*placement_rel_to_type_)) || + (placement_rel_to_instance_ && (*iter)->as() == placement_rel_to_instance_)) { + parent_placement_ignored = true; + } + } + } + + if (parent_placement_ignored) { + // The parent placement of the current is a placement for a type that is + // being ignored (Site or Building) or it is the host element of an opening. + break; + } else if (parent->declaration().is(IfcSchema::IfcLocalPlacement::Class())) { + // Keep processing parent placements + current = current->PlacementRelTo()->as(); + } else { + // This is the root placement (typically Site). + break; + } + } else { + break; + } + } + + trsf.PreMultiply(offset_and_rotation); + + CACHE(IfcObjectPlacement,l,trsf) + return true; +} diff --git a/src/ifcgeom/IfcOrientedEdge.cpp b/src/ifcgeom/IfcOrientedEdge.cpp new file mode 100644 index 0000000000..8475d7a957 --- /dev/null +++ b/src/ifcgeom/IfcOrientedEdge.cpp @@ -0,0 +1,35 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define _USE_MATH_DEFINES +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcOrientedEdge* l, TopoDS_Wire& result) { + if (convert_wire(l->EdgeElement(), result)) { + if (!l->Orientation()) { + result.Reverse(); + } + return true; + } else { + return false; + } +} diff --git a/src/ifcgeom/IfcPlane.cpp b/src/ifcgeom/IfcPlane.cpp new file mode 100644 index 0000000000..1d635afc50 --- /dev/null +++ b/src/ifcgeom/IfcPlane.cpp @@ -0,0 +1,64 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcPlane* l, TopoDS_Shape& face) { + gp_Pln pln; + convert(l, pln); + Handle_Geom_Surface surf = new Geom_Plane(pln); +#if OCC_VERSION_HEX < 0x60502 + face = BRepBuilderAPI_MakeFace(surf); +#else + face = BRepBuilderAPI_MakeFace(surf, getValue(GV_PRECISION)); +#endif + return true; +} +bool IfcGeom::Kernel::convert(const IfcSchema::IfcPlane* pln, gp_Pln& plane) { + IN_CACHE(IfcPlane,pln,gp_Pln,plane) + IfcSchema::IfcAxis2Placement3D* l = pln->Position(); + gp_Pnt o;gp_Dir axis = gp_Dir(0,0,1);gp_Dir refDirection; + + if (!l->Location()->declaration().is("IfcCartesianPoint")) { + // only applicable to 4x3 rc2 + Logger::Error("Not implemented", l->Location()); + return false; + } + + IfcGeom::Kernel::convert((const IfcSchema::IfcCartesianPoint*) l->Location(),o); + bool hasRef = !!l->RefDirection(); + if ( l->Axis() ) IfcGeom::Kernel::convert(l->Axis(),axis); + if ( hasRef ) IfcGeom::Kernel::convert(l->RefDirection(),refDirection); + gp_Ax3 ax3; + if ( hasRef ) ax3 = gp_Ax3(o,axis,refDirection); + else ax3 = gp_Ax3(o,axis); + plane = gp_Pln(ax3); + CACHE(IfcPlane,pln,plane) + return true; +} diff --git a/src/ifcgeom/IfcPolyLoop.cpp b/src/ifcgeom/IfcPolyLoop.cpp new file mode 100644 index 0000000000..7a1b5b4deb --- /dev/null +++ b/src/ifcgeom/IfcPolyLoop.cpp @@ -0,0 +1,77 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define _USE_MATH_DEFINES +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcPolyLoop* l, TopoDS_Wire& result) { + IfcSchema::IfcCartesianPoint::list::ptr points = l->Polygon(); + + // Parse and store the points in a sequence + TColgp_SequenceOfPnt polygon; + for(IfcSchema::IfcCartesianPoint::list::it it = points->begin(); it != points->end(); ++ it) { + gp_Pnt pnt; + IfcGeom::Kernel::convert(*it, pnt); + polygon.Append(pnt); + } + + // A loop should consist of at least three vertices + int original_count = polygon.Length(); + if (original_count < 3) { + Logger::Message(Logger::LOG_ERROR, "Not enough edges for:", l); + return false; + } + + // Remove points that are too close to one another + const double eps = getValue(GV_PRECISION) * 10; + remove_duplicate_points_from_loop(polygon, true, eps); + + int count = polygon.Length(); + if (original_count - count != 0) { + std::stringstream ss; ss << (original_count - count) << " edges removed for:"; + Logger::Message(Logger::LOG_WARNING, ss.str(), l); + } + + if (count < 3) { + Logger::Message(Logger::LOG_ERROR, "Not enough edges for:", l); + return false; + } + + BRepBuilderAPI_MakePolygon w; + for (int i = 1; i <= polygon.Length(); ++i) { + w.Add(polygon.Value(i)); + } + w.Close(); + + result = w.Wire(); + + TopTools_ListOfShape results; + if (wire_intersections(result, results)) { + Logger::Error("Self-intersections with " + boost::lexical_cast(results.Extent()) + " cycles detected", l); + select_largest(results, result); + } + + return true; +} diff --git a/src/ifcgeom/IfcPolygonalBoundedHalfSpace.cpp b/src/ifcgeom/IfcPolygonalBoundedHalfSpace.cpp new file mode 100644 index 0000000000..002e323bb5 --- /dev/null +++ b/src/ifcgeom/IfcPolygonalBoundedHalfSpace.cpp @@ -0,0 +1,62 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcPolygonalBoundedHalfSpace* l, TopoDS_Shape& shape) { + TopoDS_Shape halfspace; + if ( ! IfcGeom::Kernel::convert((IfcSchema::IfcHalfSpaceSolid*)l,halfspace) ) return false; + + TopoDS_Wire wire; + if ( ! convert_wire(l->PolygonalBoundary(),wire) || ! wire.Closed() ) return false; + + gp_Trsf trsf; + if ( ! convert(l->Position(),trsf) ) return false; + + TColgp_SequenceOfPnt points; + if (wire_to_sequence_of_point(wire, points)) { + // Boolean subtractions not very robust for narrow operands, + // increase minimal point spacing to eliminate such shapes. + const double t = getValue(GV_PRECISION) * 10.; + remove_duplicate_points_from_loop(points, wire.Closed() != 0, t); // Note: wire always closed, as per if statement above + remove_collinear_points_from_loop(points, wire.Closed() != 0, t); + if (points.Length() < 3) { + Logger::Message(Logger::LOG_ERROR, "Not enough points retained from:", l->PolygonalBoundary()); + return false; + } + sequence_of_point_to_wire(points, wire, wire.Closed() != 0); + } + + TopoDS_Shape prism = BRepPrimAPI_MakePrism(BRepBuilderAPI_MakeFace(wire),gp_Vec(0,0,200)); + gp_Trsf down; down.SetTranslation(gp_Vec(0,0,-100.0)); + + // `trsf` and `down` both have a unit scale factor + prism.Move(trsf*down); + + shape = BRepAlgoAPI_Common(halfspace,prism); + return true; +} diff --git a/src/ifcgeom/IfcPolygonalFaceSet.cpp b/src/ifcgeom/IfcPolygonalFaceSet.cpp new file mode 100644 index 0000000000..1ef9e99c2b --- /dev/null +++ b/src/ifcgeom/IfcPolygonalFaceSet.cpp @@ -0,0 +1,144 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcPolygonalFaceSet + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcPolygonalFaceSet* pfs, TopoDS_Shape& shape) { + IfcSchema::IfcCartesianPointList3D* point_list = pfs->Coordinates(); + auto coord_list = point_list->CoordList(); + auto polygonal_faces = pfs->Faces(); + + std::vector> indices; + indices.reserve(polygonal_faces->size() * 2); + + std::vector> loop_grouping; + loop_grouping.reserve(polygonal_faces->size()); + + for (auto& f : *polygonal_faces) { + loop_grouping.emplace_back(); + loop_grouping.back().push_back(indices.size()); + indices.push_back(f->CoordIndex()); + if (f->as()) { + auto inner_coordinates = f->as()->InnerCoordIndices(); + for (auto& x : inner_coordinates) { + loop_grouping.back().push_back(indices.size()); + indices.push_back(x); + } + } + } + + faceset_helper< + std::vector, + std::vector + > helper(this, coord_list, indices, pfs->Closed().get_value_or(false)); + + TopTools_ListOfShape faces; + + for (auto& f : loop_grouping) { + bool not_planar = false; + + TopoDS_Wire w; + if (!helper.wire(indices[f[0]], w)) { + continue; + } + + TopoDS_Face face; + std::vector ws = { w }; + + // @todo triangulate + BRepBuilderAPI_MakeFace mf(w); + if (mf.Error() == BRepBuilderAPI_NotPlanar) { + not_planar = true; + } else if (mf.IsDone()) { + face = mf.Face(); + } else { + // todo log + continue; + } + + if (f.size() > 1) { + + if (not_planar) { + for (auto it = f.begin() + 1; it != f.end(); ++it) { + TopoDS_Wire w2; + if (helper.wire(indices[*it], w2)) { + ws.push_back(w2); + } + } + } else { + BRepBuilderAPI_MakeFace mf2(face); + for (auto it = f.begin() + 1; it != f.end(); ++it) { + TopoDS_Wire w2; + if (helper.wire(indices[*it], w2)) { + mf2.Add(w2); + ws.push_back(w2); + } + + } + + if (mf2.Error() == BRepBuilderAPI_NotPlanar) { + not_planar = true; + } else if (mf2.IsDone()) { + face = mf2.Face(); + } + } + + } + + if (not_planar) { + TopTools_ListOfShape fs; + if (triangulate_wire(ws, fs)) { + Logger::Warning("Triangulated face boundary:", pfs); + TopTools_ListIteratorOfListOfShape it(fs); + for (; it.More(); it.Next()) { + const TopoDS_Face& tri = TopoDS::Face(it.Value()); + if (face_area(tri) > getValue(GV_MINIMAL_FACE_AREA)) { + faces.Append(tri); + } + } + } + } else { + faces.Append(face); + } + } + + if (faces.Extent() > getValue(GV_MAX_FACES_TO_ORIENT) || !create_solid_from_faces(faces, shape)) { + TopoDS_Compound compound; + BRep_Builder builder; + builder.MakeCompound(compound); + + TopTools_ListIteratorOfListOfShape face_iterator; + for (face_iterator.Initialize(faces); face_iterator.More(); face_iterator.Next()) { + builder.Add(compound, face_iterator.Value()); + } + shape = compound; + } + + return true; +} + +#endif diff --git a/src/ifcgeom/IfcPolyline.cpp b/src/ifcgeom/IfcPolyline.cpp new file mode 100644 index 0000000000..49dc05fcc4 --- /dev/null +++ b/src/ifcgeom/IfcPolyline.cpp @@ -0,0 +1,68 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define _USE_MATH_DEFINES +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcPolyline* l, TopoDS_Wire& result) { + IfcSchema::IfcCartesianPoint::list::ptr points = l->Points(); + + // Parse and store the points in a sequence + TColgp_SequenceOfPnt polygon; + for(IfcSchema::IfcCartesianPoint::list::it it = points->begin(); it != points->end(); ++ it) { + gp_Pnt pnt; + IfcGeom::Kernel::convert(*it, pnt); + polygon.Append(pnt); + } + + // @todo the strict tolerance should also govern these arbitrary precision increases + const double eps = getValue(GV_PRECISION) * 10; + const bool closed_by_proximity = polygon.Length() >= 3 && polygon.First().Distance(polygon.Last()) < eps; + if (closed_by_proximity) { + // tfk: note 1-based + polygon.Remove(polygon.Length()); + } + + // Remove points that are too close to one another + remove_duplicate_points_from_loop(polygon, closed_by_proximity, eps); + + if (polygon.Length() < 2) { + // We somehow need to signal we fail this curve on purpose not to trigger an error. + BRep_Builder B; + B.MakeWire(result); + return false; + } + + BRepBuilderAPI_MakePolygon w; + for (int i = 1; i <= polygon.Length(); ++i) { + w.Add(polygon.Value(i)); + } + + if (closed_by_proximity) { + w.Close(); + } + + result = w.Wire(); + return true; +} diff --git a/src/ifcgeom/IfcRectangleHollowProfileDef.cpp b/src/ifcgeom/IfcRectangleHollowProfileDef.cpp new file mode 100644 index 0000000000..77f6084b97 --- /dev/null +++ b/src/ifcgeom/IfcRectangleHollowProfileDef.cpp @@ -0,0 +1,83 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcRectangleHollowProfileDef* l, TopoDS_Shape& face) { + const double x = l->XDim() / 2.0f * getValue(GV_LENGTH_UNIT); + const double y = l->YDim() / 2.0f * getValue(GV_LENGTH_UNIT); + const double d = l->WallThickness() * getValue(GV_LENGTH_UNIT); + + const bool fr1 = !!l->OuterFilletRadius(); + const bool fr2 = !!l->InnerFilletRadius(); + + const double r1 = fr1 ? (*l->OuterFilletRadius()) * getValue(GV_LENGTH_UNIT) : 0.; + const double r2 = fr2 ? (*l->InnerFilletRadius()) * getValue(GV_LENGTH_UNIT) : 0.; + + if ( x < ALMOST_ZERO || y < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + TopoDS_Face f1; + TopoDS_Face f2; + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords1[8] = {-x ,-y, x ,-y, x, y, -x, y }; + double coords2[8] = {-x+d,-y+d, x-d,-y+d, x-d,y-d, -x+d,y-d}; + double radii1[4] = {r1,r1,r1,r1}; + double radii2[4] = {r2,r2,r2,r2}; + int fillets[4] = {0,1,2,3}; + + bool s1 = profile_helper(4,coords1,fr1 ? 4 : 0,fillets,radii1,trsf2d,f1); + bool s2 = profile_helper(4,coords2,fr2 ? 4 : 0,fillets,radii2,trsf2d,f2); + + if (!s1 || !s2) return false; + + TopExp_Explorer exp1(f1, TopAbs_WIRE); + TopExp_Explorer exp2(f2, TopAbs_WIRE); + + TopoDS_Wire w1 = TopoDS::Wire(exp1.Current()); + TopoDS_Wire w2 = TopoDS::Wire(exp2.Current()); + + BRepBuilderAPI_MakeFace mf(w1, false); + mf.Add(w2); + + ShapeFix_Shape sfs(mf.Face()); + sfs.Perform(); + face = TopoDS::Face(sfs.Shape()); + return true; +} diff --git a/src/ifcgeom/IfcRectangleProfileDef.cpp b/src/ifcgeom/IfcRectangleProfileDef.cpp new file mode 100644 index 0000000000..13b79df195 --- /dev/null +++ b/src/ifcgeom/IfcRectangleProfileDef.cpp @@ -0,0 +1,45 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcRectangleProfileDef* l, TopoDS_Shape& face) { + const double x = l->XDim() / 2.0f * getValue(GV_LENGTH_UNIT); + const double y = l->YDim() / 2.0f * getValue(GV_LENGTH_UNIT); + + if ( x < ALMOST_ZERO || y < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords[8] = {-x,-y,x,-y,x,y,-x,y}; + return profile_helper(4,coords,0,0,0,trsf2d,face); +} diff --git a/src/ifcgeom/IfcRectangularPyramid.cpp b/src/ifcgeom/IfcRectangularPyramid.cpp new file mode 100644 index 0000000000..c82dd96fe7 --- /dev/null +++ b/src/ifcgeom/IfcRectangularPyramid.cpp @@ -0,0 +1,48 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcRectangularPyramid* l, TopoDS_Shape& shape) { + const double dx = l->XLength() * getValue(GV_LENGTH_UNIT); + const double dy = l->YLength() * getValue(GV_LENGTH_UNIT); + const double dz = l->Height() * getValue(GV_LENGTH_UNIT); + + BRepPrimAPI_MakeWedge builder(dx, dz, dy, dx / 2., dy / 2., dx / 2., dy / 2.); + + gp_Trsf trsf1, trsf2; + trsf2.SetValues( + 1, 0, 0, 0, + 0, 0, 1, 0, + 0, 1, 0, 0 +#if OCC_VERSION_HEX < 0x60800 + , Precision::Angular(), Precision::Confusion() +#endif + ); + + IfcGeom::Kernel::convert(l->Position(), trsf1); + shape = BRepBuilderAPI_Transform(builder.Solid(), trsf1 * trsf2); + return true; +} diff --git a/src/ifcgeom/IfcRectangularTrimmedSurface.cpp b/src/ifcgeom/IfcRectangularTrimmedSurface.cpp new file mode 100644 index 0000000000..3bd1d7902f --- /dev/null +++ b/src/ifcgeom/IfcRectangularTrimmedSurface.cpp @@ -0,0 +1,40 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcRectangularTrimmedSurface* l, TopoDS_Shape& face) { + if (!l->BasisSurface()->declaration().is(IfcSchema::IfcPlane::Class())) { + Logger::Message(Logger::LOG_ERROR, "Unsupported BasisSurface:", l->BasisSurface()); + return false; + } + gp_Pln pln; + IfcGeom::Kernel::convert((IfcSchema::IfcPlane*) l->BasisSurface(), pln); + + BRepBuilderAPI_MakeFace mf(pln, l->U1(), l->U2(), l->V1(), l->V2()); + + face = mf.Face(); + + return true; +} diff --git a/src/ifcgeom/IfcRepresentation.cpp b/src/ifcgeom/IfcRepresentation.cpp new file mode 100644 index 0000000000..e4ca45d5e0 --- /dev/null +++ b/src/ifcgeom/IfcRepresentation.cpp @@ -0,0 +1,49 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcRepresentation* l, IfcRepresentationShapeItems& shapes) { + IfcSchema::IfcRepresentationItem::list::ptr items = l->Items(); + bool part_succes = false; + if ( items->size() ) { + for ( IfcSchema::IfcRepresentationItem::list::it it = items->begin(); it != items->end(); ++ it ) { + IfcSchema::IfcRepresentationItem* representation_item = *it; + if ( shape_type(representation_item) == ST_SHAPELIST ) { + part_succes |= convert_shapes(*it, shapes); + } else { + TopoDS_Shape s; + if (convert_shape(representation_item, s)) { + if (s.ShapeType() == TopAbs_COMPOUND && TopoDS_Iterator(s).More() && TopoDS_Iterator(s).Value().ShapeType() == TopAbs_SOLID) { + TopoDS_Iterator it(s); + for (; it.More(); it.Next()) { + shapes.push_back(IfcRepresentationShapeItem(representation_item->data().id(), it.Value(), get_style(representation_item))); + } + } else { + shapes.push_back(IfcRepresentationShapeItem(representation_item->data().id(), s, get_style(representation_item))); + } + part_succes |= true; + } + } + } + } + return part_succes; +} diff --git a/src/ifcgeom/IfcRevolvedAreaSolid.cpp b/src/ifcgeom/IfcRevolvedAreaSolid.cpp new file mode 100644 index 0000000000..4e3b4d94d8 --- /dev/null +++ b/src/ifcgeom/IfcRevolvedAreaSolid.cpp @@ -0,0 +1,101 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcRevolvedAreaSolid* l, TopoDS_Shape& shape) { + const double ang = l->Angle() * getValue(GV_PLANEANGLE_UNIT); + + TopoDS_Shape face; + if ( ! convert_face(l->SweptArea(),face) ) return false; + + gp_Ax1 ax1; + IfcGeom::Kernel::convert(l->Axis(), ax1); + + gp_Trsf trsf; + bool has_position = true; +#ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf); + } + + + { + // https://github.com/IfcOpenShell/IfcOpenShell/issues/1030 + // Check whether Axis does not intersect SweptArea + + double min_dot = +std::numeric_limits::infinity(); + double max_dot = -std::numeric_limits::infinity(); + + gp_Ax2 ax(ax1.Location(), gp::DZ(), ax1.Direction()); + + TopExp_Explorer exp(face, TopAbs_EDGE); + for (; exp.More(); exp.Next()) { + BRepAdaptor_Curve crv(TopoDS::Edge(exp.Current())); + GCPnts_QuasiUniformDeflection tessellater(crv, getValue(GV_PRECISION)); + + int n = tessellater.NbPoints(); + for (int i = 1; i <= n; ++i) { + double d = ax.YDirection().XYZ().Dot(tessellater.Value(i).XYZ()); + if (d < min_dot) { + min_dot = d; + } + if (d > max_dot) { + max_dot = d; + } + } + } + + bool intersecting; + if (std::abs(min_dot) > std::abs(max_dot)) { + intersecting = max_dot > + getValue(GV_PRECISION); + } else { + intersecting = min_dot < - getValue(GV_PRECISION); + } + + if (intersecting) { + Logger::Warning("Warning Axis and SweptArea intersecting", l); + } + } + + if (ang >= M_PI * 2. - ALMOST_ZERO) { + shape = BRepPrimAPI_MakeRevol(face, ax1); + } else { + shape = BRepPrimAPI_MakeRevol(face, ax1, ang); + } + + if (has_position) { + // IfcSweptAreaSolid.Position (trsf) is an IfcAxis2Placement3D + // and therefore has a unit scale factor + shape.Move(trsf); + } + + return !shape.IsNull(); +} diff --git a/src/ifcgeom/IfcRightCircularCone.cpp b/src/ifcgeom/IfcRightCircularCone.cpp new file mode 100644 index 0000000000..c4164a2c08 --- /dev/null +++ b/src/ifcgeom/IfcRightCircularCone.cpp @@ -0,0 +1,38 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcRightCircularCone* l, TopoDS_Shape& shape) { + const double r = l->BottomRadius() * getValue(GV_LENGTH_UNIT); + const double h = l->Height() * getValue(GV_LENGTH_UNIT); + + BRepPrimAPI_MakeCone builder(r, 0., h); + gp_Trsf trsf; + IfcGeom::Kernel::convert(l->Position(),trsf); + + // IfcCsgPrimitive3D.Position has unit scale factor + shape = builder.Solid().Moved(trsf); + + return true; +} diff --git a/src/ifcgeom/IfcRightCircularCylinder.cpp b/src/ifcgeom/IfcRightCircularCylinder.cpp new file mode 100644 index 0000000000..eb541b167b --- /dev/null +++ b/src/ifcgeom/IfcRightCircularCylinder.cpp @@ -0,0 +1,38 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcRightCircularCylinder* l, TopoDS_Shape& shape) { + const double r = l->Radius() * getValue(GV_LENGTH_UNIT); + const double h = l->Height() * getValue(GV_LENGTH_UNIT); + + BRepPrimAPI_MakeCylinder builder(r, h); + gp_Trsf trsf; + IfcGeom::Kernel::convert(l->Position(),trsf); + + // IfcCsgPrimitive3D.Position has unit scale factor + shape = builder.Solid().Moved(trsf); + + return true; +} diff --git a/src/ifcgeom/IfcRoundedRectangleProfileDef.cpp b/src/ifcgeom/IfcRoundedRectangleProfileDef.cpp new file mode 100644 index 0000000000..61a3037fa0 --- /dev/null +++ b/src/ifcgeom/IfcRoundedRectangleProfileDef.cpp @@ -0,0 +1,48 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcRoundedRectangleProfileDef* l, TopoDS_Shape& face) { + const double x = l->XDim() / 2.0f * getValue(GV_LENGTH_UNIT); + const double y = l->YDim() / 2.0f * getValue(GV_LENGTH_UNIT); + const double r = l->RoundingRadius() * getValue(GV_LENGTH_UNIT); + + if ( x < ALMOST_ZERO || y < ALMOST_ZERO || r < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords[8] = {-x,-y, x,-y, x,y, -x,y}; + int fillets[4] = {0,1,2,3}; + double radii[4] = {r,r,r,r}; + return profile_helper(4,coords,4,fillets,radii,trsf2d,face); +} diff --git a/src/ifcgeom/IfcShellBasedSurfaceModel.cpp b/src/ifcgeom/IfcShellBasedSurfaceModel.cpp new file mode 100644 index 0000000000..8430601d6d --- /dev/null +++ b/src/ifcgeom/IfcShellBasedSurfaceModel.cpp @@ -0,0 +1,39 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include "../ifcgeom/IfcGeom.h" +#include + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcShellBasedSurfaceModel* l, IfcRepresentationShapeItems& shapes) { + aggregate_of_instance::ptr shells = l->SbsmBoundary(); + auto collective_style = get_style(l); + for( aggregate_of_instance::it it = shells->begin(); it != shells->end(); ++ it ) { + TopoDS_Shape s; + decltype(collective_style) shell_style; + if ((*it)->declaration().is(IfcSchema::IfcRepresentationItem::Class())) { + shell_style = get_style((IfcSchema::IfcRepresentationItem*)*it); + } + if (convert_shape(*it,s)) { + shapes.push_back(IfcRepresentationShapeItem(l->data().id(), s, shell_style ? shell_style : collective_style)); + } + } + return true; +} diff --git a/src/ifcgeom/IfcSphere.cpp b/src/ifcgeom/IfcSphere.cpp new file mode 100644 index 0000000000..5ef4f40905 --- /dev/null +++ b/src/ifcgeom/IfcSphere.cpp @@ -0,0 +1,37 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcSphere* l, TopoDS_Shape& shape) { + const double r = l->Radius() * getValue(GV_LENGTH_UNIT); + + BRepPrimAPI_MakeSphere builder(r); + gp_Trsf trsf; + IfcGeom::Kernel::convert(l->Position(),trsf); + + // IfcCsgPrimitive3D.Position has unit scale factor + shape = builder.Solid().Moved(trsf); + + return true; +} diff --git a/src/ifcgeom/IfcSphericalSurface.cpp b/src/ifcgeom/IfcSphericalSurface.cpp new file mode 100644 index 0000000000..31573fe51c --- /dev/null +++ b/src/ifcgeom/IfcSphericalSurface.cpp @@ -0,0 +1,38 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcSphericalSurface + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcSphericalSurface* l, TopoDS_Shape& face) { + gp_Trsf trsf; + IfcGeom::Kernel::convert(l->Position(), trsf); + + // IfcElementarySurface.Position has unit scale factor + face = BRepBuilderAPI_MakeFace(new Geom_SphericalSurface(gp::XOY(), l->Radius() * getValue(GV_LENGTH_UNIT)), getValue(GV_PRECISION)).Face().Moved(trsf); + return true; +} + +#endif diff --git a/src/ifcgeom/IfcSubedge.cpp b/src/ifcgeom/IfcSubedge.cpp new file mode 100644 index 0000000000..58509dd1b5 --- /dev/null +++ b/src/ifcgeom/IfcSubedge.cpp @@ -0,0 +1,48 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define _USE_MATH_DEFINES +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcSubedge* l, TopoDS_Wire& result) { + TopoDS_Wire temp; + if (convert_wire(l->ParentEdge(), result) && convert((IfcSchema::IfcEdge*) l, temp)) { + TopExp_Explorer exp(result, TopAbs_EDGE); + TopoDS_Edge edge = TopoDS::Edge(exp.Current()); + Standard_Real u1, u2; + Handle(Geom_Curve) crv = BRep_Tool::Curve(edge, u1, u2); + TopoDS_Vertex v1, v2; + TopExp::Vertices(temp, v1, v2); + BRepBuilderAPI_MakeWire mw; + mw.Add(BRepBuilderAPI_MakeEdge(crv, v1, v2)); + result = mw.Wire(); + return true; + } else { + return false; + } +} diff --git a/src/ifcgeom/IfcSurfaceCurve.cpp b/src/ifcgeom/IfcSurfaceCurve.cpp new file mode 100644 index 0000000000..6c00a42c60 --- /dev/null +++ b/src/ifcgeom/IfcSurfaceCurve.cpp @@ -0,0 +1,29 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcSurfaceCurve +bool IfcGeom::Kernel::convert(const IfcSchema::IfcSurfaceCurve* sc, Handle(Geom_Curve)& curve) { + // @todo take into account PCurves. + return convert_curve(sc->Curve3D(), curve); +} +#endif diff --git a/src/ifcgeom/IfcSurfaceCurveSweptAreaSolid.cpp b/src/ifcgeom/IfcSurfaceCurveSweptAreaSolid.cpp new file mode 100644 index 0000000000..7837b4f8a5 --- /dev/null +++ b/src/ifcgeom/IfcSurfaceCurveSweptAreaSolid.cpp @@ -0,0 +1,156 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcSurfaceCurveSweptAreaSolid* l, TopoDS_Shape& shape) { + gp_Trsf directrix; + TopoDS_Shape face; + TopoDS_Face surface_face; + TopoDS_Wire wire, section; + + const bool is_plane = l->ReferenceSurface()->declaration().is(IfcSchema::IfcPlane::Class()); + + if (!is_plane) { + TopoDS_Shape surface_shell; + if (!convert_shape(l->ReferenceSurface(), surface_shell)) { + Logger::Error("Failed to convert reference surface", l); + return false; + } + if (count(surface_shell, TopAbs_FACE) != 1) { + Logger::Error("Non-continuous reference surface", l); + return false; + } + surface_face = TopoDS::Face(TopExp_Explorer(surface_shell, TopAbs_FACE).Current()); + } + + gp_Trsf trsf; + bool has_position = true; +#ifdef SCHEMA_IfcSweptAreaSolid_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf); + } + + if (!convert_face(l->SweptArea(), face) || + !convert_wire(l->Directrix(), wire) ) { + return false; + } + + gp_Pln pln; + gp_Pnt directrix_origin; + gp_Vec directrix_tangent; + bool directrix_on_plane = is_plane; + + if (is_plane) { + IfcGeom::Kernel::convert((IfcSchema::IfcPlane*) l->ReferenceSurface(), pln); + + // As per Informal propositions 2: The Directrix shall lie on the ReferenceSurface. + // This is not always the case with the test files in the repository. I am not sure + // how to deal with this and whether my interpretation of the propositions is + // correct. However, if it has been asserted that the vertices of the directrix do + // not conform to the ReferenceSurface, the ReferenceSurface is ignored. + { + for (TopExp_Explorer exp(wire, TopAbs_VERTEX); exp.More(); exp.Next()) { + if (pln.Distance(BRep_Tool::Pnt(TopoDS::Vertex(exp.Current()))) > ALMOST_ZERO) { + directrix_on_plane = false; + Logger::Message(Logger::LOG_WARNING, "The Directrix does not lie on the ReferenceSurface", l); + break; + } + } + } + } + + { + TopExp_Explorer exp(wire, TopAbs_EDGE); + TopoDS_Edge edge = TopoDS::Edge(exp.Current()); + double u0, u1; + Handle(Geom_Curve) crv = BRep_Tool::Curve(edge, u0, u1); + crv->D1(u0, directrix_origin, directrix_tangent); + } + + if (is_plane && pln.Axis().Direction().IsNormal(directrix_tangent, Precision::Approximation()) && directrix_on_plane) { + directrix.SetTransformation(gp_Ax3(directrix_origin, directrix_tangent, pln.Axis().Direction()), gp::XOY()); + } else if (!is_plane) { + ShapeAnalysis_Surface sas(BRep_Tool::Surface(surface_face)); + auto pnt2d = sas.ValueOfUV(directrix_origin, getValue(GV_PRECISION) * 10.); + BRepGProp_Face prop(surface_face); + gp_Pnt _; + gp_Vec surface_normal; + prop.Normal(pnt2d.X(), pnt2d.Y(), _, surface_normal); + directrix.SetTransformation(gp_Ax3(directrix_origin, directrix_tangent, surface_normal), gp::XOY()); + } else { + directrix.SetTransformation(gp_Ax3(directrix_origin, directrix_tangent), gp::XOY()); + } + face = BRepBuilderAPI_Transform(face, directrix); + + if (!is_plane) { + TopExp_Explorer exp(wire, TopAbs_EDGE); + for (; exp.More(); exp.Next()) { + ShapeFix_Edge sfe; + sfe.FixAddPCurve(TopoDS::Edge(exp.Current()), surface_face, false, getValue(GV_PRECISION)); + } + } + + // NB: Note that StartParam and EndParam param are ignored and the assumption is + // made that the parametric range over which to be swept matches the IfcCurve in + // its entirety. + BRepOffsetAPI_MakePipeShell builder(wire); + + { TopExp_Explorer exp(face, TopAbs_WIRE); + section = TopoDS::Wire(exp.Current()); } + + builder.Add(section); + builder.SetTransitionMode(BRepBuilderAPI_RightCorner); + if (directrix_on_plane) { + builder.SetMode(pln.Axis().Direction()); + } else if (!is_plane) { + builder.SetMode(surface_face); + } + builder.Build(); + builder.MakeSolid(); + shape = builder.Shape(); + + if (has_position) { + // IfcSweptAreaSolid.Position (trsf) is an IfcAxis2Placement3D + // and therefore has a unit scale factor + shape.Move(trsf); + } + + return true; +} diff --git a/src/ifcgeom/IfcSurfaceOfLinearExtrusion.cpp b/src/ifcgeom/IfcSurfaceOfLinearExtrusion.cpp new file mode 100644 index 0000000000..04c71e6224 --- /dev/null +++ b/src/ifcgeom/IfcSurfaceOfLinearExtrusion.cpp @@ -0,0 +1,63 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcSurfaceOfLinearExtrusion* l, TopoDS_Shape& shape) { + TopoDS_Wire wire; + if ( !convert_wire(l->SweptCurve(), wire) ) { + TopoDS_Face face; + if ( !convert_face(l->SweptCurve(),face) ) return false; + TopExp_Explorer exp(face, TopAbs_WIRE); + wire = TopoDS::Wire(exp.Current()); + } + const double height = l->Depth() * getValue(GV_LENGTH_UNIT); + + gp_Trsf trsf; + bool has_position = true; +#ifdef SCHEMA_IfcSweptSurface_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf); + } + + gp_Dir dir; + convert(l->ExtrudedDirection(),dir); + + shape = BRepPrimAPI_MakePrism(wire, height*dir); + + if (has_position) { + // IfcSweptSurface.Position (trsf) is an IfcAxis2Placement3D + // and therefore has a unit scale factor + shape.Move(trsf); + } + + return !shape.IsNull(); +} diff --git a/src/ifcgeom/IfcSurfaceOfRevolution.cpp b/src/ifcgeom/IfcSurfaceOfRevolution.cpp new file mode 100644 index 0000000000..50adda19c3 --- /dev/null +++ b/src/ifcgeom/IfcSurfaceOfRevolution.cpp @@ -0,0 +1,61 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcSurfaceOfRevolution* l, TopoDS_Shape& shape) { + TopoDS_Wire wire; + if ( !convert_wire(l->SweptCurve(), wire) ) { + TopoDS_Face face; + if ( !convert_face(l->SweptCurve(),face) ) return false; + TopExp_Explorer exp(face, TopAbs_WIRE); + wire = TopoDS::Wire(exp.Current()); + } + + gp_Ax1 ax1; + IfcGeom::Kernel::convert(l->AxisPosition(), ax1); + + gp_Trsf trsf; + bool has_position = true; +#ifdef SCHEMA_IfcSweptSurface_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf); + } + + shape = BRepPrimAPI_MakeRevol(wire, ax1); + + if (has_position) { + // IfcSweptSurface.Position (trsf) is an IfcAxis2Placement3D + // and therefore has a unit scale factor + shape.Move(trsf); + } + + return !shape.IsNull(); +} diff --git a/src/ifcgeom/IfcSweptDiskSolid.cpp b/src/ifcgeom/IfcSweptDiskSolid.cpp new file mode 100644 index 0000000000..533dff7381 --- /dev/null +++ b/src/ifcgeom/IfcSweptDiskSolid.cpp @@ -0,0 +1,130 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#include "../ifcgeom_schema_agnostic/sweep_utils.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcSweptDiskSolid* l, TopoDS_Shape& shape) { + TopoDS_Wire wire, section1, section2; + + bool hasInnerRadius = !!l->InnerRadius(); + + if (!convert_wire(l->Directrix(), wire)) { + return false; + } + + // Start- EndParam became optional in IFC4 +#ifdef SCHEMA_IfcSweptDiskSolid_StartParam_IS_OPTIONAL + auto sp = l->StartParam(); + auto ep = l->EndParam(); +#else + boost::optional sp, ep; + sp = l->StartParam(); + ep = l->EndParam(); +#endif + + if (count(wire, TopAbs_EDGE) == 1 && sp && ep) { + TopoDS_Vertex v0, v1; + TopExp::Vertices(wire, v0, v1); + if (v0.IsSame(v1)) { + TopExp_Explorer exp(wire, TopAbs_EDGE); + auto& e = TopoDS::Edge(exp.Current()); + double a, b; + auto crv = BRep_Tool::Curve(e, a, b); + if ((crv->DynamicType() == STANDARD_TYPE(Geom_Circle)) || + (crv->DynamicType() == STANDARD_TYPE(Geom_Ellipse))) + { + BRepBuilderAPI_MakeEdge me(crv, *sp, *ep); + if (me.IsDone()) { + auto e2 = me.Edge(); + BRep_Builder B; + wire.Nullify(); + B.MakeWire(wire); + B.Add(wire, e2); + } + } + } + } + + // NB: Note that StartParam and EndParam param are ignored and the assumption is + // made that the parametric range over which to be swept matches the IfcCurve in + // its entirety. + + util::process_sweep(wire, l->Radius() * getValue(GV_LENGTH_UNIT), shape); + + if (shape.IsNull()) { + return false; + } + + double r2 = 0.; + + if (hasInnerRadius) { + // Subtraction of pipes with small radii is unstable. + r2 = *l->InnerRadius() * getValue(GV_LENGTH_UNIT); + } + + if (r2 > getValue(GV_PRECISION) * 10.) { + TopoDS_Shape inner; + util::process_sweep(wire, r2, inner); + + bool is_valid = false; + + // Boolean op on the compound of separately processed sweeps + // is not attempted. + // @todo iterate over compound subshapes and process boolean + // separately. + // @todo don't process as boolean op at all, since we know + // only the start and end faces intersect and we know they + // are co-planar and we know they are circles. + if (shape.ShapeType() != TopAbs_COMPOUND) { + BRepAlgoAPI_Cut brep_cut(shape, inner); + if (brep_cut.IsDone()) { + TopoDS_Shape result = brep_cut; + + ShapeFix_Shape fix(result); + fix.Perform(); + result = fix.Shape(); + + is_valid = BRepCheck_Analyzer(result).IsValid() != 0; + if (is_valid) { + shape = result; + } + } + } + + if (!is_valid) { + Logger::Message(Logger::LOG_WARNING, "Failed to subtract inner radius void for:", l); + } + } + + return true; +} diff --git a/src/ifcgeom/IfcTShapeProfileDef.cpp b/src/ifcgeom/IfcTShapeProfileDef.cpp new file mode 100644 index 0000000000..3143182863 --- /dev/null +++ b/src/ifcgeom/IfcTShapeProfileDef.cpp @@ -0,0 +1,112 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcTShapeProfileDef* l, TopoDS_Shape& face) { + const bool doFlangeEdgeFillet = !!l->FlangeEdgeRadius(); + const bool doWebEdgeFillet = !!l->WebEdgeRadius(); + const bool doFillet = !!l->FilletRadius(); + const bool hasFlangeSlope = !!l->FlangeSlope(); + const bool hasWebSlope = !!l->WebSlope(); + + const double y = l->Depth() / 2.0f * getValue(GV_LENGTH_UNIT); + const double x = l->FlangeWidth() / 2.0f * getValue(GV_LENGTH_UNIT); + const double d1 = l->WebThickness() * getValue(GV_LENGTH_UNIT); + const double d2 = l->FlangeThickness() * getValue(GV_LENGTH_UNIT); + const double flangeSlope = hasFlangeSlope ? (*l->FlangeSlope() * getValue(GV_PLANEANGLE_UNIT)) : 0.; + const double webSlope = hasWebSlope ? (*l->WebSlope() * getValue(GV_PLANEANGLE_UNIT)) : 0.; + + if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || d2 < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + double dy1 = 0.0f; + double dy2 = 0.0f; + double dx1 = 0.0f; + double dx2 = 0.0f; + double f1 = 0.0f; + double f2 = 0.0f; + double f3 = 0.0f; + + if (doFillet) { + f1 = *l->FilletRadius() * getValue(GV_LENGTH_UNIT); + } + if (doWebEdgeFillet) { + f2 = *l->WebEdgeRadius() * getValue(GV_LENGTH_UNIT); + } + if (doFlangeEdgeFillet) { + f3 = *l->FlangeEdgeRadius() * getValue(GV_LENGTH_UNIT); + } + + double xx, xy; + if (hasFlangeSlope) { + dy1 = (x / 2. - d1) * tan(flangeSlope); + dy2 = x / 2. * tan(flangeSlope); + } + if (hasWebSlope) { + dx1 = (y - d2) * tan(webSlope); + dx2 = y * tan(webSlope); + } + if (hasWebSlope || hasFlangeSlope) { + const double x1s = d1/2. - dx2; const double y1s = -y; + const double x1e = d1/2. + dx1; const double y1e = y - d2; + const double x2s = x; const double y2s = y - d2 + dy2; + const double x2e = d1/2.; const double y2e = y - d2 - dy1; + + const double a1 = y1e - y1s; + const double b1 = x1s - x1e; + const double c1 = a1*x1s + b1*y1s; + + const double a2 = y2e - y2s; + const double b2 = x2s - x2e; + const double c2 = a2*x2s + b2*y2s; + + const double det = a1*b2 - a2*b1; + + if (ALMOST_THE_SAME(det, 0.)) { + Logger::Message(Logger::LOG_NOTICE, "Web and flange do not intersect for:",l); + return false; + } + + xx = (b2*c1 - b1*c2) / det; + xy = (a1*c2 - a2*c1) / det; + } else { + xx = d1 / 2; + xy = y - d2; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords[16] = {d1/2.-dx2,-y, xx,xy, x,y-d2+dy2, x,y, -x,y, -x,y-d2+dy2, -xx,xy, -d1/2.+dx2,-y}; + int fillets[6] = {0,1,2,5,6,7}; + double radii[6] = {f2,f1,f3,f3,f1,f2}; + return profile_helper(8, coords, (doFillet || doWebEdgeFillet || doFlangeEdgeFillet) ? 6 : 0, fillets, radii, trsf2d, face); +} diff --git a/src/ifcgeom/IfcToroidalSurface.cpp b/src/ifcgeom/IfcToroidalSurface.cpp new file mode 100644 index 0000000000..0b37ea6c09 --- /dev/null +++ b/src/ifcgeom/IfcToroidalSurface.cpp @@ -0,0 +1,39 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" +#include + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcToroidalSurface + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcToroidalSurface* l, TopoDS_Shape& face) { + gp_Trsf trsf; + IfcGeom::Kernel::convert(l->Position(), trsf); + + // IfcElementarySurface.Position has unit scale factor + face = BRepBuilderAPI_MakeFace(new Geom_ToroidalSurface(gp::XOY(), l->MajorRadius() * getValue(GV_LENGTH_UNIT), l->MinorRadius() * getValue(GV_LENGTH_UNIT)), getValue(GV_PRECISION)).Face().Moved(trsf); + return true; +} + +#endif diff --git a/src/ifcgeom/IfcTrapeziumProfileDef.cpp b/src/ifcgeom/IfcTrapeziumProfileDef.cpp new file mode 100644 index 0000000000..300cff3ef6 --- /dev/null +++ b/src/ifcgeom/IfcTrapeziumProfileDef.cpp @@ -0,0 +1,56 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcTrapeziumProfileDef* l, TopoDS_Shape& face) { + const double x1 = l->BottomXDim() / 2. * getValue(GV_LENGTH_UNIT); + const double w = l->TopXDim() * getValue(GV_LENGTH_UNIT); + const double dx = l->TopXOffset() * getValue(GV_LENGTH_UNIT); + const double y = l->YDim() / 2. * getValue(GV_LENGTH_UNIT); + + // See: https://forums.buildingsmart.org/t/how-are-the-sides-of-ifctrapeziumprofiledefs-bounding-box-calculated-in-most-implementations/2945/8 + // The trapezium x center should not be midway of BottomXDim but rather at the center of the overall bounding box. + const double x_offset = ((std::min(dx, 0.) + std::max(w + dx, x1 * 2.)) / 2.) - x1; + + if ( x1 < ALMOST_ZERO || w < ALMOST_ZERO || y < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords[8] = { + -x1 - x_offset, -y, + +x1 - x_offset, -y, + -x1 + dx + w - x_offset, y, + -x1 + dx - x_offset,y + }; + return profile_helper(4,coords,0,0,0,trsf2d,face); +} diff --git a/src/ifcgeom/IfcTriangulatedFaceSet.cpp b/src/ifcgeom/IfcTriangulatedFaceSet.cpp new file mode 100644 index 0000000000..cc1a7d0b62 --- /dev/null +++ b/src/ifcgeom/IfcTriangulatedFaceSet.cpp @@ -0,0 +1,66 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +#ifdef SCHEMA_HAS_IfcTriangulatedFaceSet + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcTriangulatedFaceSet* l, TopoDS_Shape& shape) { + IfcSchema::IfcCartesianPointList3D* point_list = l->Coordinates(); + auto coord_list = point_list->CoordList(); + std::vector> indices = l->CoordIndex(); + + faceset_helper< + std::vector, + std::vector + > helper(this, coord_list, indices, l->Closed().get_value_or(false)); + + TopTools_ListOfShape faces; + + for (auto it = indices.begin(); it != indices.end(); ++it) { + TopoDS_Wire w; + if (helper.wire(*it, w)) { + BRepBuilderAPI_MakeFace mf(w); + if (mf.IsDone()) { + faces.Append(mf.Face()); + } + } + } + + if (faces.Extent() > getValue(GV_MAX_FACES_TO_ORIENT) || !create_solid_from_faces(faces, shape)) { + TopoDS_Compound compound; + BRep_Builder builder; + builder.MakeCompound(compound); + + TopTools_ListIteratorOfListOfShape face_iterator; + for (face_iterator.Initialize(faces); face_iterator.More(); face_iterator.Next()) { + builder.Add(compound, face_iterator.Value()); + } + shape = compound; + } + + return true; +} + +#endif \ No newline at end of file diff --git a/src/ifcgeom/IfcTrimmedCurve.cpp b/src/ifcgeom/IfcTrimmedCurve.cpp new file mode 100644 index 0000000000..e60a4ded90 --- /dev/null +++ b/src/ifcgeom/IfcTrimmedCurve.cpp @@ -0,0 +1,248 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#include "../ifcgeom_schema_agnostic/wire_builder.h" + +#define _USE_MATH_DEFINES + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcTrimmedCurve* l, TopoDS_Wire& wire) { + IfcSchema::IfcCurve* basis_curve = l->BasisCurve(); + bool isConic = basis_curve->declaration().is(IfcSchema::IfcConic::Class()); + double parameterFactor = isConic ? getValue(GV_PLANEANGLE_UNIT) : getValue(GV_LENGTH_UNIT); + + Handle(Geom_Curve) curve; + if (shape_type(basis_curve) == ST_CURVE) { + if (!convert_curve(basis_curve, curve)) return false; + } else if (shape_type(basis_curve) == ST_WIRE) { + Logger::Warning("Approximating BasisCurve due to possible discontinuities", l); + TopoDS_Wire w; + if (!convert_wire(basis_curve, w)) return false; +#if OCC_VERSION_HEX < 0x70600 + BRepAdaptor_CompCurve cc(w, true); + Handle(Adaptor3d_HCurve) hcc = Handle(Adaptor3d_HCurve)(new BRepAdaptor_HCompCurve(cc)); +#else + auto hcc = new BRepAdaptor_CompCurve(w, true); +#endif + // @todo, arbitrary numbers here, note they cannot be too high as contiguous memory is allocated based on them. + Approx_Curve3d approx(hcc, getValue(GV_PRECISION), GeomAbs_C0, 10, 10); + curve = approx.Curve(); + } else { + Logger::Error("Unknown BasisCurve", l); + return false; + } + + bool trim_cartesian = l->MasterRepresentation() != IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER; + aggregate_of_instance::ptr trims1 = l->Trim1(); + aggregate_of_instance::ptr trims2 = l->Trim2(); + + unsigned sense_agreement = l->SenseAgreement() ? 0 : 1; + double flts[2]; + gp_Pnt pnts[2]; + bool has_flts[2] = {false,false}; + bool has_pnts[2] = {false,false}; + + TopoDS_Edge e; + + for ( aggregate_of_instance::it it = trims1->begin(); it != trims1->end(); it ++ ) { + IfcUtil::IfcBaseClass* i = *it; + if ( i->declaration().is(IfcSchema::IfcCartesianPoint::Class()) ) { + IfcGeom::Kernel::convert((IfcSchema::IfcCartesianPoint*)i, pnts[sense_agreement] ); + has_pnts[sense_agreement] = true; + } else if ( i->declaration().is(IfcSchema::IfcParameterValue::Class()) ) { + const double value = *((IfcSchema::IfcParameterValue*)i); + flts[sense_agreement] = value * parameterFactor; + has_flts[sense_agreement] = true; + } + } + + for ( aggregate_of_instance::it it = trims2->begin(); it != trims2->end(); it ++ ) { + IfcUtil::IfcBaseClass* i = *it; + if ( i->declaration().is(IfcSchema::IfcCartesianPoint::Class()) ) { + IfcGeom::Kernel::convert((IfcSchema::IfcCartesianPoint*)i, pnts[1-sense_agreement] ); + has_pnts[1-sense_agreement] = true; + } else if ( i->declaration().is(IfcSchema::IfcParameterValue::Class()) ) { + const double value = *((IfcSchema::IfcParameterValue*)i); + flts[1-sense_agreement] = value * parameterFactor; + has_flts[1-sense_agreement] = true; + } + } + + trim_cartesian &= has_pnts[0] && has_pnts[1]; + bool trim_cartesian_failed = !trim_cartesian; + if ( trim_cartesian ) { + if ( pnts[0].Distance(pnts[1]) < 2 * getValue(GV_PRECISION) ) { + Logger::Message(Logger::LOG_WARNING,"Skipping segment with length below tolerance level:",l); + return false; + } + ShapeFix_ShapeTolerance FTol; + TopoDS_Vertex v1 = BRepBuilderAPI_MakeVertex(pnts[0]); + TopoDS_Vertex v2 = BRepBuilderAPI_MakeVertex(pnts[1]); + FTol.SetTolerance(v1, getValue(GV_PRECISION), TopAbs_VERTEX); + FTol.SetTolerance(v2, getValue(GV_PRECISION), TopAbs_VERTEX); + BRepBuilderAPI_MakeEdge me (curve,v1,v2); + if (!me.IsDone()) { + BRepBuilderAPI_EdgeError err = me.Error(); + if ( err == BRepBuilderAPI_PointProjectionFailed ) { + Logger::Message(Logger::LOG_WARNING,"Point projection failed for:",l); + trim_cartesian_failed = true; + } + } else { + e = me.Edge(); + // BRepBuilderAPI_MakeEdge swaps v1 and v2 if the parameter value of v2 is + // smaller than that of v1. In that case the edge has to be reversed so that + // the vertex order is consistent with Trim1 and Trim2. Otherwise the + // IfcOpenShell wire builder will create intermediate edges automatically. + // The alternative would be to reverse the underlying curve instead. + if (!TopExp::FirstVertex(e, true).IsSame(v1)) { + e.Reverse(); + } + } + } + + if ( (!trim_cartesian || trim_cartesian_failed) && (has_flts[0] && has_flts[1]) ) { + // The Geom_Line is constructed from a gp_Pnt and gp_Dir, whereas the IfcLine + // is defined by an IfcCartesianPoint and an IfcVector with Magnitude. Because + // the vector is normalised when passed to Geom_Line constructor the magnitude + // needs to be factored in with the IfcParameterValue here. + if ( basis_curve->declaration().is(IfcSchema::IfcLine::Class()) ) { + IfcSchema::IfcLine* line = static_cast(basis_curve); + const double magnitude = line->Dir()->Magnitude(); + flts[0] *= magnitude; flts[1] *= magnitude; + } + if ( basis_curve->declaration().is(IfcSchema::IfcEllipse::Class()) ) { + IfcSchema::IfcEllipse* ellipse = static_cast(basis_curve); + double x = ellipse->SemiAxis1() * getValue(GV_LENGTH_UNIT); + double y = ellipse->SemiAxis2() * getValue(GV_LENGTH_UNIT); + const bool rotated = y > x; + if (rotated) { + flts[0] -= M_PI / 2.; + flts[1] -= M_PI / 2.; + } + } + + double radius = 1.0; + if (curve->DynamicType() == STANDARD_TYPE(Geom_Circle)) { + auto circle_curve = Handle_Geom_Circle::DownCast(curve); + radius = circle_curve->Radius(); + } else if (curve->DynamicType() == STANDARD_TYPE(Geom_Ellipse)) { + auto circle_curve = Handle_Geom_Ellipse::DownCast(curve); + radius = (circle_curve->MajorRadius() + circle_curve->MinorRadius()) / 2.; + } + + // Fix from @sanderboer to compare using model tolerance, see #744 + // Made dependent on radius, see #928 + + // A good critereon for determining whether to take full curve + // or trimmed segment would be whether there are other curve segments or this + // is the only one. + boost::optional num_segments; + auto segment = l->data().getInverse(&IfcSchema::IfcCompositeCurveSegment::Class(), -1); + if (segment->size() == 1) { + auto comp = (*segment->begin())->data().getInverse(&IfcSchema::IfcCompositeCurve::Class(), -1); + if (comp->size() == 1) { + num_segments = (*comp->begin())->as()->Segments()->size(); + } + } + + // @todo is 100. not too much? Check with the original issue. + const double precision_markup = getValue(IfcGeom::Kernel::GV_PRECISION_FACTOR) == 1. ? 1. : 100.; + + if (isConic && ALMOST_THE_SAME(fmod(flts[1]-flts[0],M_PI*2.), 0., precision_markup * getValue(GV_PRECISION) / (2 * M_PI * radius))) { + e = BRepBuilderAPI_MakeEdge(curve).Edge(); + } else { + BRepBuilderAPI_MakeEdge me (curve,flts[0],flts[1]); + e = me.Edge(); + } + + if (num_segments && *num_segments > 1) { + TopoDS_Vertex v0, v1; + TopExp::Vertices(e, v0, v1); + if (v0.IsSame(v1)) { + Logger::Warning("Skipping degenerate segment", l); + return false; + } + } + + } else if ( trim_cartesian_failed && (has_pnts[0] && has_pnts[1]) ) { + e = BRepBuilderAPI_MakeEdge(pnts[0], pnts[1]).Edge(); + } + + if (e.IsNull()) { + return false; + } + + if (isConic) { + // Tiny circle segnments can cause issues later on, for example + // when the comp curve is used as the sweeping directrix. + double a, b; + Handle(Geom_Curve) crv = BRep_Tool::Curve(e, a, b); + double radius = -1.; + if (crv->DynamicType() == STANDARD_TYPE(Geom_Circle)) { + radius = Handle(Geom_Circle)::DownCast(crv)->Radius(); + } else if (crv->DynamicType() == STANDARD_TYPE(Geom_Ellipse)) { + // The formula in deflection_for_approximating_circle() is for circles, but probably good enough + radius = Handle(Geom_Ellipse)::DownCast(crv)->MajorRadius(); + } + if (radius > 0. && util::deflection_for_approximating_circle(radius, b - a) < 100 * getValue(GV_PRECISION) && std::abs(b-a) < M_PI/4.) { + TopoDS_Vertex v0, v1; + TopExp::Vertices(e, v0, v1); + e = TopoDS::Edge(BRepBuilderAPI_MakeEdge(v0, v1).Edge().Oriented(e.Orientation())); + Logger::Warning("Subsituted edge with linear approximation", l); + } + } + + BRepBuilderAPI_MakeWire w; + w.Add(e); + + if (w.IsDone()) { + wire = w.Wire(); + + // When SenseAgreement == .F. the vertices above have been reversed to + // comply with the direction of conical curves. The ordering of the + // vertices then still needs to be reversed in order to have begin and + // end vertex consistent with IFC. + if (sense_agreement != 0) { // .F. + wire.Reverse(); + } + + return true; + } else { + return false; + } +} diff --git a/src/ifcgeom/IfcUShapeProfileDef.cpp b/src/ifcgeom/IfcUShapeProfileDef.cpp new file mode 100644 index 0000000000..64a15b6ced --- /dev/null +++ b/src/ifcgeom/IfcUShapeProfileDef.cpp @@ -0,0 +1,71 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcUShapeProfileDef* l, TopoDS_Shape& face) { + const bool doEdgeFillet = !!l->EdgeRadius(); + const bool doFillet = !!l->FilletRadius(); + const bool hasSlope = !!l->FlangeSlope(); + + const double y = l->Depth() / 2.0f * getValue(GV_LENGTH_UNIT); + const double x = l->FlangeWidth() / 2.0f * getValue(GV_LENGTH_UNIT); + const double d1 = l->WebThickness() * getValue(GV_LENGTH_UNIT); + const double d2 = l->FlangeThickness() * getValue(GV_LENGTH_UNIT); + const double slope = l->FlangeSlope().get_value_or(0.) * getValue(GV_PLANEANGLE_UNIT); + + double dy1 = 0.0f; + double dy2 = 0.0f; + double f1 = 0.0f; + double f2 = 0.0f; + + if (doFillet) { + f1 = *l->FilletRadius() * getValue(GV_LENGTH_UNIT); + } + if (doEdgeFillet) { + f2 = *l->EdgeRadius() * getValue(GV_LENGTH_UNIT); + } + + if (hasSlope) { + dy1 = (x - d1) * tan(slope); + dy2 = x * tan(slope); + } + + if ( x < ALMOST_ZERO || y < ALMOST_ZERO || d1 < ALMOST_ZERO || d2 < ALMOST_ZERO ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords[16] = {-x,-y, x,-y, x,-y+d2-dy2, -x+d1,-y+d2+dy1, -x+d1,y-d2-dy1, x,y-d2+dy2, x,y, -x,y}; + int fillets[4] = {2,3,4,5}; + double radii[4] = {f2,f1,f1,f2}; + return profile_helper(8, coords, (doFillet || doEdgeFillet) ? 4 : 0, fillets, radii, trsf2d, face); +} diff --git a/src/ifcgeom/IfcVector.cpp b/src/ifcgeom/IfcVector.cpp new file mode 100644 index 0000000000..09daa295b1 --- /dev/null +++ b/src/ifcgeom/IfcVector.cpp @@ -0,0 +1,33 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcVector* l, gp_Vec& v) { + IN_CACHE(IfcVector,l,gp_Vec,v) + gp_Dir d; + IfcGeom::Kernel::convert(l->Orientation(),d); + v = l->Magnitude() * getValue(GV_LENGTH_UNIT) * d; + CACHE(IfcVector,l,v) + return true; +} diff --git a/src/ifcgeom/IfcZShapeProfileDef.cpp b/src/ifcgeom/IfcZShapeProfileDef.cpp new file mode 100644 index 0000000000..d39f9083d1 --- /dev/null +++ b/src/ifcgeom/IfcZShapeProfileDef.cpp @@ -0,0 +1,62 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include +#include "../ifcgeom/IfcGeom.h" + +#define Kernel MAKE_TYPE_NAME(Kernel) + +bool IfcGeom::Kernel::convert(const IfcSchema::IfcZShapeProfileDef* l, TopoDS_Shape& face) { + const double x = l->FlangeWidth() * getValue(GV_LENGTH_UNIT); + const double y = l->Depth() / 2.0f * getValue(GV_LENGTH_UNIT); + const double dx = l->WebThickness() / 2.0f * getValue(GV_LENGTH_UNIT); + const double dy = l->FlangeThickness() * getValue(GV_LENGTH_UNIT); + + bool doFillet = !!l->FilletRadius(); + bool doEdgeFillet = !!l->EdgeRadius(); + + double f1 = 0.; + double f2 = 0.; + + if ( doFillet ) { + f1 = *l->FilletRadius() * getValue(GV_LENGTH_UNIT); + } + if ( doEdgeFillet ) { + f2 = *l->EdgeRadius() * getValue(GV_LENGTH_UNIT); + } + + if ( x == 0.0f || y == 0.0f || dx == 0.0f || dy == 0.0f ) { + Logger::Message(Logger::LOG_NOTICE,"Skipping zero sized profile:",l); + return false; + } + + gp_Trsf2d trsf2d; + bool has_position = true; +#ifdef SCHEMA_IfcParameterizedProfileDef_Position_IS_OPTIONAL + has_position = l->Position() != nullptr; +#endif + if (has_position) { + IfcGeom::Kernel::convert(l->Position(), trsf2d); + } + + double coords[16] = {-dx,-y, x,-y, x,-y+dy, dx,-y+dy, dx,y, -x,y, -x,y-dy, -dx,y-dy}; + int fillets[4] = {2,3,6,7}; + double radii[4] = {f2,f1,f2,f1}; + return profile_helper(8,coords,(doFillet || doEdgeFillet) ? 4 : 0,fillets,radii,trsf2d,face); +} diff --git a/src/ifcgeom/IfcGeomSerialisation.cpp b/src/ifcgeom/Serialization.cpp similarity index 100% rename from src/ifcgeom/IfcGeomSerialisation.cpp rename to src/ifcgeom/Serialization.cpp diff --git a/src/ifcgeom/mapping.cpp b/src/ifcgeom/mapping.cpp index 725301d8bd..8e09756330 100644 --- a/src/ifcgeom/mapping.cpp +++ b/src/ifcgeom/mapping.cpp @@ -18,7 +18,7 @@ ********************************************************************************/ #include "IfcGeom.h" -#include "IfcGeomShapeType.h" +#include "../ifcgeom_schema_agnostic/IfcGeomShapeType.h" #include diff --git a/src/ifcgeom_schema_agnostic/GeometrySerializer.h b/src/ifcgeom_schema_agnostic/GeometrySerializer.h index 56f8cd9eed..58fb7c4d64 100644 --- a/src/ifcgeom_schema_agnostic/GeometrySerializer.h +++ b/src/ifcgeom_schema_agnostic/GeometrySerializer.h @@ -21,7 +21,7 @@ #define GEOMETRYSERIALIZER_H #include "../ifcgeom_schema_agnostic/Serializer.h" -#include "../ifcgeom/IfcGeomElement.h" +#include "../ifcgeom_schema_agnostic/IfcGeomElement.h" class SerializerSettings : public IfcGeom::IteratorSettings { diff --git a/src/ifcgeom/IfcGeomElement.h b/src/ifcgeom_schema_agnostic/IfcGeomElement.h similarity index 97% rename from src/ifcgeom/IfcGeomElement.h rename to src/ifcgeom_schema_agnostic/IfcGeomElement.h index c9829d8ef3..e924da8b58 100644 --- a/src/ifcgeom/IfcGeomElement.h +++ b/src/ifcgeom_schema_agnostic/IfcGeomElement.h @@ -26,9 +26,9 @@ #include "../ifcparse/Argument.h" #include "../ifcparse/IfcGlobalId.h" -#include "../ifcgeom/IfcGeomRepresentation.h" -#include "../ifcgeom/IfcGeomIteratorSettings.h" -#include "ifc_geom_api.h" +#include "../ifcgeom_schema_agnostic/IfcGeomRepresentation.h" +#include "../ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h" +#include "../ifcgeom_schema_agnostic/ifc_geom_api.h" namespace IfcGeom { diff --git a/src/ifcgeom_schema_agnostic/IfcGeomIteratorSettings.cpp b/src/ifcgeom_schema_agnostic/IfcGeomIteratorSettings.cpp new file mode 100644 index 0000000000..9a2df3a578 --- /dev/null +++ b/src/ifcgeom_schema_agnostic/IfcGeomIteratorSettings.cpp @@ -0,0 +1,12 @@ +#include "IfcGeomIteratorSettings.h" + +#include "../ifcparse/IfcLogger.h" + +void IfcGeom::IteratorSettings::set_deflection_tolerance(double value) +{ + deflection_tolerance_ = value; + if (deflection_tolerance_ <= 1e-6) { + Logger::Message(Logger::LOG_WARNING, "Deflection tolerance cannot be set to <= 1e-6; using the default value 1e-3"); + deflection_tolerance_ = 1e-3; + } +} diff --git a/src/ifcgeom/IfcGeomIteratorSettings.h b/src/ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h similarity index 94% rename from src/ifcgeom/IfcGeomIteratorSettings.h rename to src/ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h index 0211fc5758..814fc4ddcd 100644 --- a/src/ifcgeom/IfcGeomIteratorSettings.h +++ b/src/ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h @@ -20,12 +20,14 @@ #ifndef IFCGEOMITERATORSETTINGS_H #define IFCGEOMITERATORSETTINGS_H -#include - #include "ifc_geom_api.h" + #include "../ifcparse/IfcException.h" #include "../ifcparse/IfcBaseClass.h" +#include +#include + namespace IfcGeom { class IFC_GEOM_API IteratorSettings @@ -132,16 +134,9 @@ namespace IfcGeom double force_space_transparency() const { return force_space_transparency_; } std::set context_ids() const { return context_ids_; } - void set_deflection_tolerance(double value) - { - /// @todo Using deflection tolerance of 1e-6 or smaller hangs the conversion, research more in-depth. - /// This bug can be reproduced e.g. with the Duplex model that can be found from http://www.nibs.org/?page=bsa_commonbimfiles#project1 - deflection_tolerance_ = value; - if (deflection_tolerance_ <= 1e-6) { - Logger::Message(Logger::LOG_WARNING, "Deflection tolerance cannot be set to <= 1e-6; using the default value 1e-3"); - deflection_tolerance_ = 1e-3; - } - } + /// @todo Using deflection tolerance of 1e-6 or smaller hangs the conversion, research more in-depth. + /// This bug can be reproduced e.g. with the Duplex model that can be found from http://www.nibs.org/?page=bsa_commonbimfiles#project1 + void set_deflection_tolerance(double value); void set_angular_tolerance(double value) { angular_tolerance_ = value; diff --git a/src/ifcgeom_schema_agnostic/IfcGeomRenderStyles.h b/src/ifcgeom_schema_agnostic/IfcGeomRenderStyles.h index b6d57dc42d..8200cf0529 100644 --- a/src/ifcgeom_schema_agnostic/IfcGeomRenderStyles.h +++ b/src/ifcgeom_schema_agnostic/IfcGeomRenderStyles.h @@ -20,7 +20,7 @@ #ifndef IFCGEOMRENDERSTYLES_H #define IFCGEOMRENDERSTYLES_H -#include "../ifcgeom/ifc_geom_api.h" +#include "../ifcgeom_schema_agnostic/ifc_geom_api.h" #include #include diff --git a/src/ifcgeom_schema_agnostic/IfcGeomRepresentation.cpp b/src/ifcgeom_schema_agnostic/IfcGeomRepresentation.cpp new file mode 100644 index 0000000000..c85c826aab --- /dev/null +++ b/src/ifcgeom_schema_agnostic/IfcGeomRepresentation.cpp @@ -0,0 +1,531 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#include "IfcGeomRepresentation.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "../ifcparse/IfcLogger.h" +#include "../ifcgeom_schema_agnostic/Kernel.h" + +IfcGeom::Representation::Serialization::Serialization(const BRep& brep) + : Representation(brep.settings()) + , id_(brep.id()) +{ + TopoDS_Compound compound = brep.as_compound(); + for (IfcGeom::IfcRepresentationShapeItems::const_iterator it = brep.begin(); it != brep.end(); ++ it) { + int sid = -1; + + if (it->hasStyle() && it->Style().Diffuse()) { + const IfcGeom::SurfaceStyle::ColorComponent& clr = *it->Style().Diffuse(); + surface_styles_.push_back(clr.R()); + surface_styles_.push_back(clr.G()); + surface_styles_.push_back(clr.B()); + + sid = it->Style().Id().get_value_or(-1); + } else { + surface_styles_.push_back(-1.); + surface_styles_.push_back(-1.); + surface_styles_.push_back(-1.); + } + + if (it->hasStyle() && it->Style().Transparency()) { + surface_styles_.push_back(1. - *it->Style().Transparency()); + } else { + surface_styles_.push_back(1.); + } + + surface_style_ids_.push_back(sid); + } + std::stringstream sstream; + BRepTools::Write(compound,sstream); + brep_data_ = sstream.str(); +} + +// todo copied from kernel +#include +#include + +TopoDS_Shape apply_transformation(const TopoDS_Shape& s, const gp_Trsf& t) { + if (t.Form() == gp_Identity) { + return s; + } else { + /// @todo set to 1. and exactly 1. or use epsilon? + if (t.ScaleFactor() != 1.) { + return BRepBuilderAPI_Transform(s, t, true); + } else { + return s.Moved(t); + } + } +} + +TopoDS_Shape apply_transformation(const TopoDS_Shape& s, const gp_GTrsf& t) { + if (t.Form() == gp_Other) { + return BRepBuilderAPI_GTransform(s, t, true); + } else { + return apply_transformation(s, t.Trsf()); + } +} + +TopoDS_Compound IfcGeom::Representation::BRep::as_compound(bool force_meters) const { + TopoDS_Compound compound; + BRep_Builder builder; + builder.MakeCompound(compound); + for (IfcGeom::IfcRepresentationShapeItems::const_iterator it = begin(); it != end(); ++it) { + const TopoDS_Shape& s = it->Shape(); + gp_GTrsf trsf = it->Placement(); + + if (!force_meters && settings().get(IteratorSettings::CONVERT_BACK_UNITS)) { + gp_Trsf scale; + scale.SetScaleFactor(1.0 / settings().unit_magnitude()); + trsf.PreMultiply(scale); + } + + const TopoDS_Shape moved_shape = apply_transformation(s, trsf); + builder.Add(compound, moved_shape); + } + return compound; +} + +namespace { + void accumulate(const gp_Ax3& ax, const gp_Dir& normal, double area, double& along_x, double& along_y, double& along_z) { + along_x += area * fabs(ax.XDirection().Dot(normal)); + along_y += area * fabs(ax.YDirection().Dot(normal)); + along_z += area * fabs(ax.Direction().Dot(normal)); + } + + void surface_area_along_direction(double tol, const TopoDS_Shape& s, const gp_Ax3& ax, double& along_x, double& along_y, double& along_z) { + along_x = along_y = along_z = 0.; + + bool meshed = false; + + TopExp_Explorer exp(s, TopAbs_FACE); + for (; exp.More(); exp.Next()) { + const TopoDS_Face& face = TopoDS::Face(exp.Current()); + Handle(Geom_Surface) surf = BRep_Tool::Surface(face); + Handle(Geom_Plane) plane = Handle(Geom_Plane)::DownCast(surf); + + if (surf->DynamicType() == STANDARD_TYPE(Geom_Plane)) { + GProp_GProps prop_area; + BRepGProp::SurfaceProperties(face, prop_area); + const double area = prop_area.Mass(); + + accumulate(ax, plane->Position().Direction(), area, along_x, along_y, along_z); + } else { + + if (!meshed) { + try { + BRepMesh_IncrementalMesh(s, tol); + } catch (...) { + Logger::Message(Logger::LOG_ERROR, "Failed to triangulate shape"); + return; + } + meshed = true; + } + + TopLoc_Location loc; + Handle(Poly_Triangulation) tri = BRep_Tool::Triangulation(face, loc); + if (!tri.IsNull()) { + std::vector coords; + coords.reserve(tri->NbNodes()); + + for (int i = 1; i <= tri->NbNodes(); ++i) { + coords.push_back(tri->Node(i).Transformed(loc).XYZ()); + } + + const Poly_Array1OfTriangle& triangles = tri->Triangles(); + for (int i = 1; i <= triangles.Length(); ++i) { + int n1, n2, n3; + + if (face.Orientation() == TopAbs_REVERSED) { + triangles(i).Get(n3, n2, n1); + } else { + triangles(i).Get(n1, n2, n3); + } + + const gp_XYZ& pt1 = coords[n1 - 1]; + const gp_XYZ& pt2 = coords[n2 - 1]; + const gp_XYZ& pt3 = coords[n3 - 1]; + const gp_Vec v1 = pt2 - pt1; + const gp_Vec v2 = pt3 - pt2; + const gp_Vec v3 = pt1 - pt3; + const gp_Vec normal_vector = v1 ^ v2; + if (normal_vector.Magnitude() > ALMOST_ZERO) { + gp_Dir normal = gp_Dir(); + + double edge_lengths[3] = { v1.Magnitude(), v2.Magnitude(), v3.Magnitude() }; + std::sort(&edge_lengths[0], &edge_lengths[2]); + + const double& a = edge_lengths[0]; + const double& b = edge_lengths[1]; + const double& c = edge_lengths[2]; + + const double area = 0.25 * sqrt((a + (b + c))*(c - (a - b))*(c + (a - b))*(a + (b - c))); + accumulate(ax, normal, area, along_x, along_y, along_z); + } + } + } + } + } + } +} + +bool IfcGeom::Representation::BRep::calculate_surface_area(double& area) const { + try { + area = 0.; + + for (IfcGeom::IfcRepresentationShapeItems::const_iterator it = begin(); it != end(); ++it) { + GProp_GProps prop; + BRepGProp::SurfaceProperties(it->Shape(), prop); + area += prop.Mass(); + } + + return true; + } catch (...) { + Logger::Error("Error during calculation of surface area"); + return false; + } +} + +bool IfcGeom::Representation::BRep::calculate_volume(double& volume) const { + try { + volume = 0.; + + for (IfcGeom::IfcRepresentationShapeItems::const_iterator it = begin(); it != end(); ++it) { + if (Kernel::is_manifold(it->Shape())) { + GProp_GProps prop; + BRepGProp::VolumeProperties(it->Shape(), prop); + volume += prop.Mass(); + } else { + return false; + } + } + + return true; + } catch (...) { + Logger::Error("Error during calculation of volume"); + return false; + } +} + +bool IfcGeom::Representation::BRep::calculate_projected_surface_area(const gp_Ax3 & ax, double & along_x, double & along_y, double & along_z) const { + try { + along_x = along_y = along_z = 0.; + + for (IfcGeom::IfcRepresentationShapeItems::const_iterator it = begin(); it != end(); ++it) { + double x, y, z; + surface_area_along_direction(settings().deflection_tolerance(), it->Shape(), ax, x, y, z); + + if (Kernel::is_manifold(it->Shape())) { + x /= 2.; + y /= 2.; + z /= 2.; + } + + along_x += x; + along_y += y; + along_z += z; + } + + return true; + } catch (...) { + Logger::Error("Error during calculation of projected surface area"); + return false; + } +} + +IfcGeom::Representation::Triangulation::Triangulation(const BRep& shape_model) + : Representation(shape_model.settings()) + , id_(shape_model.id()) + , weld_offset_(0) +{ + for (IfcGeom::IfcRepresentationShapeItems::const_iterator iit = shape_model.begin(); iit != shape_model.end(); ++iit) { + + // Don't weld vertices that belong to different items to prevent non-manifold situations. + weld_offset_ += welds.size(); + welds.clear(); + + int surface_style_id = -1; + if (iit->hasStyle()) { + Material adapter(iit->StylePtr()); + std::vector::const_iterator jt = std::find(_materials.begin(), _materials.end(), adapter); + if (jt == _materials.end()) { + surface_style_id = (int)_materials.size(); + _materials.push_back(adapter); + } else { + surface_style_id = (int)(jt - _materials.begin()); + } + } + + if (settings().get(IteratorSettings::APPLY_DEFAULT_MATERIALS) && surface_style_id == -1) { + Material material(IfcGeom::get_default_style(settings().element_type())); + std::vector::const_iterator mit = std::find(_materials.begin(), _materials.end(), material); + if (mit == _materials.end()) { + surface_style_id = (int)_materials.size(); + _materials.push_back(material); + } else { + surface_style_id = (int)(mit - _materials.begin()); + } + } + + const TopoDS_Shape& s = iit->Shape(); + const gp_GTrsf& trsf = iit->Placement(); + + // Triangulate the shape + try { + BRepMesh_IncrementalMesh(s, settings().deflection_tolerance(), false, settings().angular_tolerance()); + } catch (...) { + Logger::Message(Logger::LOG_ERROR, "Failed to triangulate shape"); + continue; + } + + // Iterates over the faces of the shape + int num_faces = 0; + TopExp_Explorer exp; + for (exp.Init(s, TopAbs_FACE); exp.More(); exp.Next(), ++num_faces) { + TopoDS_Face face = TopoDS::Face(exp.Current()); + TopLoc_Location loc; + Handle_Poly_Triangulation tri = BRep_Tool::Triangulation(face, loc); + + if (tri.IsNull()) { + Logger::Message(Logger::LOG_ERROR, "Triangulation missing for face"); + } else { + // A 3x3 matrix to rotate the vertex normals + const gp_Mat rotation_matrix = trsf.VectorialPart(); + + // Keep track of the number of times an edge is used + // Manifold edges (i.e. edges used twice) are deemed invisible + std::map, int> edgecount; + std::vector > edges_temp; + + std::vector coords; + BRepGProp_Face prop(face); + std::map dict; + + // Vertex normals are only calculated if vertices are not welded and calculation is not disable explicitly. + const bool calculate_normals = !settings().get(IteratorSettings::WELD_VERTICES) && + !settings().get(IteratorSettings::NO_NORMALS); + + for (int i = 1; i <= tri->NbNodes(); ++i) { + coords.push_back(tri->Node(i).Transformed(loc).XYZ()); + trsf.Transforms(*coords.rbegin()); + dict[i] = addVertex(surface_style_id, *coords.rbegin()); + + if (calculate_normals) { + const gp_Pnt2d& uv = tri->UVNode(i); + gp_Pnt p; + gp_Vec normal_direction; + prop.Normal(uv.X(), uv.Y(), p, normal_direction); + gp_Vec normal(0., 0., 0.); + if (normal_direction.Magnitude() > 1.e-9) { + normal = gp_Dir(normal_direction.XYZ() * rotation_matrix); + } else { + Handle_Geom_Surface surf = BRep_Tool::Surface(face); + // Special case the normal at the poles of a spherical surface + if (surf->DynamicType() == STANDARD_TYPE(Geom_SphericalSurface)) { + if (fabs(fabs(uv.Y()) - M_PI / 2.) < 1.e-9) { + const bool is_top = uv.Y() > 0; + const bool is_forward = face.Orientation() == TopAbs_FORWARD; + const double z = (is_top == is_forward) ? 1. : -1.; + normal = gp_Dir(gp_XYZ(0, 0, z) * rotation_matrix); + } + } + // TODO: Do the same for conical surfaces, but they are rare in IFC. + } + _normals.push_back(normal.X()); + _normals.push_back(normal.Y()); + _normals.push_back(normal.Z()); + } + } + + const Poly_Array1OfTriangle& triangles = tri->Triangles(); + for (int i = 1; i <= triangles.Length(); ++i) { + int n1, n2, n3; + if (face.Orientation() == TopAbs_REVERSED) + triangles(i).Get(n3, n2, n1); + else triangles(i).Get(n1, n2, n3); + + /* An alternative would be to calculate normals based + * on the coordinates of the mesh vertices */ + /* + const gp_XYZ pt1 = coords[n1-1]; + const gp_XYZ pt2 = coords[n2-1]; + const gp_XYZ pt3 = coords[n3-1]; + const gp_XYZ v1 = pt2-pt1; + const gp_XYZ v2 = pt3-pt2; + gp_Dir normal = gp_Dir(v1^v2); + _normals.push_back((float)normal.X()); + _normals.push_back((float)normal.Y()); + _normals.push_back((float)normal.Z()); + */ + + _faces.push_back(dict[n1]); + _faces.push_back(dict[n2]); + _faces.push_back(dict[n3]); + + _material_ids.push_back(surface_style_id); + + addEdge(dict[n1], dict[n2], edgecount, edges_temp); + addEdge(dict[n2], dict[n3], edgecount, edges_temp); + addEdge(dict[n3], dict[n1], edgecount, edges_temp); + } + for (std::vector >::const_iterator jt = edges_temp.begin(); jt != edges_temp.end(); ++jt) { + if (edgecount[*jt] == 1) { + // non manifold edge, face boundary + _edges.push_back(jt->first); + _edges.push_back(jt->second); + } + } + } + } + + if (!_normals.empty() && settings().get(IfcGeom::IteratorSettings::GENERATE_UVS)) { + uvs_ = box_project_uvs(_verts, _normals); + } + + if (num_faces == 0) { + // Edges are only emitted if there are no faces. A mixed representation of faces + // and loose edges is discouraged by the standard. An alternative would be to use + // TopExp_Explorer texp(s, TopAbs_EDGE, TopAbs_FACE) to find edges that do not + // belong to any face. + for (TopExp_Explorer texp(s, TopAbs_EDGE); texp.More(); texp.Next()) { + BRepAdaptor_Curve crv(TopoDS::Edge(texp.Current())); + GCPnts_QuasiUniformDeflection tessellater(crv, settings().deflection_tolerance()); + int n = tessellater.NbPoints(); + int previous = -1; + + for (int i = 1; i <= n; ++i) { + gp_XYZ p = tessellater.Value(i).XYZ(); + + int current = addVertex(surface_style_id, p); + + std::vector> segments; + if (i > 1) { + segments.push_back(std::make_pair(previous, current)); + } + + if (settings().get(IfcGeom::IteratorSettings::EDGE_ARROWS)) { + // In case you want direction arrows on your edges + double u = tessellater.Parameter(i); + gp_XYZ p2, p3; + gp_Pnt tmp; + gp_Vec tmp2; + crv.D1(u, tmp, tmp2); + gp_Dir d1, d2, d3, d4; + d1 = tmp2; + if (texp.Current().Orientation() == TopAbs_REVERSED) { + d1 = -d1; + } + if (fabs(d1.Z()) < 0.5) { + d2 = d1.Crossed(gp::DZ()); + } else { + d2 = d1.Crossed(gp::DY()); + } + d3 = d1.XYZ() + d2.XYZ(); + d4 = d1.XYZ() - d2.XYZ(); + p2 = p - d3.XYZ() / 10.; + p3 = p - d4.XYZ() / 10.; + trsf.Transforms(p2); + trsf.Transforms(p3); + trsf.Transforms(p); + + int left = addVertex(surface_style_id, p2); + int right = addVertex(surface_style_id, p3); + + segments.push_back(std::make_pair(left, current)); + segments.push_back(std::make_pair(right, current)); + } + + for (auto& sgmt : segments) { + _edges.push_back(sgmt.first); + _edges.push_back(sgmt.second); + _material_ids.push_back(surface_style_id); + } + + previous = current; + } + } + } + + BRepTools::Clean(s); + } +} + +/// Generates UVs for a single mesh using box projection. +/// @todo Very simple impl. Assumes that input vertices and normals match 1:1. + +std::vector IfcGeom::Representation::Triangulation::box_project_uvs(const std::vector& vertices, const std::vector& normals) +{ + std::vector uvs; + uvs.resize(vertices.size() / 3 * 2); + for (size_t uv_idx = 0, v_idx = 0; + uv_idx < uvs.size() && v_idx < vertices.size() && v_idx < normals.size(); + uv_idx += 2, v_idx += 3) { + + double n_x = normals[v_idx], n_y = normals[v_idx + 1], n_z = normals[v_idx + 2]; + double v_x = vertices[v_idx], v_y = vertices[v_idx + 1], v_z = vertices[v_idx + 2]; + + if (std::abs(n_x) > std::abs(n_y) && std::abs(n_x) > std::abs(n_z)) { + uvs[uv_idx] = v_z; + uvs[uv_idx + 1] = v_y; + } + if (std::abs(n_y) > std::abs(n_x) && std::abs(n_y) > std::abs(n_z)) { + uvs[uv_idx] = v_x; + uvs[uv_idx + 1] = v_z; + } + if (std::abs(n_z) > std::abs(n_x) && std::abs(n_z) > std::abs(n_y)) { + uvs[uv_idx] = v_x; + uvs[uv_idx + 1] = v_y; + } + } + + return uvs; +} + +int IfcGeom::Representation::Triangulation::addVertex(int material_index, const gp_XYZ & p) { + const bool convert = settings().get(IteratorSettings::CONVERT_BACK_UNITS); + const double X = convert ? (p.X() / settings().unit_magnitude()) : p.X(); + const double Y = convert ? (p.Y() / settings().unit_magnitude()) : p.Y(); + const double Z = convert ? (p.Z() / settings().unit_magnitude()) : p.Z(); + int i = (int)_verts.size() / 3; + if (settings().get(IteratorSettings::WELD_VERTICES)) { + const VertexKey key = std::make_pair(material_index, std::make_pair(X, std::make_pair(Y, Z))); + typename VertexKeyMap::const_iterator it = welds.find(key); + if (it != welds.end()) return it->second; + i = (int)(welds.size() + weld_offset_); + welds[key] = i; + } + _verts.push_back(X); + _verts.push_back(Y); + _verts.push_back(Z); + return i; +} + +void IfcGeom::Representation::Triangulation::addEdge(int n1, int n2, std::map, int>& edgecount, std::vector>& edges_temp) { + const Edge e = Edge((std::min)(n1, n2), (std::max)(n1, n2)); + if (edgecount.find(e) == edgecount.end()) edgecount[e] = 1; + else edgecount[e] ++; + edges_temp.push_back(e); +} diff --git a/src/ifcgeom_schema_agnostic/IfcGeomRepresentation.h b/src/ifcgeom_schema_agnostic/IfcGeomRepresentation.h new file mode 100644 index 0000000000..ecb71f374c --- /dev/null +++ b/src/ifcgeom_schema_agnostic/IfcGeomRepresentation.h @@ -0,0 +1,187 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#ifndef IFCGEOMREPRESENTATION_H +#define IFCGEOMREPRESENTATION_H + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include "../ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h" +#include "../ifcgeom_schema_agnostic/IfcGeomMaterial.h" +#include "../ifcgeom_schema_agnostic/IfcRepresentationShapeItem.h" + +#include + +#include + +namespace IfcGeom { + + namespace Representation { + + class IFC_GEOM_API Representation { + Representation(const Representation&); //N/A + Representation& operator =(const Representation&); //N/A + protected: + const ElementSettings settings_; + public: + explicit Representation(const ElementSettings& settings) + : settings_(settings) + {} + const ElementSettings& settings() const { return settings_; } + virtual ~Representation() {} + }; + + class IFC_GEOM_API BRep : public Representation { + private: + std::string id_; + const IfcGeom::IfcRepresentationShapeItems shapes_; + BRep(const BRep& other); + BRep& operator=(const BRep& other); + public: + BRep(const ElementSettings& settings, const std::string& id, const IfcGeom::IfcRepresentationShapeItems& shapes) + : Representation(settings) + , id_(id) + , shapes_(shapes) + {} + virtual ~BRep() {} + IfcGeom::IfcRepresentationShapeItems::const_iterator begin() const { return shapes_.begin(); } + IfcGeom::IfcRepresentationShapeItems::const_iterator end() const { return shapes_.end(); } + const IfcGeom::IfcRepresentationShapeItems& shapes() const { return shapes_; } + const std::string& id() const { return id_; } + TopoDS_Compound as_compound(bool force_meters = false) const; + + bool calculate_volume(double&) const; + bool calculate_surface_area(double&) const; + bool calculate_projected_surface_area(const gp_Ax3& ax, double& along_x, double& along_y, double& along_z) const; + }; + + class IFC_GEOM_API Serialization : public Representation { + private: + std::string id_; + std::string brep_data_; + std::vector surface_styles_; + std::vector surface_style_ids_; + public: + const std::string& brep_data() const { return brep_data_; } + const std::vector& surface_styles() const { return surface_styles_; } + const std::vector& surface_style_ids() const { return surface_style_ids_; } + Serialization(const BRep& brep); + virtual ~Serialization() {} + const std::string& id() const { return id_; } + private: + Serialization(); + Serialization(const Serialization&); + Serialization& operator=(const Serialization&); + }; + + class Triangulation : public Representation { + private: + // A nested pair of floats and a material index to be able to store an XYZ coordinate in a map. + // TODO: Make this a std::tuple when compilers add support for that. + typedef typename std::pair > Coordinate; + typedef typename std::pair VertexKey; + typedef std::map VertexKeyMap; + typedef std::pair Edge; + + std::string id_; + std::vector _verts; + std::vector _faces; + std::vector _edges; + std::vector _normals; + std::vector uvs_; + std::vector _material_ids; + std::vector _materials; + size_t weld_offset_; + VertexKeyMap welds; + + // when read from serialization, the element needs to take ownership of the styles, + // the material vector is constructor off of this. + // @todo this can be improved + std::vector> styles_; + + public: + const std::string& id() const { return id_; } + const std::vector& verts() const { return _verts; } + const std::vector& faces() const { return _faces; } + const std::vector& edges() const { return _edges; } + const std::vector& normals() const { return _normals; } + const std::vector& uvs() const { return uvs_; } + const std::vector& material_ids() const { return _material_ids; } + const std::vector& materials() const { return _materials; } + + Triangulation(const BRep& shape_model); + + Triangulation( + ElementSettings settings, + const std::string& id, + const std::vector& verts, + const std::vector& faces, + const std::vector& edges, + const std::vector& normals, + const std::vector& uvs, + const std::vector& material_ids, + const std::vector>& styles) + : Representation(settings) + , id_(id) + , _verts(verts) + , _faces(faces) + , _edges(edges) + , _normals(normals) + , uvs_(uvs) + , _material_ids(material_ids) + , styles_(styles) + { + for (auto& s : styles_) { + _materials.push_back(IfcGeom::Material(s)); + } + } + + virtual ~Triangulation() {} + + /// Generates UVs for a single mesh using box projection. + /// @todo Very simple impl. Assumes that input vertices and normals match 1:1. + static std::vector box_project_uvs(const std::vector &vertices, const std::vector &normals); + + private: + /// Welds vertices that belong to different faces + int addVertex(int material_index, const gp_XYZ& p); + void addEdge(int n1, int n2, std::map, int>& edgecount, std::vector >& edges_temp); + + Triangulation(); + Triangulation(const Triangulation&); + Triangulation& operator=(const Triangulation&); + }; + + } +} + +#endif diff --git a/src/ifcgeom/IfcGeomShapeType.h b/src/ifcgeom_schema_agnostic/IfcGeomShapeType.h similarity index 100% rename from src/ifcgeom/IfcGeomShapeType.h rename to src/ifcgeom_schema_agnostic/IfcGeomShapeType.h diff --git a/src/ifcgeom/IfcGeomTree.h b/src/ifcgeom_schema_agnostic/IfcGeomTree.h similarity index 99% rename from src/ifcgeom/IfcGeomTree.h rename to src/ifcgeom_schema_agnostic/IfcGeomTree.h index eb586c27e0..4f0fae3335 100644 --- a/src/ifcgeom/IfcGeomTree.h +++ b/src/ifcgeom_schema_agnostic/IfcGeomTree.h @@ -21,7 +21,8 @@ #define IFCGEOMTREE_H #include "../ifcparse/IfcFile.h" -#include "../ifcgeom/IfcGeomElement.h" + +#include "../ifcgeom_schema_agnostic/IfcGeomElement.h" #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" #include "../ifcgeom_schema_agnostic/IfcGeomMaterial.h" #include "../ifcgeom_schema_agnostic/Kernel.h" @@ -46,6 +47,7 @@ namespace IfcGeom { IfcUtil::IfcBaseEntity* instance; std::array position; std::array normal; + double ray_distance; double dot_product; }; @@ -467,6 +469,7 @@ namespace IfcGeom { ordered.insert({ u, { u, sidx, c, {P.X(), P.Y(), P.Z()}, {V.X(), V.Y(), V.Z()}, + d.XYZ().Dot(p0.XYZ() - P.XYZ()), V.Dot(d) } }); } diff --git a/src/ifcgeom/IfcRepresentationShapeItem.h b/src/ifcgeom_schema_agnostic/IfcRepresentationShapeItem.h similarity index 100% rename from src/ifcgeom/IfcRepresentationShapeItem.h rename to src/ifcgeom_schema_agnostic/IfcRepresentationShapeItem.h diff --git a/src/ifcgeom_schema_agnostic/IteratorCache.h b/src/ifcgeom_schema_agnostic/IteratorCache.h new file mode 100644 index 0000000000..2f92028359 --- /dev/null +++ b/src/ifcgeom_schema_agnostic/IteratorCache.h @@ -0,0 +1,31 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#ifndef ITERATOR_CACHE_H +#define ITERATOR_CACHE_H + +namespace IfcGeom { + + class IteratorCache { + + }; + +} + +#endif \ No newline at end of file diff --git a/src/ifcgeom_schema_agnostic/IteratorImplementation.h b/src/ifcgeom_schema_agnostic/IteratorImplementation.h index 5639f8c743..fc9ca78aeb 100644 --- a/src/ifcgeom_schema_agnostic/IteratorImplementation.h +++ b/src/ifcgeom_schema_agnostic/IteratorImplementation.h @@ -20,10 +20,11 @@ #ifndef ITERATOR_IMPLEMENTATION_H #define ITERATOR_IMPLEMENTATION_H +#include "../ifcparse/IfcFile.h" + #include "../ifcgeom_schema_agnostic/IfcGeomFilter.h" #include "../ifcgeom_schema_agnostic/GeometrySerializer.h" -#include "../ifcparse/IfcFile.h" -#include "../ifcgeom/IfcGeomIteratorSettings.h" +#include "../ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h" #include @@ -49,7 +50,7 @@ public: IfcGeom::IteratorImplementation* construct(const std::string& schema_name, const IfcGeom::IteratorSettings&, IfcParse::IfcFile*, const std::vector&, int); }; -IteratorFactoryImplementation& iterator_implementations(); +IFC_GEOM_API IteratorFactoryImplementation& iterator_implementations(); namespace IfcGeom { diff --git a/src/ifcgeom_schema_agnostic/Kernel.cpp b/src/ifcgeom_schema_agnostic/Kernel.cpp index 1de3d8e335..385979c555 100644 --- a/src/ifcgeom_schema_agnostic/Kernel.cpp +++ b/src/ifcgeom_schema_agnostic/Kernel.cpp @@ -353,4 +353,70 @@ bool IfcGeom::Kernel::is_manifold(const TopoDS_Shape& a) { return true; } -} \ No newline at end of file +} + +bool IfcGeom::util::is_nested_compound_of_solid(const TopoDS_Shape& s, int depth) { + if (s.ShapeType() == TopAbs_COMPOUND) { + TopoDS_Iterator it(s); + for (; it.More(); it.Next()) { + if (!is_nested_compound_of_solid(it.Value(), depth + 1)) { + return false; + } + } + return true; + } else if (s.ShapeType() == TopAbs_SOLID) { + return depth > 0; + } else { + return false; + } +} + +namespace { + template struct dimension_count {}; + template <> struct dimension_count { static const int n = 2; }; + template <> struct dimension_count { static const int n = 2; }; + template <> struct dimension_count < gp_Trsf > { static const int n = 3; }; + template <> struct dimension_count < gp_GTrsf > { static const int n = 3; }; + + template + bool is_identity_helper(const T& t, double tolerance) { + // Note the {1, n+1} range due to Open Cascade's 1-based indexing + // Note the {1, n+2} range due to the translation part of the matrix + for (int i = 1; i < dimension_count::n + 2; ++i) { + for (int j = 1; j < dimension_count::n + 1; ++j) { + const double iden_value = i == j ? 1. : 0.; + const double trsf_value = t.Value(j, i); + if (fabs(trsf_value - iden_value) > tolerance) { + return false; + } + } + } + return true; + } +} + +bool IfcGeom::Kernel::is_identity(const gp_Trsf2d& t, double tolerance) { + return is_identity_helper(t, tolerance); +} + +bool IfcGeom::Kernel::is_identity(const gp_GTrsf2d& t, double tolerance) { + return is_identity_helper(t, tolerance); +} + +bool IfcGeom::Kernel::is_identity(const gp_Trsf& t, double tolerance) { + return is_identity_helper(t, tolerance); +} + +bool IfcGeom::Kernel::is_identity(const gp_GTrsf& t, double tolerance) { + return is_identity_helper(t, tolerance); +} + +gp_Trsf IfcGeom::Kernel::combine_offset_and_rotation(const gp_Vec & offset, const gp_Quaternion & rotation) { + auto offset_transform = gp_Trsf{}; + offset_transform.SetTranslation(offset); + + auto rotation_transform = gp_Trsf{}; + rotation_transform.SetRotation(rotation); + + return rotation_transform * offset_transform; +} diff --git a/src/ifcgeom_schema_agnostic/Kernel.h b/src/ifcgeom_schema_agnostic/Kernel.h index ceb6174755..4d961cded0 100644 --- a/src/ifcgeom_schema_agnostic/Kernel.h +++ b/src/ifcgeom_schema_agnostic/Kernel.h @@ -2,8 +2,8 @@ #define ITERATOR_KERNEL_H #include "../ifcparse/IfcFile.h" -#include "../ifcgeom/IfcGeomIteratorSettings.h" -#include "../ifcgeom/IfcRepresentationShapeItem.h" +#include "../ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h" +#include "../ifcgeom_schema_agnostic/IfcRepresentationShapeItem.h" #ifdef HAS_SCHEMA_2x3 #include "../ifcparse/Ifc2x3.h" @@ -33,6 +33,19 @@ #include #include +#include +#include +#include +#include +#include +#include + +static const double ALMOST_ZERO = 1.e-9; + +template +inline static bool ALMOST_THE_SAME(const T& a, const T& b, double tolerance = ALMOST_ZERO) { + return fabs(a - b) < tolerance; +} namespace IfcGeom { @@ -83,7 +96,7 @@ namespace IfcGeom { GV_BOOLEAN_ATTEMPT_2D }; - Kernel(IfcParse::IfcFile* file_); + IFC_PARSE_API Kernel(IfcParse::IfcFile* file_); virtual ~Kernel() {} @@ -110,12 +123,38 @@ namespace IfcGeom { return implementation_->convert_placement(item, trsf); } - static int count(const TopoDS_Shape&, TopAbs_ShapeEnum, bool unique=false); - static int surface_genus(const TopoDS_Shape&); + IFC_PARSE_API static int count(const TopoDS_Shape&, TopAbs_ShapeEnum, bool unique = false); + IFC_PARSE_API static int surface_genus(const TopoDS_Shape&); - static bool is_manifold(const TopoDS_Shape& a); - static IfcUtil::IfcBaseEntity* get_decomposing_entity(IfcUtil::IfcBaseEntity*, bool include_openings=true); - static std::map get_layers(IfcUtil::IfcBaseEntity*); + IFC_PARSE_API static bool is_manifold(const TopoDS_Shape& a); + IFC_PARSE_API static IfcUtil::IfcBaseEntity* get_decomposing_entity(IfcUtil::IfcBaseEntity*, bool include_openings = true); + IFC_PARSE_API static std::map get_layers(IfcUtil::IfcBaseEntity*); + + // For axis placements detect equality early in order for the + // relatively computionaly expensive gp_Trsf calculation to be skipped + IFC_PARSE_API static bool axis_equal(const gp_Ax3& a, const gp_Ax3& b, double tolerance) { + if (!a.Location().IsEqual(b.Location(), tolerance)) return false; + // Note that the tolerance below is angular, above is linear. Since architectural + // objects are about 1m'ish in scale, it should be somewhat equivalent. Besides, + // this is mostly a filter for NULL or default values in the placements. + if (!a.Direction().IsEqual(b.Direction(), tolerance)) return false; + if (!a.XDirection().IsEqual(b.XDirection(), tolerance)) return false; + if (!a.YDirection().IsEqual(b.YDirection(), tolerance)) return false; + return true; + } + + IFC_PARSE_API static bool axis_equal(const gp_Ax2d& a, const gp_Ax2d& b, double tolerance) { + if (!a.Location().IsEqual(b.Location(), tolerance)) return false; + if (!a.Direction().IsEqual(b.Direction(), tolerance)) return false; + return true; + } + + IFC_PARSE_API static bool is_identity(const gp_Trsf2d& t, double tolerance); + IFC_PARSE_API static bool is_identity(const gp_GTrsf2d& t, double tolerance); + IFC_PARSE_API static bool is_identity(const gp_Trsf& t, double tolerance); + IFC_PARSE_API static bool is_identity(const gp_GTrsf& t, double tolerance); + + IFC_PARSE_API static gp_Trsf combine_offset_and_rotation(const gp_Vec &offset, const gp_Quaternion& rotation); }; namespace impl { @@ -130,6 +169,28 @@ namespace IfcGeom { KernelFactoryImplementation& kernel_implementations(); } + + namespace util { + bool is_nested_compound_of_solid(const TopoDS_Shape& s, int depth = 0); + } + + class IFC_GEOM_API geometry_exception : public std::exception { + protected: + std::string message; + public: + geometry_exception(const std::string& m) + : message(m) {} + virtual ~geometry_exception() throw () {} + virtual const char* what() const throw() { + return message.c_str(); + } + }; + + class IFC_GEOM_API too_many_faces_exception : public geometry_exception { + public: + too_many_faces_exception() + : geometry_exception("Too many faces for operation") {} + }; } #endif \ No newline at end of file diff --git a/src/ifcgeom_schema_agnostic/Serialization.h b/src/ifcgeom_schema_agnostic/Serialization.h index be3d79bd3f..5e7d4c82c6 100644 --- a/src/ifcgeom_schema_agnostic/Serialization.h +++ b/src/ifcgeom_schema_agnostic/Serialization.h @@ -1,6 +1,7 @@ -#include "../ifcgeom/ifc_geom_api.h" #include "../ifcparse/IfcBaseClass.h" +#include "../ifcgeom_schema_agnostic/ifc_geom_api.h" + #include #include diff --git a/src/ifcgeom_schema_agnostic/boolean_utils.cpp b/src/ifcgeom_schema_agnostic/boolean_utils.cpp new file mode 100644 index 0000000000..509d7d63a7 --- /dev/null +++ b/src/ifcgeom_schema_agnostic/boolean_utils.cpp @@ -0,0 +1,777 @@ +#include "boolean_utils.h" + +#include "../ifcgeom_schema_agnostic/IfcGeomTree.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +void IfcGeom::util::copy_operand(const TopTools_ListOfShape & l, TopTools_ListOfShape & r) { +#if OCC_VERSION_HEX < 0x70000 + TopTools_ListIteratorOfListOfShape it(l); + for (; it.More(); it.Next()) { + r.Append(BRepBuilderAPI_Copy(it.Value())); + } +#else + // On OCCT 7.0 and higher BRepAlgoAPI_BuilderAlgo::SetNonDestructive(true) is + // called. Not entirely sure on the behaviour before 7.0, so overcautiously + // create copies. + r.Assign(l); +#endif +} + +TopoDS_Shape IfcGeom::util::copy_operand(const TopoDS_Shape & s) { +#if OCC_VERSION_HEX < 0x70000 + return BRepBuilderAPI_Copy(s); +#else + return s; +#endif +} + +double IfcGeom::util::min_edge_length(const TopoDS_Shape & a) { + double min_edge_len = std::numeric_limits::infinity(); + TopExp_Explorer exp(a, TopAbs_EDGE); + for (; exp.More(); exp.Next()) { + GProp_GProps prop; + BRepGProp::LinearProperties(exp.Current(), prop); + double l = prop.Mass(); + if (l < min_edge_len) { + min_edge_len = l; + } + } + return min_edge_len; +} + +double IfcGeom::util::min_vertex_edge_distance(const TopoDS_Shape & a, double min_search, double max_search) { + double M = std::numeric_limits::infinity(); + + TopTools_IndexedMapOfShape vertices, edges; + + TopExp::MapShapes(a, TopAbs_VERTEX, vertices); + TopExp::MapShapes(a, TopAbs_EDGE, edges); + + IfcGeom::impl::tree tree; + + // Add edges to tree + for (int i = 1; i <= edges.Extent(); ++i) { + tree.add(i, edges(i)); + } + + for (int j = 1; j <= vertices.Extent(); ++j) { + const TopoDS_Vertex& v = TopoDS::Vertex(vertices(j)); + gp_Pnt p = BRep_Tool::Pnt(v); + + Bnd_Box b; + b.Add(p); + b.Enlarge(max_search); + + std::vector edge_idxs = tree.select_box(b, false); + std::vector::const_iterator it = edge_idxs.begin(); + for (; it != edge_idxs.end(); ++it) { + const TopoDS_Edge& e = TopoDS::Edge(edges(*it)); + TopoDS_Vertex v1, v2; + TopExp::Vertices(e, v1, v2); + + if (v.IsSame(v1) || v.IsSame(v2)) { + continue; + } + + BRepAdaptor_Curve crv(e); + Extrema_ExtPC ext(p, crv); + if (!ext.IsDone()) { + continue; + } + + for (int i = 1; i <= ext.NbExt(); ++i) { + const double m = sqrt(ext.SquareDistance(i)); + if (m < M && m > min_search) { + M = m; + } + } + } + } + + return M; +} + +bool IfcGeom::util::faces_overlap(const TopoDS_Face & f, const TopoDS_Face & g) { + points_on_planar_face_generator pgen(f); + + BRep_Builder B; + gp_Pnt test; + double eps = BRep_Tool::Tolerance(f) + BRep_Tool::Tolerance(g); + + BRepExtrema_DistShapeShape x; + x.LoadS1(g); + + while (pgen(test)) { + TopoDS_Vertex V; + B.MakeVertex(V, test, Precision::Confusion()); + x.LoadS2(V); + x.Perform(); + if (x.IsDone() && x.NbSolution() == 1) { + if (x.Value() > eps) { + return false; + } + } + } + + return true; +} + +double IfcGeom::util::min_face_face_distance(const TopoDS_Shape & a, double max_search) { + /* + NB: This is currently only implemented for planar surfaces. + */ + double M = std::numeric_limits::infinity(); + + TopTools_IndexedMapOfShape faces; + + TopExp::MapShapes(a, TopAbs_FACE, faces); + + IfcGeom::impl::tree tree; + + // Add faces to tree + for (int i = 1; i <= faces.Extent(); ++i) { + if (BRep_Tool::Surface(TopoDS::Face(faces(i)))->DynamicType() == STANDARD_TYPE(Geom_Plane)) { + tree.add(i, faces(i)); + } + } + + for (int j = 1; j <= faces.Extent(); ++j) { + const TopoDS_Face& f = TopoDS::Face(faces(j)); + const Handle(Geom_Surface)& fs = BRep_Tool::Surface(f); + + if (fs->DynamicType() != STANDARD_TYPE(Geom_Plane)) { + continue; + } + + points_on_planar_face_generator pgen(f); + + Bnd_Box b; + BRepBndLib::AddClose(f, b); + b.Enlarge(max_search); + + std::vector face_idxs = tree.select_box(b, false); + std::vector::const_iterator it = face_idxs.begin(); + for (; it != face_idxs.end(); ++it) { + if (*it == j) { + continue; + } + + const TopoDS_Face& g = TopoDS::Face(faces(*it)); + const Handle(Geom_Surface)& gs = BRep_Tool::Surface(g); + + auto p0 = Handle(Geom_Plane)::DownCast(fs); + auto p1 = Handle(Geom_Plane)::DownCast(gs); + + if (p0->Position().IsCoplanar(p1->Position(), max_search, asin(max_search))) { + pgen.reset(); + + BRepTopAdaptor_FClass2d cls(g, BRep_Tool::Tolerance(g)); + + gp_Pnt test; + while (pgen(test)) { + gp_Vec d = test.XYZ() - p1->Position().Location().XYZ(); + double u = d.Dot(p1->Position().XDirection()); + double v = d.Dot(p1->Position().YDirection()); + + // nb: TopAbs_ON is explicitly not considered to prevent matching adjacent faces + // with similar orientations. + if (cls.Perform(gp_Pnt2d(u, v)) == TopAbs_IN) { + gp_Pnt test2; + p1->D0(u, v, test2); + double w = std::abs(gp_Vec(p1->Position().Direction().XYZ()).Dot(test2.XYZ() - test.XYZ())); + if (w < M) { + M = w; + } + } + } + } + } + } + + return M; +} + +int IfcGeom::util::bounding_box_overlap(double p, const TopoDS_Shape & a, const TopTools_ListOfShape & b, TopTools_ListOfShape & c) { + int N = 0; + + Bnd_Box A; + BRepBndLib::Add(a, A); + + if (A.IsVoid()) { + return 0; + } + + TopTools_ListIteratorOfListOfShape it(b); + for (; it.More(); it.Next()) { + Bnd_Box B; + BRepBndLib::Add(it.Value(), B); + + if (B.IsVoid()) { + continue; + } + + if (A.Distance(B) < p) { + c.Append(it.Value()); + } else { + ++N; + } + } + + return N; +} + +bool IfcGeom::util::get_edge_axis(const TopoDS_Edge & e, gp_Ax1 & ax) { + double _, __; + + auto crv = BRep_Tool::Curve(e, _, __); + auto line = Handle_Geom_Line::DownCast(crv); + auto bsple = Handle_Geom_BSplineCurve::DownCast(crv); + + if (line) { + ax = line->Position(); + return true; + } else if (bsple) { + if (bsple->NbPoles() == 2 && bsple->Degree() == 1) { + gp_Dir V(bsple->Poles().Last().XYZ() - bsple->Poles().First().XYZ()); + ax = gp_Ax1(bsple->Poles().First(), V); + return true; + } + } + + return false; +} + +bool IfcGeom::util::is_subset(const TopTools_IndexedMapOfShape & lhs, const TopTools_IndexedMapOfShape & rhs) { + if (rhs.Extent() < lhs.Extent()) { + return false; + } + for (int i = 1; i < lhs.Extent(); ++i) { + auto& s = lhs.FindKey(i); + if (!rhs.Contains(s)) { + return false; + } + } + return true; +} + +bool IfcGeom::util::is_extrusion(const gp_Vec & v, const TopoDS_Shape & s, TopoDS_Face & base, std::pair& interval) { + // This assumes UnifySameDomain has been processed on s, so that + // the extrusion top and bottom are a single face. + + TopTools_IndexedDataMapOfShapeListOfShape mapping; + TopExp::MapShapesAndAncestors(s, TopAbs_EDGE, TopAbs_FACE, mapping); + TopExp::MapShapesAndAncestors(s, TopAbs_VERTEX, TopAbs_FACE, mapping); + + TopTools_ListOfShape parallel; + TopTools_IndexedMapOfShape curved_orthogonal; + gp_Ax1 ax; + gp_Ax1 V(gp::Origin(), v); + + // Segment edges in parallel to extrusion direction, and orthogonal or curved, + // where the latter two categories have to make the edges part of the base or + // top face. When neither of these categories the shape is not a extrusion + // or the extrusion direction is not orthogonal to its basis. + for (int i = 1; i < mapping.Extent(); ++i) { + auto& s = mapping.FindKey(i); + if (s.ShapeType() != TopAbs_EDGE) { + continue; + } + + // @todo use a linear tolernace and the face extrimities, see #2218 + const TopoDS_Edge& e = TopoDS::Edge(s); + if (!get_edge_axis(e, ax)) { + // curved + curved_orthogonal.Add(e); + } else if (ax.IsParallel(V, 1.e-7)) { + parallel.Append(e); + } else if (ax.IsNormal(V, 1.e-7)) { + // ortho + curved_orthogonal.Add(e); + } else { + return false; + } + } + + // Select the two faces for which their edges are subsets + // of the ortho/curved edges + TopTools_IndexedMapOfShape ortho_faces; + for (TopExp_Explorer exp(s, TopAbs_FACE); exp.More(); exp.Next()) { + TopTools_IndexedMapOfShape face_edges; + TopExp::MapShapes(exp.Current(), TopAbs_EDGE, face_edges); + if (is_subset(face_edges, curved_orthogonal)) { + ortho_faces.Add(exp.Current()); + } + } + + // There should be a basis and top face + if (ortho_faces.Extent() != 2) { + return false; + } + + // For the parallel edges assert that its two vertices are part + // of both the basis and the top face. + for (TopTools_ListIteratorOfListOfShape it(parallel); + it.More(); it.Next()) { + TopoDS_Vertex v01[2]; + TopExp::Vertices(TopoDS::Edge(it.Value()), v01[0], v01[1]); + + TopTools_IndexedMapOfShape v_ortho_faces; + int nb_ortho_faces[2] = { 0,0 }; + + for (int i = 0; i < 2; ++i) { + auto& faces = mapping.FindFromKey(v01[i]); + + for (TopTools_ListIteratorOfListOfShape jt(faces); + jt.More(); jt.Next()) { + if (ortho_faces.Contains(jt.Value())) { + nb_ortho_faces[i] ++; + v_ortho_faces.Add(jt.Value()); + } + } + } + + bool sets_equal = v_ortho_faces.Size() == ortho_faces.Size() && is_subset(v_ortho_faces, ortho_faces); + if (!sets_equal) { + return false; + } + } + + // Assert the base/top faces are planar and get the interval + // (dot products along axis) for which the extrusion is defined + // If necessary swap the two faces so that the basis face has + // the smallest dot product along the axis. + auto f0 = TopoDS::Face(ortho_faces.FindKey(1)); + auto f1 = TopoDS::Face(ortho_faces.FindKey(2)); + + const Handle(Geom_Surface)& f0_s = BRep_Tool::Surface(f0); + const Handle(Geom_Surface)& f1_s = BRep_Tool::Surface(f1); + + auto p0 = Handle(Geom_Plane)::DownCast(f0_s); + auto p1 = Handle(Geom_Plane)::DownCast(f1_s); + + if (p0.IsNull() || p1.IsNull()) { + return false; + } + + auto dot0 = p0->Location().XYZ().Dot(v.XYZ()); + auto dot1 = p1->Location().XYZ().Dot(v.XYZ()); + + if (dot0 > dot1) { + std::swap(dot0, dot1); + std::swap(f0, f1); + } + + base = f0; + interval = { dot0, dot1 }; + + return true; +} + +int IfcGeom::util::eliminate_touching_operands(double prec, const TopoDS_Shape & a, const TopTools_ListOfShape & bs, TopTools_ListOfShape & c) { + TopTools_IndexedMapOfShape a_faces; + TopExp::MapShapes(a, TopAbs_FACE, a_faces); + + // Check if any of the faces in a are non-planar, which is + // not supported by this quick check. + for (int i = 1; i <= a_faces.Extent(); ++i) { + auto surf = BRep_Tool::Surface(TopoDS::Face(a_faces(i))); + if (surf->DynamicType() != STANDARD_TYPE(Geom_Plane)) { + return 0; + } + } + + TopTools_IndexedMapOfShape a_vertices; + TopExp::MapShapes(a, TopAbs_VERTEX, a_vertices); + + IfcGeom::impl::tree tree; + + // Add faces to tree + for (int i = 1; i <= a_faces.Extent(); ++i) { + tree.add(i, a_faces(i)); + } + + int N = 0; + + TopTools_ListIteratorOfListOfShape it(bs); + for (; it.More(); it.Next()) { + bool is_touching = false; + + auto& b = it.Value(); + + TopTools_IndexedMapOfShape b_faces; + TopExp::MapShapes(b, TopAbs_FACE, b_faces); + + // Check if any of the faces in b are non-planar, which is + // not supported by this quick check. + for (int i = 1; i <= b_faces.Extent(); ++i) { + auto surf = BRep_Tool::Surface(TopoDS::Face(b_faces(i))); + if (surf->DynamicType() != STANDARD_TYPE(Geom_Plane)) { + continue; + } + } + + TopTools_IndexedMapOfShape b_vertices; + TopExp::MapShapes(b, TopAbs_VERTEX, b_vertices); + + for (int k = 1; k <= b_faces.Extent(); ++k) { + const TopoDS_Face& f_b = TopoDS::Face(b_faces(k)); + Bnd_Box B; + BRepBndLib::Add(f_b, B); + + // Query tree using b_face bounding box + for (auto& i : tree.select_box(B, false)) { + const TopoDS_Face& f_a = TopoDS::Face(a_faces(i)); + + TopTools_IndexedMapOfShape f_a_vertices; + TopExp::MapShapes(f_a, TopAbs_VERTEX, f_a_vertices); + + BRepGProp_Face prop_a(f_a); + BRepGProp_Face prop_b(f_b); + + gp_Pnt p_a, p_b; + gp_Vec v_a, v_b; + + double u0, u1, v0, v1; + prop_a.Bounds(u0, u1, v0, v1); + prop_a.Normal((u0 + u1) / 2., (u0 + u1) / 2., p_a, v_a); + + prop_b.Bounds(u0, u1, v0, v1); + prop_b.Normal((u0 + u1) / 2., (u0 + u1) / 2., p_b, v_b); + + bool all_vertices_behind_f_a = true; + + // Check if all 'other' vertices in a are pointing + // away from the face in a, so that there is no geometry + // from a in front of the face that could participate + // in the boolean subtraction. + for (int j = 1; j <= a_vertices.Extent(); ++j) { + if (!f_a_vertices.Contains(a_vertices(j))) { + auto p = BRep_Tool::Pnt(TopoDS::Vertex(a_vertices(j))); + if ((p.XYZ() - p_a.XYZ()).Dot(v_a.XYZ()) > prec) { + all_vertices_behind_f_a = false; + break; + } + } + } + + if (!all_vertices_behind_f_a) { + continue; + } + + // Check if surface normals are opposite + if (v_a.IsOpposite(v_b, 1.e-5)) { + // Check if faces are co-planar + if ((p_b.XYZ() - p_a.XYZ()).Dot(v_a.XYZ()) <= prec) { + + TopTools_IndexedMapOfShape f_b_vertices; + TopExp::MapShapes(f_b, TopAbs_VERTEX, f_b_vertices); + + bool all_vertices_behind_f_b = true; + + // Check if all 'other' vertices in b are pointing + // away from the face in a. So that a boolean subtraction + // would not alter a. + for (int j = 1; j <= b_vertices.Extent(); ++j) { + if (!f_b_vertices.Contains(b_vertices(j))) { + auto p = BRep_Tool::Pnt(TopoDS::Vertex(b_vertices(j))); + if ((p.XYZ() - p_a.XYZ()).Dot(v_a.XYZ()) < prec * 10.) { + all_vertices_behind_f_b = false; + break; + } + } + } + + if (all_vertices_behind_f_b) { + is_touching = true; + break; + } + + } + } + } + + if (is_touching) { + break; + } + } + + if (!is_touching) { + c.Append(it.Value()); + } else { + ++N; + } + } + + return N; +} + +TopoDS_Shape IfcGeom::util::unify(const TopoDS_Shape & s, double tolerance) { + tolerance = (std::min)(min_edge_length(s) / 2., tolerance); + ShapeUpgrade_UnifySameDomain usd(s); +#if OCC_VERSION_HEX >= 0x70200 + usd.SetSafeInputMode(true); +#endif +#if OCC_VERSION_HEX >= 0x70100 + usd.SetLinearTolerance(tolerance); + usd.SetAngularTolerance(1.e-3); +#endif + usd.Build(); + return usd.Shape(); +} + +bool IfcGeom::util::boolean_subtraction_2d_using_builder(const TopoDS_Shape & a_input, const TopTools_ListOfShape & b_input, TopoDS_Shape & result, double eps) { + IfcGeom::impl::tree edge_tree; + + TopTools_ListOfShape ab_input = b_input; + ab_input.Prepend(a_input); + + TopTools_ListIteratorOfListOfShape it(ab_input); + int shape_index = 0; + int edge_index = 0; + std::map edge_index_to_shape_index; + + std::vector shapes; + std::vector> edges; + // First is the outer wire + std::vector wires; + + for (; it.More(); it.Next(), ++shape_index) { + if (it.Value().ShapeType() != TopAbs_FACE) { + return false; + } + + const TopoDS_Face& f = TopoDS::Face(it.Value()); + TopoDS_Wire outer_wire; + + if (shape_index == 0) { + outer_wire = BRepTools::OuterWire(f); + wires.push_back(outer_wire); + } + + size_t num_wires = 0; + TopoDS_Iterator it2(it.Value()); + for (; it2.More(); it2.Next()) { + ++num_wires; + + if (outer_wire.IsNull() || !it2.Value().IsSame(outer_wire)) { + wires.push_back(TopoDS::Wire(it2.Value())); + + if (shape_index == 0 && num_wires > 0) { + // An inner wire on the first operand face: reverse, because + // MakeFace expects inner boundaries to be added as bounded + // areas. + wires.back().Reverse(); + } + } + } + + if (num_wires > 1 && shape_index != 0) { + // The first operand can have inner wires, but the others + // can't because a inner wire would result in an additional + // outer wire for the result. + return false; + } + + shapes.push_back(it.Value()); + TopExp_Explorer exp(it.Value(), TopAbs_EDGE); + for (; exp.More(); exp.Next(), ++edge_index) { + edge_tree.add(edge_index, exp.Current()); + edge_index_to_shape_index[edge_index] = shape_index; + edges.push_back({ shape_index, TopoDS::Edge(exp.Current()) }); + } + } + + shape_index = 0; + edge_index = 0; + + it.Initialize(ab_input); + for (; it.More(); it.Next(), ++shape_index) { + TopExp_Explorer exp(it.Value(), TopAbs_EDGE); + for (; exp.More(); exp.Next(), ++edge_index) { + Bnd_Box b; + BRepBndLib::Add(exp.Current(), b); + b.Enlarge(eps); + + for (auto& i : edge_tree.select_box(b)) { + if (i == edge_index) { + // Skip self-selection + continue; + } + + if (edges[i].first == shape_index) { + // Skip edges of the same operand + continue; + } + + const TopoDS_Edge& e0 = TopoDS::Edge(exp.Current()); + const TopoDS_Edge& e1 = edges[i].second; + + double u11, u12, u21, u22, U1, U2; + + GeomAPI_ExtremaCurveCurve ecc( + BRep_Tool::Curve(e0, u11, u12), + BRep_Tool::Curve(e1, u21, u22) + ); + + // @todo: extend this to work in case of multiple extrema and curved segments. + const bool unbounded_intersects = (!ecc.Extrema().IsParallel() && ecc.NbExtrema() == 1 && ecc.Distance(1) < eps); + if (unbounded_intersects) { + ecc.Parameters(1, U1, U2); + + if (u11 > u12) { + std::swap(u11, u12); + } + if (u21 > u22) { + std::swap(u21, u22); + } + + /// @todo: tfk: probably need different thresholds on non-linear curves + u11 -= eps; + u12 += eps; + u21 -= eps; + u22 += eps; + + if (u11 < U1 && U1 < u12 && u21 < U2 && U2 < u22) { + // Edge curves belonging to different operands intersect, don't process + // using builder. + Logger::Notice("Intersecting boundaries"); + return false; + } + } + } + } + } + + // Only inner wires are considered that are directly contained in the outer wire + // Redundant subtractions are eliminated. + + std::vector redundant(wires.size(), false); + + std::vector wire_faces; + wire_faces.reserve(wires.size()); + + std::vector wire_clss; + wire_clss.reserve(wires.size()); + + std::vector> sass; + sass.reserve(wires.size()); + + for (auto& w : wires) { + wire_faces.push_back(BRepBuilderAPI_MakeFace(w).Face()); + wire_clss.emplace_back(wire_faces.back(), eps); + sass.push_back(std::make_unique(BRep_Tool::Surface(wire_faces.back()))); + } + + // First check for containment in outer wire + for (auto it = ++wires.begin(); it != wires.end(); ++it) { + // Considering a single vertex is sufficient because we have already + // guaranteed that the edges of different operands do not cross. + TopoDS_Iterator it_ed(*it); + auto& ed = it_ed.Value(); + + TopoDS_Iterator it_v(ed); + auto& v = TopoDS::Vertex(it_v.Value()); + + auto pnt = BRep_Tool::Pnt(v); + auto p2d = sass[0]->ValueOfUV(pnt, eps); + if (wire_clss[0].Perform(p2d) != TopAbs_IN) { + // A wire is not contained in the outer wire, it's a subtraction without + // any effect and marked as redundant. Feeding it to the builder algo + // will likely cause problems. + redundant[std::distance(wires.begin(), it)] = true; + Logger::Notice("Subtraction operand outside of outer bound"); + } + } + + // Now build a tree to find inner wires contained in other inner wires + // NB first wire is *not* in this tree + IfcGeom::impl::tree wire_tree; + for (size_t wire_index = 1; wire_index < wires.size(); ++wire_index) { + wire_tree.add(wire_index, wires[wire_index]); + } + + for (size_t wire_index = 1; wire_index < wires.size(); ++wire_index) { + Bnd_Box b; + BRepBndLib::Add(wires[wire_index], b); + b.Enlarge(eps); + + // We're only selecting operands completely within b because we + // have already guaranteed they do not intersect. So they are + // either fully in or out. Selecting with complete_within=true + // will filter out some unnecessary cases. It also means we need + // that due this assymetry we need to process all pairs of wire + // indices and not just the pairs where the first element is less + // than the second element. + for (auto& other_index : wire_tree.select_box(b, true)) { + // other_index is fully contained in wire_index + if (wire_index == other_index) { + continue; + } + + TopoDS_Iterator it_ed(wires[other_index]); + auto& ed = it_ed.Value(); + + TopoDS_Iterator it_v(ed); + auto& v = TopoDS::Vertex(it_v.Value()); + + auto pnt = BRep_Tool::Pnt(v); + auto p2d = sass[wire_index]->ValueOfUV(pnt, eps); + if (wire_clss[wire_index].Perform(p2d) == TopAbs_IN) { + // A wire is contained within another operand + redundant[other_index] = true; + Logger::Notice("Subtraction operand contained in other"); + } + } + } + + BRepBuilderAPI_MakeFace mf(wire_faces[0]); + for (size_t wire_index = 1; wire_index < wires.size(); ++wire_index) { + if (!redundant[wire_index]) { + mf.Add(TopoDS::Wire(wires[wire_index].Reversed())); + } + } + result = mf.Face(); + + return true; +} + +void IfcGeom::util::points_on_planar_face_generator::reset() { + i = j = (int)inset_; +} + +bool IfcGeom::util::points_on_planar_face_generator::operator()(gp_Pnt& p) { + while (j < N) { + double u = u0 + (u1 - u0) * i / N; + double v = v0 + (v1 - v0) * j / N; + + i++; + if (i == N) { + i = 0; + j++; + } + + // Specifically does not consider ON + if (cls_.Perform(gp_Pnt2d(u, v)) == TopAbs_IN) { + plane_->D0(u, v, p); + return true; + } + } + + return false; +} \ No newline at end of file diff --git a/src/ifcgeom_schema_agnostic/boolean_utils.h b/src/ifcgeom_schema_agnostic/boolean_utils.h new file mode 100644 index 0000000000..31cc9ed4f2 --- /dev/null +++ b/src/ifcgeom_schema_agnostic/boolean_utils.h @@ -0,0 +1,90 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#ifndef BOOLEAN_UTILS_H +#define BOOLEAN_UTILS_H + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace IfcGeom { + namespace util { + + void copy_operand(const TopTools_ListOfShape& l, TopTools_ListOfShape& r); + + TopoDS_Shape copy_operand(const TopoDS_Shape& s); + + double min_edge_length(const TopoDS_Shape& a); + + double min_vertex_edge_distance(const TopoDS_Shape& a, double min_search, double max_search); + + class points_on_planar_face_generator { + private: + const TopoDS_Face& f_; + Handle(Geom_Surface) plane_; + BRepTopAdaptor_FClass2d cls_; + double u0, u1, v0, v1; + int i, j; + bool inset_; + static const int N = 10; + + public: + points_on_planar_face_generator(const TopoDS_Face& f, bool inset = false) + : f_(f) + , plane_(BRep_Tool::Surface(f_)) + , cls_(f_, BRep_Tool::Tolerance(f_)) + , i((int)inset), j((int)inset) + , inset_(inset) + { + BRepTools::UVBounds(f_, u0, u1, v0, v1); + } + + void reset(); + + bool operator()(gp_Pnt& p); + }; + + bool faces_overlap(const TopoDS_Face& f, const TopoDS_Face& g); + + double min_face_face_distance(const TopoDS_Shape& a, double max_search); + + int bounding_box_overlap(double p, const TopoDS_Shape& a, const TopTools_ListOfShape& b, TopTools_ListOfShape& c); + + bool get_edge_axis(const TopoDS_Edge& e, gp_Ax1& ax); + + bool is_subset(const TopTools_IndexedMapOfShape& lhs, const TopTools_IndexedMapOfShape& rhs); + + bool is_extrusion(const gp_Vec& v, const TopoDS_Shape& s, TopoDS_Face& base, std::pair& interval); + + int eliminate_touching_operands(double prec, const TopoDS_Shape& a, const TopTools_ListOfShape& bs, TopTools_ListOfShape& c); + + TopoDS_Shape unify(const TopoDS_Shape& s, double tolerance); + + bool boolean_subtraction_2d_using_builder(const TopoDS_Shape& a_input, const TopTools_ListOfShape& b_input, TopoDS_Shape& result, double eps); + + } +} + +#endif \ No newline at end of file diff --git a/src/ifcgeom_schema_agnostic/face_definition.cpp b/src/ifcgeom_schema_agnostic/face_definition.cpp new file mode 100644 index 0000000000..4111c6c675 --- /dev/null +++ b/src/ifcgeom_schema_agnostic/face_definition.cpp @@ -0,0 +1,22 @@ +#include "face_definition.h" + +#include +#include +#include +#include + +/* Returns whether wire conforms to a polyhedron, i.e. only edges with linear curves*/ +bool IfcGeom::util::is_polyhedron(const TopoDS_Wire & wire) { + double a, b; + TopLoc_Location l; + + TopoDS_Iterator it(wire, false, false); + for (; it.More(); it.Next()) { + auto crv = BRep_Tool::Curve(TopoDS::Edge(it.Value()), l, a, b); + if (!crv || crv->DynamicType() != STANDARD_TYPE(Geom_Line)) { + return false; + } + } + + return true; +} diff --git a/src/ifcgeom_schema_agnostic/face_definition.h b/src/ifcgeom_schema_agnostic/face_definition.h new file mode 100644 index 0000000000..6fe982055b --- /dev/null +++ b/src/ifcgeom_schema_agnostic/face_definition.h @@ -0,0 +1,78 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#ifndef FACE_DEFINITION_H +#define FACE_DEFINITION_H + +#include +#include + +#include +#include + +namespace IfcGeom { + namespace util { + + /* Returns whether wire conforms to a polyhedron, i.e. only edges with linear curves*/ + bool is_polyhedron(const TopoDS_Wire& wire); + + /* A temporary structure to store the intermediate data for the face conversion */ + class face_definition { + private: + Handle(Geom_Surface) surface_; + std::vector wires_; + bool all_outer_; + public: + face_definition() : surface_(), all_outer_(false) {} + + typedef std::vector::const_iterator wire_it; + + bool& all_outer() { + return all_outer_; + } + + bool all_outer() const { + return all_outer_; + } + + Handle(Geom_Surface)& surface() { + return surface_; + } + + const Handle(Geom_Surface)& surface() const { + return surface_; + } + + std::vector& wires() { + return wires_; + } + + const TopoDS_Wire& outer_wire() const { + return wires_.front(); + } + + std::pair inner_wires() const { + return { wires_.begin() + 1, wires_.end() }; + } + }; + + } +} + +#endif diff --git a/src/ifcgeom/ifc_geom_api.h b/src/ifcgeom_schema_agnostic/ifc_geom_api.h similarity index 100% rename from src/ifcgeom/ifc_geom_api.h rename to src/ifcgeom_schema_agnostic/ifc_geom_api.h diff --git a/src/ifcgeom_schema_agnostic/sweep_utils.cpp b/src/ifcgeom_schema_agnostic/sweep_utils.cpp new file mode 100644 index 0000000000..8c166b7dbb --- /dev/null +++ b/src/ifcgeom_schema_agnostic/sweep_utils.cpp @@ -0,0 +1,356 @@ +#include "sweep_utils.h" + +#include "../ifcparse/IfcLogger.h" +#include "../ifcgeom_schema_agnostic/Kernel.h" + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +bool IfcGeom::util::wire_is_c1_continuous(const TopoDS_Wire & w, double tol) { + // NB Note that c0 continuity is NOT checked! + + TopTools_IndexedDataMapOfShapeListOfShape map; + TopExp::MapShapesAndAncestors(w, TopAbs_VERTEX, TopAbs_EDGE, map); + for (int i = 1; i <= map.Extent(); ++i) { + const auto& li = map.FindFromIndex(i); + if (li.Extent() == 2) { + const TopoDS_Vertex& v = TopoDS::Vertex(map.FindKey(i)); + + const TopoDS_Edge& e0 = TopoDS::Edge(li.First()); + const TopoDS_Edge& e1 = TopoDS::Edge(li.Last()); + + double u0 = BRep_Tool::Parameter(v, e0); + double u1 = BRep_Tool::Parameter(v, e1); + + double _, __; + Handle(Geom_Curve) c0 = BRep_Tool::Curve(e0, _, __); + Handle(Geom_Curve) c1 = BRep_Tool::Curve(e1, _, __); + + gp_Pnt p; + gp_Vec v0, v1; + c0->D1(u0, p, v0); + c1->D1(u1, p, v1); + + if (1. - std::abs(v0.Normalized().Dot(v1.Normalized())) > tol) { + return false; + } + } + } + return true; +} + +bool IfcGeom::util::wire_to_ax(const TopoDS_Wire & wire, gp_Ax2 & directrix) { + gp_Pnt directrix_origin; + gp_Vec directrix_tangent; + + TopoDS_Edge edge; + + // Find first edge + TopoDS_Vertex v0, v1; + TopExp::Vertices(wire, v0, v1); + TopTools_IndexedDataMapOfShapeListOfShape map; + TopExp::MapShapesAndAncestors(wire, TopAbs_VERTEX, TopAbs_EDGE, map); + if (v0.IsSame(v1) && map.Contains(v0) && map.FindFromKey(v0).Extent() == 2) { + // Closed wire, with more than 1 edges + auto es = map.FindFromKey(v0); + auto e1 = TopoDS::Edge(es.First()); + auto e2 = TopoDS::Edge(es.Last()); + + double u0, u1; + + gp_Vec accum; + + Handle(Geom_Curve) crv = BRep_Tool::Curve(e1, u0, u1); + crv->D1(TopExp::FirstVertex(e1).IsSame(v0) ? u0 : u1, directrix_origin, directrix_tangent); + + accum += directrix_tangent; + + crv = BRep_Tool::Curve(e2, u0, u1); + crv->D1(TopExp::FirstVertex(e2).IsSame(v0) ? u0 : u1, directrix_origin, directrix_tangent); + + accum += directrix_tangent; + + directrix_tangent = accum; + + } else if (map.Contains(v0) && map.FindFromKey(v0).Extent() == 1) { + edge = TopoDS::Edge(map.FindFromKey(v0).First()); + + double u0, u1; + Handle(Geom_Curve) crv = BRep_Tool::Curve(edge, u0, u1); + crv->D1(u0, directrix_origin, directrix_tangent); + } else { + Logger::Error("Unable to locate first edge"); + return false; + } + + directrix = gp_Ax2(directrix_origin, directrix_tangent); + + return true; +} + +bool IfcGeom::util::is_single_linear_edge(const TopoDS_Wire & wire) { + TopExp_Explorer exp(wire, TopAbs_EDGE); + if (!exp.More()) { + return false; + } + TopoDS_Edge e = TopoDS::Edge(exp.Current()); + exp.Next(); + if (exp.More()) { + return false; + } + double u, v; + Handle_Geom_Curve crv = BRep_Tool::Curve(e, u, v); + return crv->DynamicType() == STANDARD_TYPE(Geom_Line); +} + +bool IfcGeom::util::is_single_circular_edge(const TopoDS_Wire & wire) { + TopExp_Explorer exp(wire, TopAbs_EDGE); + if (!exp.More()) { + return false; + } + TopoDS_Edge e = TopoDS::Edge(exp.Current()); + exp.Next(); + if (exp.More()) { + return false; + } + double u, v; + Handle_Geom_Curve crv = BRep_Tool::Curve(e, u, v); + return crv->DynamicType() == STANDARD_TYPE(Geom_Circle); +} + +void IfcGeom::util::process_sweep_as_extrusion(const TopoDS_Wire & wire, const TopoDS_Wire & section, TopoDS_Shape & result) { + TopExp_Explorer exp(wire, TopAbs_EDGE); + TopoDS_Edge e = TopoDS::Edge(exp.Current()); + double u, v; + Handle_Geom_Curve crv = BRep_Tool::Curve(e, u, v); + const auto& dir = Handle(Geom_Line)::DownCast(crv)->Position().Direction(); + // OCCT line is normalized so diff in parametric coords equals length + const double depth = std::abs(u - v); + // @todo we could be extruding the wire only when we know this is an intermediate edge. + TopoDS_Face face = BRepBuilderAPI_MakeFace(section).Face(); + result = BRepPrimAPI_MakePrism(face, depth*dir).Shape(); +} + +void IfcGeom::util::process_sweep_as_revolution(const TopoDS_Wire & wire, const TopoDS_Wire & section, TopoDS_Shape & result) { + TopExp_Explorer exp(wire, TopAbs_EDGE); + TopoDS_Edge e = TopoDS::Edge(exp.Current()); + double u, v; + Handle_Geom_Curve crv = BRep_Tool::Curve(e, u, v); + auto circ = Handle(Geom_Circle)::DownCast(crv); + // @todo we could be extruding the wire only when we know this is an intermediate edge. + const double depth = std::abs(u - v); + TopoDS_Face face = BRepBuilderAPI_MakeFace(section).Face(); + result = BRepPrimAPI_MakeRevol(face, circ->Axis(), depth).Shape(); +} + +void IfcGeom::util::process_sweep_as_pipe(const TopoDS_Wire & wire, const TopoDS_Wire & section, TopoDS_Shape & result, bool force_transformed) { + // This tolerance is fairly high due to the linear edge substitution for small (or large radii) conical curves. + const bool is_continuous = wire_is_c1_continuous(wire, 1.e-2); + BRepOffsetAPI_MakePipeShell builder(wire); + builder.Add(section); + builder.SetTransitionMode(is_continuous || force_transformed ? BRepBuilderAPI_Transformed : BRepBuilderAPI_RightCorner); + try { + builder.Build(); + } catch (Standard_Failure& e) { + // We fallback to BRepBuilderAPI_Transformed, but likely with visual artefacts. + if (!(is_continuous || force_transformed)) { + return process_sweep_as_pipe(wire, section, result, true); + } else { + throw e; + } + } + builder.MakeSolid(); + result = builder.Shape(); +} + +void IfcGeom::util::sort_edges(const TopoDS_Wire & wire, std::vector& sorted_edges) { + TopTools_IndexedDataMapOfShapeListOfShape map; + TopExp::MapShapesAndAncestors(wire, TopAbs_VERTEX, TopAbs_EDGE, map); + + for (int i = 1; i <= map.Extent(); ++i) { + if (map.FindFromIndex(i).Extent() > 2) { + Logger::Warning("Self-intersecting Directrix"); + } + } + + std::set seen; + + auto num_edges = IfcGeom::Kernel::count(wire, TopAbs_EDGE); + + TopoDS_Vertex v0, v1; + // @todo this creates the ancestor map twice + TopExp::Vertices(wire, v0, v1); + + bool ignore_first_equality_because_closed = v0.IsSame(v1); + + // @todo this probably still does not work on a closed wire consisting of one (circular) edge. + + while ((int)sorted_edges.size() < num_edges && + (!v0.IsSame(v1) || ignore_first_equality_because_closed)) { + ignore_first_equality_because_closed = false; + if (!map.Contains(v0)) { + throw std::runtime_error("Disconnected vertex"); + } + const TopTools_ListOfShape& es = map.FindFromKey(v0); + TopoDS_Vertex ve0, ve1; + TopTools_ListIteratorOfListOfShape it(es); + bool added = false; + for (; it.More(); it.Next()) { + const TopoDS_Edge& e = TopoDS::Edge(it.Value()); + TopExp::Vertices(e, ve0, ve1, true); + if (ve0.IsSame(v0) && seen.find(&*e.TShape()) == seen.end()) { + sorted_edges.push_back(e); + v0 = ve1; + added = true; + seen.insert(&*e.TShape()); + break; + } + } + if (!added) { + throw std::runtime_error("Disconnected edge"); + } + } +} + +// #939: a closed loop causes failed triangulation in 7.3 and artefacts +// in 7.4 so we break up a closed wire into two equal parts. +void IfcGeom::util::break_closed(const TopoDS_Wire & wire, std::vector& wires) { + std::vector sorted_edges; + sort_edges(wire, sorted_edges); + + if (sorted_edges.size() == 1) { + wires.push_back(wire); + return; + } + + BRep_Builder B; + + wires.emplace_back(); + B.MakeWire(wires.back()); + + for (size_t i = 0; i < sorted_edges.size(); ++i) { + if (i == sorted_edges.size() / 2) { + wires.emplace_back(); + B.MakeWire(wires.back()); + } + + const auto& e = sorted_edges[i]; + B.Add(wires.back(), e); + } +} + +void IfcGeom::util::segment_adjacent_non_linear(const TopoDS_Wire & wire, std::vector& wires) { + std::vector sorted_edges; + sort_edges(wire, sorted_edges); + + BRep_Builder B; + double u, v; + + wires.emplace_back(); + B.MakeWire(wires.back()); + + for (int i = 0; i < (int)sorted_edges.size() - 1; ++i) { + const auto& e = sorted_edges[i]; + Handle_Geom_Curve crv = BRep_Tool::Curve(e, u, v); + const bool is_linear = crv->DynamicType() == STANDARD_TYPE(Geom_Line); + + const auto& f = sorted_edges[i + 1]; + crv = BRep_Tool::Curve(f, u, v); + const bool next_is_linear = crv->DynamicType() == STANDARD_TYPE(Geom_Line); + + B.Add(wires.back(), e); + + if (!is_linear && !next_is_linear) { + wires.emplace_back(); + B.MakeWire(wires.back()); + } + } + + if (!sorted_edges.empty()) { + B.Add(wires.back(), sorted_edges.back()); + } +} + +// @todo make this generic for other sweeps not just swept disk +void IfcGeom::util::process_sweep(const TopoDS_Wire & wire, double radius, TopoDS_Shape & result) { + std::vector wires, wires_tmp; + segment_adjacent_non_linear(wire, wires_tmp); + for (auto& w : wires_tmp) { + break_closed(w, wires); + } + + TopoDS_Compound C; + BRep_Builder B; + if (wires.size() > 1) { + B.MakeCompound(C); + } + + for (auto& w : wires) { + TopoDS_Shape part; + + gp_Ax2 directrix; + if (!wire_to_ax(w, directrix)) { + continue; + } + Handle(Geom_Circle) circle = new Geom_Circle(directrix, radius); + TopoDS_Wire section = BRepBuilderAPI_MakeWire(BRepBuilderAPI_MakeEdge(circle)); + + if (is_single_circular_edge(w)) { + process_sweep_as_revolution(w, section, part); + } else if (is_single_linear_edge(w)) { + process_sweep_as_extrusion(w, section, part); + } else { + process_sweep_as_pipe(w, section, part); + } + if (wires.size() > 1) { + B.Add(C, part); + } else { + result = part; + } + } + + if (wires.size() > 1) { + result = C; + } + + /* + // Eliminate Swept Surfaces? + result = ShapeCustom::SweptToElementary(result); + + // Eliminate Trimmed Surfaces? + ShapeBuild_ReShape sbrs; + BRep_Builder b; + TopExp_Explorer exp(result, TopAbs_FACE); + for (; exp.More(); exp.Next()) { + const TopoDS_Face& f = TopoDS::Face(exp.Current()); + auto S = BRep_Tool::Surface(f); + if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) { + auto RTS = Handle(Geom_RectangularTrimmedSurface)::DownCast(S); + auto B = RTS->BasisSurface(); + TopoDS_Shape newf = f.EmptyCopied(); + // @todo Is it ok to assume no location? + b.MakeFace(TopoDS::Face(newf), B, BRep_Tool::Tolerance(f)); + sbrs.Replace(f, newf); + } + } + result = sbrs.Apply(result); + */ +} diff --git a/src/ifcgeom_schema_agnostic/sweep_utils.h b/src/ifcgeom_schema_agnostic/sweep_utils.h new file mode 100644 index 0000000000..033891d9c9 --- /dev/null +++ b/src/ifcgeom_schema_agnostic/sweep_utils.h @@ -0,0 +1,59 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#ifndef SWEEP_UTILS_H +#define SWEEP_UTILS_H + +#include +#include + +#include + +namespace IfcGeom { + namespace util { + + bool wire_is_c1_continuous(const TopoDS_Wire& w, double tol); + + bool wire_to_ax(const TopoDS_Wire& wire, gp_Ax2& directrix); + + bool is_single_linear_edge(const TopoDS_Wire& wire); + + bool is_single_circular_edge(const TopoDS_Wire& wire); + + void process_sweep_as_extrusion(const TopoDS_Wire& wire, const TopoDS_Wire& section, TopoDS_Shape& result); + + void process_sweep_as_revolution(const TopoDS_Wire& wire, const TopoDS_Wire& section, TopoDS_Shape& result); + + void process_sweep_as_pipe(const TopoDS_Wire& wire, const TopoDS_Wire& section, TopoDS_Shape& result, bool force_transformed = false); + + void sort_edges(const TopoDS_Wire& wire, std::vector& sorted_edges); + + + // #939: a closed loop causes failed triangulation in 7.3 and artefacts + // in 7.4 so we break up a closed wire into two equal parts. + void break_closed(const TopoDS_Wire& wire, std::vector& wires); + + void segment_adjacent_non_linear(const TopoDS_Wire& wire, std::vector& wires); + + // @todo make this generic for other sweeps not just swept disk + void process_sweep(const TopoDS_Wire& wire, double radius, TopoDS_Shape& result); + } +} + +#endif diff --git a/src/ifcgeom_schema_agnostic/wire_builder.cpp b/src/ifcgeom_schema_agnostic/wire_builder.cpp new file mode 100644 index 0000000000..f63f88f498 --- /dev/null +++ b/src/ifcgeom_schema_agnostic/wire_builder.cpp @@ -0,0 +1,226 @@ +#include "wire_builder.h" + +#include "../ifcparse/IfcLogger.h" +#include "../ifcgeom_schema_agnostic/Kernel.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Returns the first edge of a wire +TopoDS_Edge IfcGeom::util::first_edge(const TopoDS_Wire & w) { + TopoDS_Vertex v1, v2; + TopExp::Vertices(w, v1, v2); + TopTools_IndexedDataMapOfShapeListOfShape wm; + TopExp::MapShapesAndAncestors(w, TopAbs_VERTEX, TopAbs_EDGE, wm); + return TopoDS::Edge(wm.FindFromKey(v1).First()); +} + +// Returns new wire with the edge replaced by a linear edge with the vertex v moved to p +TopoDS_Wire IfcGeom::util::adjust(const TopoDS_Wire & w, const TopoDS_Vertex & v, const gp_Pnt & p) { + TopTools_IndexedDataMapOfShapeListOfShape map; + TopExp::MapShapesAndAncestors(w, TopAbs_VERTEX, TopAbs_EDGE, map); + + bool all_linear = true, single_circle = false, first = true; + + const TopTools_ListOfShape& edges = map.FindFromKey(v); + TopTools_ListIteratorOfListOfShape it(edges); + for (; it.More(); it.Next()) { + const TopoDS_Edge& e = TopoDS::Edge(it.Value()); + double _, __; + Handle(Geom_Curve) crv = BRep_Tool::Curve(e, _, __); + const bool is_line = crv->DynamicType() == STANDARD_TYPE(Geom_Line); + const bool is_circle = crv->DynamicType() == STANDARD_TYPE(Geom_Circle); + all_linear = all_linear && is_line; + single_circle = first && is_circle; + } + + if (all_linear) { + BRep_Builder b; + TopoDS_Vertex v2; + b.MakeVertex(v2, p, BRep_Tool::Tolerance(v)); + + ShapeBuild_ReShape reshape; + reshape.Replace(v.Oriented(TopAbs_FORWARD), v2); + + return TopoDS::Wire(reshape.Apply(w)); + } else if (single_circle) { + TopoDS_Vertex v1, v2; + TopExp::Vertices(w, v1, v2); + + gp_Pnt p1, p2, p3; + p1 = v.IsEqual(v1) ? p : BRep_Tool::Pnt(v1); + p3 = v.IsEqual(v2) ? p : BRep_Tool::Pnt(v2); + + double a, b; + Handle(Geom_Curve) crv = BRep_Tool::Curve(TopoDS::Edge(edges.First()), a, b); + crv->D0((a + b) / 2., p2); + + GC_MakeCircle mc(p1, p2, p3); + if (!mc.IsDone()) { + throw IfcGeom::geometry_exception("Failed to adjust circle"); + } + + TopoDS_Edge edge = BRepBuilderAPI_MakeEdge(mc.Value(), p1, p3).Edge(); + BRepBuilderAPI_MakeWire builder; + builder.Add(edge); + return builder.Wire(); + } else { + throw IfcGeom::geometry_exception("Unexpected wire to adjust"); + } +} + +double IfcGeom::util::deflection_for_approximating_circle(double radius, double param) { + return -radius * std::cos(1. / 2. * param) * std::cos(param) - radius * std::sin(1. / 2. * param) * std::sin(param) + radius; +} + +bool IfcGeom::util::create_edge_over_curve_with_log_messages(const Handle_Geom_Curve & crv, const double eps, const gp_Pnt & p1, const gp_Pnt & p2, TopoDS_Edge & result) { + if (crv->IsClosed() && p1.Distance(p2) <= eps) { + BRepBuilderAPI_MakeEdge me(crv); + if (me.IsDone()) { + result = me.Edge(); + return true; + } else { + return false; + } + } + + BRep_Builder builder; + TopoDS_Vertex v1, v2; + /// @todo project first and emit warnings accordingly + builder.MakeVertex(v1, p1, eps); + builder.MakeVertex(v2, p2, eps); + + BRepBuilderAPI_MakeEdge me(crv, v1, v2); + if (!me.IsDone()) { + const double eps2 = eps * eps; + if (me.Error() == BRepBuilderAPI_PointProjectionFailed) { + GeomAdaptor_Curve GAC(crv); + const gp_Pnt* ps[2] = { &p1, &p2 }; + for (int i = 0; i < 2; ++i) { + Extrema_ExtPC extrema(*ps[i], GAC); + if (extrema.IsDone()) { + int n = extrema.NbExt(); + double dmin = std::numeric_limits::infinity(); + for (int j = 1; j <= n; j++) { + const double d = extrema.SquareDistance(j); + if (d < dmin) { + dmin = d; + } + } + if (dmin == std::numeric_limits::infinity()) { + Logger::Error("No extrema for point"); + } else if (dmin > eps2) { + Logger::Error("Distance of " + boost::lexical_cast(std::sqrt(dmin)) + " exceeds tolerance"); + } + } else { + Logger::Error("Failed to calculate extrema for point"); + } + } + } + return false; + } + result = me.Edge(); + return true; +} + +void IfcGeom::util::wire_builder::operator()(const TopoDS_Shape& a) { + const TopoDS_Wire& w = TopoDS::Wire(a); + if (override_next_) { + override_next_ = false; + TopoDS_Edge e = first_edge(w); + mw_.Add(adjust(w, TopExp::FirstVertex(e, true), next_override_)); + } else { + mw_.Add(w); + } +} + +void IfcGeom::util::wire_builder::operator()(const TopoDS_Shape& a, const TopoDS_Shape& b, bool last) { + TopoDS_Wire w1 = TopoDS::Wire(a); + const TopoDS_Wire& w2 = TopoDS::Wire(b); + + if (override_next_) { + override_next_ = false; + TopoDS_Edge e = first_edge(w1); + w1 = adjust(w1, TopExp::FirstVertex(e, true), next_override_); + } + + TopoDS_Vertex w11, w12, w21, w22; + TopExp::Vertices(w1, w11, w12); + TopExp::Vertices(w2, w21, w22); + + gp_Pnt p1 = BRep_Tool::Pnt(w12); + gp_Pnt p2 = BRep_Tool::Pnt(w21); + + double dist = p1.Distance(p2); + + // Distance is within tolerance, this is fine + if (dist < p_) { + mw_.Add(w1); + goto check; + } + + // Distance is too large for attempting to move end points, add intermediate edge + if (dist > 1000. * p_) { + mw_.Add(w1); + mw_.Add(BRepBuilderAPI_MakeEdge(p1, p2)); + Logger::Warning("Added additional segment to close gap with length " + boost::lexical_cast(dist) + " to:", inst_); + goto check; + } + + { + TopTools_IndexedDataMapOfShapeListOfShape wmap1, wmap2; + + // Find edges connected to end- and begin vertex + TopExp::MapShapesAndAncestors(w1, TopAbs_VERTEX, TopAbs_EDGE, wmap1); + TopExp::MapShapesAndAncestors(w2, TopAbs_VERTEX, TopAbs_EDGE, wmap2); + + const TopTools_ListOfShape& last_edges = wmap1.FindFromKey(w12); + const TopTools_ListOfShape& first_edges = wmap2.FindFromKey(w21); + + double _, __; + if (last_edges.Extent() == 1 && first_edges.Extent() == 1) { + Handle(Geom_Curve) c1 = BRep_Tool::Curve(TopoDS::Edge(last_edges.First()), _, __); + Handle(Geom_Curve) c2 = BRep_Tool::Curve(TopoDS::Edge(first_edges.First()), _, __); + + const bool is_line1 = c1->DynamicType() == STANDARD_TYPE(Geom_Line); + const bool is_line2 = c2->DynamicType() == STANDARD_TYPE(Geom_Line); + + const bool is_circle1 = c1->DynamicType() == STANDARD_TYPE(Geom_Circle); + const bool is_circle2 = c2->DynamicType() == STANDARD_TYPE(Geom_Circle); + + // Preferably adjust the segment that is linear + if (is_line1 || (is_circle1 && !is_line2)) { + mw_.Add(adjust(w1, w12, p2)); + Logger::Notice("Adjusted edge end-point with distance " + boost::lexical_cast(dist) + " on:", inst_); + } else if ((is_line2 || is_circle2) && !last) { + mw_.Add(w1); + override_next_ = true; + next_override_ = p1; + Logger::Notice("Adjusted edge end-point with distance " + boost::lexical_cast(dist) + " on:", inst_); + } else { + // In all other cases an edge is added + mw_.Add(w1); + mw_.Add(BRepBuilderAPI_MakeEdge(p1, p2)); + Logger::Warning("Added additional segment to close gap with length " + boost::lexical_cast(dist) + " to:", inst_); + } + } else { + Logger::Error("Internal error, inconsistent wire segments", inst_); + mw_.Add(w1); + } + } + +check: + if (mw_.Error() == BRepBuilderAPI_NonManifoldWire) { + Logger::Error("Non-manifold curve segments:", inst_); + } else if (mw_.Error() == BRepBuilderAPI_DisconnectedWire) { + Logger::Error("Failed to join curve segments:", inst_); + } +} \ No newline at end of file diff --git a/src/ifcgeom_schema_agnostic/wire_builder.h b/src/ifcgeom_schema_agnostic/wire_builder.h new file mode 100644 index 0000000000..7a75c32a7a --- /dev/null +++ b/src/ifcgeom_schema_agnostic/wire_builder.h @@ -0,0 +1,105 @@ +/******************************************************************************** + * * + * This file is part of IfcOpenShell. * + * * + * IfcOpenShell is free software: you can redistribute it and/or modify * + * it under the terms of the Lesser GNU General Public License as published by * + * the Free Software Foundation, either version 3.0 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 * + * Lesser GNU General Public License for more details. * + * * + * You should have received a copy of the Lesser GNU General Public License * + * along with this program. If not, see . * + * * + ********************************************************************************/ + +#ifndef WIRE_BUILDER_H +#define WIRE_BUILDER_H + +#include "../ifcparse/IfcBaseClass.h" + +#include + +#include +#include +#include + +#include +#include + +namespace IfcGeom { + namespace util { + // Returns the first edge of a wire + TopoDS_Edge first_edge(const TopoDS_Wire& w); + + // Returns new wire with the edge replaced by a linear edge with the vertex v moved to p + TopoDS_Wire adjust(const TopoDS_Wire& w, const TopoDS_Vertex& v, const gp_Pnt& p); + + // A wrapper around BRepBuilderAPI_MakeWire that makes sure segments are connected either by moving end points or by adding intermediate segments + class wire_builder { + private: + BRepBuilderAPI_MakeWire mw_; + double p_; + bool override_next_; + gp_Pnt next_override_; + const IfcUtil::IfcBaseClass* inst_; + + public: + wire_builder(double p, const IfcUtil::IfcBaseClass* inst = 0) : p_(p), override_next_(false), inst_(inst) {} + + void operator()(const TopoDS_Shape& a); + + void operator()(const TopoDS_Shape& a, const TopoDS_Shape& b, bool last); + + const TopoDS_Wire& wire() { return mw_.Wire(); } + }; + + template + void shape_pair_enumerate(TopTools_ListIteratorOfListOfShape& it, Fn& fn, bool closed) { + bool is_first = true; + TopoDS_Shape first, previous, current; + for (; it.More(); it.Next(), is_first = false) { + current = it.Value(); + if (is_first) { + first = current; + } else { + fn(previous, current, false); + } + previous = current; + } + if (closed) { + fn(current, first, true); + } else { + fn(current); + } + } + + /* + Below is code to deduce the formula below in SageMath + + | R, b = var('R b') + | + | Bxy = R * cos(b), R * sin(b) + | Cxy = R * cos(b/2), R * sin(b/2) + | + | def dot(v, w): + | return v[0] * w[0] + v[1] * w[1] + | + | def norm(v): + | l = sqrt(v[0]^2 + v[1]^2) + | return v[0] / l, v[1] / l + | + | (R - R*dot(norm(Cxy), norm(Bxy))).full_simplify() + */ + + double deflection_for_approximating_circle(double radius, double param); + + bool create_edge_over_curve_with_log_messages(const Handle_Geom_Curve& crv, const double eps, const gp_Pnt& p1, const gp_Pnt& p2, TopoDS_Edge& result); + } +} + +#endif diff --git a/src/ifcgeomserver/IfcGeomServer.cpp b/src/ifcgeomserver/IfcGeomServer.cpp index 7abc957b02..c30d04b8c8 100644 --- a/src/ifcgeomserver/IfcGeomServer.cpp +++ b/src/ifcgeomserver/IfcGeomServer.cpp @@ -39,7 +39,7 @@ #endif #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" -#include "../ifcgeom/IfcGeomElement.h" +#include "../ifcgeom_schema_agnostic/IfcGeomElement.h" #include "../ifcparse/IfcFile.h" #include "../ifcparse/IfcLogger.h" diff --git a/src/ifcopenshell-python/Makefile b/src/ifcopenshell-python/Makefile index d91e13a251..2d39b45dd7 100644 --- a/src/ifcopenshell-python/Makefile +++ b/src/ifcopenshell-python/Makefile @@ -2,6 +2,11 @@ test: pytest -p no:pytest-blender test +.PHONY: build-ids-docs +build-ids-docs: + mkdir -p test/build + cd test && python ids_doc_generator.py + .PHONY: qa qa: black . diff --git a/src/ifcopenshell-python/docs/Makefile b/src/ifcopenshell-python/docs/Makefile new file mode 100644 index 0000000000..d4bb2cbb9e --- /dev/null +++ b/src/ifcopenshell-python/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/src/ifcopenshell-python/docs/_static/custom.css b/src/ifcopenshell-python/docs/_static/custom.css new file mode 100644 index 0000000000..4ecfae2065 --- /dev/null +++ b/src/ifcopenshell-python/docs/_static/custom.css @@ -0,0 +1,17 @@ +.blockbutton { + border: 1px solid var(--color-admonition-title--seealso); + background-color: var(--color-admonition-title-background--seealso); + padding: 5px; + text-align: center; + border-radius: 5px; + max-width: 500px; + margin-left: auto; + margin-right: auto; +} +section img { + display: block; + margin-left: auto; + margin-right: auto; + box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px; + border-radius: 5px; +} diff --git a/src/blenderbim/docs/bimserver-plugin.rst b/src/ifcopenshell-python/docs/bimserver-plugin.rst similarity index 100% rename from src/blenderbim/docs/bimserver-plugin.rst rename to src/ifcopenshell-python/docs/bimserver-plugin.rst diff --git a/src/blenderbim/docs/bimtester.rst b/src/ifcopenshell-python/docs/bimtester.rst similarity index 100% rename from src/blenderbim/docs/bimtester.rst rename to src/ifcopenshell-python/docs/bimtester.rst diff --git a/src/ifcopenshell-python/docs/conf.py b/src/ifcopenshell-python/docs/conf.py new file mode 100644 index 0000000000..c4df1f62d3 --- /dev/null +++ b/src/ifcopenshell-python/docs/conf.py @@ -0,0 +1,101 @@ +# BlenderBIM Add-on - OpenBIM Blender Add-on +# Copyright (C) 2020, 2021 Dion Moult +# +# This file is part of BlenderBIM Add-on. +# +# BlenderBIM Add-on is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# BlenderBIM Add-on 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with BlenderBIM Add-on. If not, see . + +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +sys.path.insert(0, os.path.abspath('..')) + + +# -- Project information ----------------------------------------------------- + +project = "IfcOpenShell" +copyright = "2020-2022, IfcOpenShell Contributors" +author = "IfcOpenShell Contributors" + +# The full version, including alpha/beta/rc tags +release = "0.7.0" + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. + +# I considered autodoc+autosummary but it had showstopper glitches: +# - Some modules couldn't be accessed https://github.com/sphinx-doc/sphinx/issues/7912#issuecomment-1120508738 +# - No subnav making it really hard to navigate +# - Kinda hacky setup https://stackoverflow.com/questions/2701998/sphinx-autodoc-is-not-automatic-enough +# - I couldn't customise the template to show submodules above members which makes API discovery hard for users +extensions = ["autoapi.extension"] + +# We're only documenting Python here +autoapi_type = 'python' + +# autoapi works by reading source code instead of importing modules +autoapi_dirs = ['../ifcopenshell'] + +# autoapi_options doesn't have show-module-summary, as it tends to create one +# page per function which contradicts the presentation of showing all functions +# as a list. This creates two possible locations where a function is documented +# which is really disorienting. I also exclude imported-members. For example, +# ifcopenshell.file is imported from ifcopenshell.file.file, but it gets pretty +# confusing to see the docs again in multiple places (seriously, +# ifcopenshell.file.file is everywhere). +autoapi_options = ['members', 'undoc-members', 'private-members', 'special-members', 'show-inheritance'] + +# This option is set to both to allow both class docstrings and __init__ docstrings. +autoapi_python_class_content = 'both' + +# Group by type (e.g. attribute, class, function, etc) then alphabetically. +autoapi_member_order = "groupwise" + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "furo" + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ["_static"] + +html_css_files = ["custom.css"] diff --git a/src/blenderbim/docs/ifcclash.rst b/src/ifcopenshell-python/docs/ifcclash.rst similarity index 100% rename from src/blenderbim/docs/ifcclash.rst rename to src/ifcopenshell-python/docs/ifcclash.rst diff --git a/src/blenderbim/docs/ifccobie.rst b/src/ifcopenshell-python/docs/ifccobie.rst similarity index 100% rename from src/blenderbim/docs/ifccobie.rst rename to src/ifcopenshell-python/docs/ifccobie.rst diff --git a/src/blenderbim/docs/ifcconvert.rst b/src/ifcopenshell-python/docs/ifcconvert.rst similarity index 100% rename from src/blenderbim/docs/ifcconvert.rst rename to src/ifcopenshell-python/docs/ifcconvert.rst diff --git a/src/blenderbim/docs/ifcdiff.rst b/src/ifcopenshell-python/docs/ifcdiff.rst similarity index 100% rename from src/blenderbim/docs/ifcdiff.rst rename to src/ifcopenshell-python/docs/ifcdiff.rst diff --git a/src/blenderbim/docs/ifcmax.rst b/src/ifcopenshell-python/docs/ifcmax.rst similarity index 100% rename from src/blenderbim/docs/ifcmax.rst rename to src/ifcopenshell-python/docs/ifcmax.rst diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python.rst b/src/ifcopenshell-python/docs/ifcopenshell-python.rst new file mode 100644 index 0000000000..2a6169fefa --- /dev/null +++ b/src/ifcopenshell-python/docs/ifcopenshell-python.rst @@ -0,0 +1,15 @@ +IfcOpenShell-Python +=================== + +IfcOpenShell-Python provides Python bindings to the core IfcOpenShell C++ +system, as well as high level analysis and authoring functions. + +.. toctree:: + :hidden: + :maxdepth: 1 + :caption: Contents: + + ifcopenshell-python/installation + ifcopenshell-python/hello_world + ifcopenshell-python/code_examples + ifcopenshell-python/developer_guide diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-python-console-1.png b/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-python-console-1.png new file mode 100644 index 0000000000..5dc44b5a07 Binary files /dev/null and b/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-python-console-1.png differ diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-python-console-2.png b/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-python-console-2.png new file mode 100644 index 0000000000..47b6cddd71 Binary files /dev/null and b/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-python-console-2.png differ diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-text-editor-1.png b/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-text-editor-1.png new file mode 100644 index 0000000000..252f18faf0 Binary files /dev/null and b/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-text-editor-1.png differ diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-text-editor-2.png b/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-text-editor-2.png new file mode 100644 index 0000000000..7240cfd220 Binary files /dev/null and b/src/ifcopenshell-python/docs/ifcopenshell-python/blenderbim-text-editor-2.png differ diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/code_examples.rst b/src/ifcopenshell-python/docs/ifcopenshell-python/code_examples.rst new file mode 100644 index 0000000000..72102bdd58 --- /dev/null +++ b/src/ifcopenshell-python/docs/ifcopenshell-python/code_examples.rst @@ -0,0 +1,4 @@ +Code examples +============= + +TODO diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/developer_guide.rst b/src/ifcopenshell-python/docs/ifcopenshell-python/developer_guide.rst new file mode 100644 index 0000000000..d664cbe111 --- /dev/null +++ b/src/ifcopenshell-python/docs/ifcopenshell-python/developer_guide.rst @@ -0,0 +1,15 @@ +Developer Guide +=============== + +The core module implements low-level functionality to read and write IFC data. This includes: + +- Reading IFC data from different serialisations into Python objects +- Accessing direct and indirect attributes of IFC entities +- Creating IFC entities +- Generating GlobalIds +- Removing IFC entities and all references +- Modifying IFC direct attributes +- Checking IFC class inheritance +- Validating IFC data + +TODO diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/hello_world.rst b/src/ifcopenshell-python/docs/ifcopenshell-python/hello_world.rst new file mode 100644 index 0000000000..34e2a0fa7d --- /dev/null +++ b/src/ifcopenshell-python/docs/ifcopenshell-python/hello_world.rst @@ -0,0 +1,219 @@ +Hello, world! +============= + +What's inside an IFC? +--------------------- + +TODO + +Core functionality crash course +------------------------------- + +This crash course guides you through basic code snippets that give you a general +idea of the low-level functionality that IfcOpenShell-python provides. You'll +need to have IfcOpenShell installed and a sample IFC model. To get the most out +of it, try out the code yourself and see what results you get! + +If you don't have an IFC model available, here's a small one for your +convenience provided by the Institute for Automation and Applied Informatics +(IAI) / Karlsruhe Institute of Technology. It's in German, so you may need to +use some creativity when reading the data :) + +.. container:: blockbutton + + `Download sample IFC `__ + +.. seealso:: + + You can find more sample models online in the `OSArch Open Data Directory + `__ + +Let's start with loading the model. Import the IfcOpenShell module, then use the +``open`` function to load the model into a variable called ``model``. + +.. code-block:: python + + import ifcopenshell + model = ifcopenshell.open('/path/to/your/model.ifc') + +Let's see what IFC schema we are using: + +.. code-block:: python + + print(model.schema) # May return IFC2X3 or IFC4 + +Let's get the first piece of data in our IFC file: + +.. code-block:: python + + print(model.by_id(1)) + +But getting data from beginning to end isn't too meaningful to humans. What if we knew a ``GlobalId`` value instead? + +.. code-block:: python + + print(model.by_guid('0EI0MSHbX9gg8Fxwar7lL8')) + +If we're not looking specifically for a single element, perhaps let's see how many walls are in our file, and count them: + +.. code-block:: python + + walls = model.by_type('IfcWall') + print(len(walls)) + +Once we have an element, we can see what IFC class it is: + +.. code-block:: python + + wall = model.by_type('IfcWall')[0] + print(wall.is_a()) # Returns 'IfcWall' + +You can also test if it is a certain class, as well as check for parent classes too: + +.. code-block:: python + + print(wall.is_a('IfcWall')) # Returns True + print(wall.is_a('IfcElement')) # Returns True + print(wall.is_a('IfcWindow')) # Returns False + +Let's quickly check the STEP ID of our element: + +.. code-block:: python + + print(wall.id()) + +Let's get some attributes of an element. IFC attributes have a particular order. We can access it just like a list, so let's get the first and third attribute: + +.. code-block:: python + + print(wall[0]) # The first attribute is the GlobalId + print(wall[2]) # The third attribute is the Name + +Knowing the order of attributes is boring and technical. We can access them by name too: + +.. code-block:: python + + print(wall.GlobalId) + print(wall.Name) + +Getting attributes one by one is tedious. Let's grab them all: + +.. code-block:: python + + # Gives us a dictionary of attributes, such as: + # {'id': 8, 'type': 'IfcWall', 'GlobalId': '2_qMTAIHrEYu0vYcqK8cBX', ... } + print(wall.get_info()) + +Let's see all the properties and quantities associated with this wall: + +.. code-block:: python + + import ifcopenshell.util + import ifcopenshell.util.element + print(ifcopenshell.util.element.get_psets(wall)) + +Some attributes are special, called "inverse attributes". They happen when another element is referencing our element. They can reference it for many reasons, like to define a relationship, such as if they create a void in our wall, join our wall, or define a quantity take-off value for our wall, among others. Just treat them like regular attributes: + +.. code-block:: python + + print(wall.IsDefinedBy) + +Perhaps we want to see all elements which are referencing our wall? + +.. code-block:: python + + print(model.get_inverse(wall)) + +Let's do the opposite, let's see all the elements which our wall references instead: + +.. code-block:: python + + print(model.traverse(wall)) + # Or, let's just go down one level deep + print(model.traverse(wall, max_levels=1)) + +If you want to modify data, just assign it to the relevant attribute: + +.. code-block:: python + + wall.Name = 'My new wall name' + +You can also generate a new ``GlobalId``: + +.. code-block:: python + + wall.GlobalId = ifcopenshell.guid.new() + +After modifying some IFC data, you can save it to a new IFC-SPF file: + +.. code-block:: python + + model.write('/path/to/a/new.ifc') + +You can generate a new IFC from scratch too, instead of reading an existing one: + +.. code-block:: python + + ifc = ifcopenshell.file() + # Or if you want a particular schema: + ifc = ifcopenshell.file(schema='IFC4') + +You can create new IFC elements, and add it either to an existing or newly created IFC file object: + +.. code-block:: python + + # Will return #1=IfcWall($,$,$,$,$,$,$,$,$) - notice all of the attributes are blank! + new_wall = model.createIfcWall() + # Will return a list with our wall in it: [#1=IfcWall($,$,$,$,$,$,$,$,$)] + print(model.by_type('IfcWall')) + +Alternatively, you can also use this way to create new elements: + +.. code-block:: python + + model.create_entity('IfcWall') + +Specifying more arguments lets you fill in attributes while creating the element instead of assigning them separately. You specify them in the order of the attributes. + +.. code-block:: python + + # Gives us #1=IfcWall('0EI0MSHbX9gg8Fxwar7lL8',$,$,$,$,$,$,$,$) + model.create_entity('IfcWall', ifcopenshell.guid.new()) + +Again, knowing the order of attributes is difficult, so you can use keyword arguments instead: + +.. code-block:: python + + # Gives us #1=IfcWall('0EI0MSHbX9gg8Fxwar7lL8',$,'Wall Name',$,$,$,$,$,$) + model.create_entity('IfcWall', GlobalId=ifcopenshell.guid.new(), Name='Wall Name') + +Sometimes, it's easier to expand a dictionary: + +.. code-block:: python + + data = { + 'GlobalId': ifcopenshell.guid.new(), + 'Name': 'Wall Name' + } + model.create_entity('IfcWall', **data) + +Some attributes of an element aren't just text, they may be a reference to another element. Easy: + +.. code-block:: python + + wall = model.createIfcWall() + wall.OwnerHistory = model.createIfcOwnerHistory() + +What if we already have an element from one IFC file and want to add it to another? + +.. code-block:: python + + wall = model.by_type('IfcWall')[0] + new_model = ifcopenshell.file() + new_model.add(wall) + +Fed up with an object? Let's delete it: + +.. code-block:: python + + model.remove(wall) diff --git a/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst b/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst new file mode 100644 index 0000000000..1f7eb8b5ce --- /dev/null +++ b/src/ifcopenshell-python/docs/ifcopenshell-python/installation.rst @@ -0,0 +1,139 @@ +Installation +============ + +There are different methods of installation, depending on your situation. + +1. **Pre-built packages** is recommended for users wanting to use the latest IfcOpenShell builds. +2. **Pip** is recommended for managing a more stable IfcOpenShell version. +3. **Conda** is recommended for developers using Anaconda. +4. **Using the BlenderBIM Add-on** is recommended for non-developers wanting a graphical interface. +5. **Compiling from source** is recommended for developers actively working with the C++ core. + +Pre-built packages +------------------ + +1. Choose which version to download based on your operating system, Python + version, and computer architecture. + + +-------------+----------------+----------------+----------------+----------------+ + | | Linux 64bit | Windows 32bit | Windows 64bit | MacOS 64bit | + +=============+================+================+================+================+ + | Python 3.6 | py36-linux64_ | py36-win32_ | py36-win64_ | py36-macos64_ | + +-------------+----------------+----------------+----------------+----------------+ + | Python 3.7 | py37-linux64_ | py37-win32_ | py37-win64_ | py37-macos64_ | + +-------------+----------------+----------------+----------------+----------------+ + | Python 3.8 | py38-linux64_ | py38-win32_ | py38-win64_ | py38-macos64_ | + +-------------+----------------+----------------+----------------+----------------+ + | Python 3.9 | py39-linux64_ | py39-win32_ | py39-win64_ | py39-macos64_ | + +-------------+----------------+----------------+----------------+----------------+ + | Python 3.10 | py31-linux64_ | py31-win32_ | py31-win64_ | py31-macos64_ | + +-------------+----------------+----------------+----------------+----------------+ + +.. _py36-linux64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-36-v0.7.0-1b1fd1e-linux64.zip +.. _py37-linux64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-37-v0.7.0-1b1fd1e-linux64.zip +.. _py38-linux64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-38-v0.7.0-1b1fd1e-linux64.zip +.. _py39-linux64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-39-v0.7.0-1b1fd1e-linux64.zip +.. _py31-linux64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-31-v0.7.0-1b1fd1e-linux64.zip +.. _py36-win32: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-36-v0.7.0-1b1fd1e-win64.zip +.. _py37-win32: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-37-v0.7.0-1b1fd1e-win64.zip +.. _py38-win32: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-38-v0.7.0-1b1fd1e-win64.zip +.. _py39-win32: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-39-v0.7.0-1b1fd1e-win64.zip +.. _py31-win32: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-31-v0.7.0-1b1fd1e-win64.zip +.. _py36-win64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-36-v0.7.0-1b1fd1e-win64.zip +.. _py37-win64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-37-v0.7.0-1b1fd1e-win64.zip +.. _py38-win64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-38-v0.7.0-1b1fd1e-win64.zip +.. _py39-win64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-39-v0.7.0-1b1fd1e-win64.zip +.. _py31-win64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-31-v0.7.0-1b1fd1e-win64.zip +.. _py36-macos64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-36-v0.7.0-1b1fd1e-macos64.zip +.. _py37-macos64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-37-v0.7.0-1b1fd1e-macos64.zip +.. _py38-macos64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-38-v0.7.0-1b1fd1e-macos64.zip +.. _py39-macos64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-39-v0.7.0-1b1fd1e-macos64.zip +.. _py31-macos64: https://s3.amazonaws.com/ifcopenshell-builds/ifcopenshell-python-31-v0.7.0-1b1fd1e-macos64.zip + +.. warning:: + + Versions for Mac ARM devices (M1 chip) are not yet available. You are free to + compile it yourself manually, but this requires a level of technical + expertise. + +2. Copy the ``ifcopenshell`` directory into your Python path. If you're not sure + where your Python path is, run the following code in Python: + + .. code-block:: python + + import sys + print(sys.path) + + This will give you a list of possible directories that you can install the + IfcOpenShell module into. Most commonly, you will want to copy the + ``ifcopenshell`` directory into one of these called ``site-packages``. + +3. Test importing the module in a Python session or script to make sure it works. + + .. code-block:: python + + import ifcopenshell + print(ifcopenshell.version) + model = ifcopenshell.file() + +Pip +--- + +TODO + +Conda +----- + +TODO + +Using the BlenderBIM Add-on +--------------------------- + +The BlenderBIM Add-on is a Blender based graphical interface to IfcOpenShell. +Other than providing a graphical IFC authoring platform, it also comes with +IfcOpenShell and a Python shell built-in. This means you don't need to install +Python first, and you also can compare your IfcOpenShell scripting to what you +see with a visual model viewer. + +1. Install the BlenderBIM Add-on by following the `BlenderBIM Add-on + installation documentation + `_. + +2. Launch Blender. On the top left of the Viewport panel, click the **Editor + Type** icon to change the viewport into a **Python Console**. + + .. image:: blenderbim-python-console-1.png + +3. Make sure you can import IfcOpenShell successfully with the following script. + + .. image:: blenderbim-python-console-2.png + +.. tip:: + + Before changing the **Editor Type** to a **Python Console**, you can click on + the ``View > Area > Vertical Split`` menu which will divide your viewport. + This allows you to write scripts next to the 3D view of a model. + +Blender also comes with a text editor so you can write longer scripts. Instead +of choosing the **Python Console**, choose the **Text Editor**. + +.. image:: blenderbim-text-editor-1.png + +You can now create a new text file for your script by clicking ``Text > New``, +and run your script using the **Text > Run Script** menu or by clicking on the +**Play Icon**. + +.. image:: blenderbim-text-editor-2.png + +.. seealso:: + + You may be interested in learning how to graphically explore an IFC model in + Blender. This can help when learning how to write scripts as you can double + check the results of your scripts with what you see in the graphical + interface. `Read more + `_. + +Compiling from source +--------------------- + +TODO diff --git a/src/blenderbim/docs/ifcopenshell.rst b/src/ifcopenshell-python/docs/ifcopenshell.rst similarity index 100% rename from src/blenderbim/docs/ifcopenshell.rst rename to src/ifcopenshell-python/docs/ifcopenshell.rst diff --git a/src/blenderbim/docs/ifcsverchok.rst b/src/ifcopenshell-python/docs/ifcsverchok.rst similarity index 100% rename from src/blenderbim/docs/ifcsverchok.rst rename to src/ifcopenshell-python/docs/ifcsverchok.rst diff --git a/src/blenderbim/docs/ifcsverchok/installation.rst b/src/ifcopenshell-python/docs/ifcsverchok/installation.rst similarity index 100% rename from src/blenderbim/docs/ifcsverchok/installation.rst rename to src/ifcopenshell-python/docs/ifcsverchok/installation.rst diff --git a/src/ifcopenshell-python/docs/index.rst b/src/ifcopenshell-python/docs/index.rst new file mode 100644 index 0000000000..b2d3c866eb --- /dev/null +++ b/src/ifcopenshell-python/docs/index.rst @@ -0,0 +1,32 @@ +Let's learn IfcOpenShell +======================== + +IfcOpenShell is a suite of developer libraries and utilities to manipulate OpenBIM data. + +.. note:: + + This documentation is incomplete. Would you like to help write more? `Get in touch! `__ + +.. toctree:: + :hidden: + :maxdepth: 1 + :caption: Contents: + + ifcopenshell + ifcopenshell-python + ifcconvert + bimtester + ifcdiff + ifcclash + ifccobie + ifcmax + ifcsverchok + bimserver-plugin + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/src/ifcopenshell-python/docs/make.bat b/src/ifcopenshell-python/docs/make.bat new file mode 100644 index 0000000000..922152e96a --- /dev/null +++ b/src/ifcopenshell-python/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/src/ifcopenshell-python/ifcopenshell/__init__.py b/src/ifcopenshell-python/ifcopenshell/__init__.py index c75c4989e9..3ec2188265 100644 --- a/src/ifcopenshell-python/ifcopenshell/__init__.py +++ b/src/ifcopenshell-python/ifcopenshell/__init__.py @@ -16,6 +16,17 @@ # You should have received a copy of the GNU Lesser General Public License # along with IfcOpenShell. If not, see . +"""The entry module for IfcOpenShell + +Typically used for opening an IFC via a filepath, or accessing one of the +submodules. + +Example:: + + import ifcopenshell + print(ifcopenshell.version) # v0.7.0-1b1fd1e6 + model = ifcopenshell.open("/path/to/model.ifc") +""" from __future__ import absolute_import from __future__ import division @@ -60,14 +71,27 @@ UNSUPPORTED_SCHEMA = ifcopenshell_wrapper.file_open_status.UNSUPPORTED_SCHEMA class Error(Exception): + """Error used when a generic problem occurs""" pass class SchemaError(Error): + """Error used when an IFC schema related problem occurs""" pass def open(fn): + """Loads an IFC dataset from a filepath + + :param fn: Filepath to the IFC model + :type fn: string + :returns: A file object + :rtype: ifcopenshell.file.file + + Example:: + + ifc_file = ifcopenshell.open("/path/to/model.ifc") + """ f = ifcopenshell_wrapper.open(os.path.abspath(fn)) if f.good(): return file(f) @@ -84,6 +108,26 @@ def open(fn): def create_entity(type, schema="IFC4", *args, **kwargs): + """Creates a new IFC entity that does not belong to an IFC file object + + Note that it is more common to create entities within a existing file + object. See :meth:`ifcopenshell.file.file.create_entity`. + + :param type: Case insensitive name of the IFC class + :type type: string + :param schema: The IFC schema identifier + :type schema: string + :param args: The positional arguments of the IFC class + :param kwargs: The keyword arguments of the IFC class + :returns: An entity instance + :rtype: ifcopenshell.entity_instance.entity_instance + + Example:: + + person = ifcopenshell.create_entity("IfcPerson") # #0=IfcPerson($,$,$,$,$,$,$,$) + model = ifcopenshell.file() + model.add(person) # #1=IfcPerson($,$,$,$,$,$,$,$) + """ e = entity_instance((schema, type)) attrs = list(enumerate(args)) + [(e.wrapped_data.get_argument_index(name), arg) for name, arg in kwargs.items()] for idx, arg in attrs: @@ -95,6 +139,17 @@ gcroot = [] def register_schema(schema): + """Registers a custom IFC schema + + :param schema: A schema object + :type schema: ifcopenshell.express.schema_class.SchemaClass + + Example:: + + schema = ifcopenshell.express.parse("/path/to/ifc-custom.exp") + ifcopenshell.register_schema(schema) + ifcopenshell.file(schema="IFC_CUSTOM") + """ gcroot.append(schema) ifcopenshell_wrapper.register_schema(schema.schema) register_schema_attributes(schema.schema) diff --git a/src/ifcopenshell-python/ifcopenshell/api/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/__init__.py index c53f1aa85b..876071d223 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/__init__.py +++ b/src/ifcopenshell-python/ifcopenshell/api/__init__.py @@ -16,6 +16,8 @@ # You should have received a copy of the GNU Lesser General Public License # along with IfcOpenShell. If not, see . +"""High level user-oriented IFC authoring capabilities""" + import json import numpy import importlib diff --git a/src/ifcopenshell-python/ifcopenshell/api/aggregate/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/aggregate/__init__.py new file mode 100644 index 0000000000..18731bf443 --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/aggregate/__init__.py @@ -0,0 +1,24 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . + +"""Aggregates are the concept of breaking down larger wholes into smaller parts. + +One common use is spatial elements, such as how a site has multiple buildings, +and a building has multiple storeys. Another is for regular elements, such as +how a wall is made out of members and coverings. +""" diff --git a/src/ifcopenshell-python/ifcopenshell/api/aggregate/assign_object.py b/src/ifcopenshell-python/ifcopenshell/api/aggregate/assign_object.py index d6cc75ee8a..dc630e6d4d 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/aggregate/assign_object.py +++ b/src/ifcopenshell-python/ifcopenshell/api/aggregate/assign_object.py @@ -21,14 +21,24 @@ import ifcopenshell.api class Usecase: - def __init__(self, file, **settings): + def __init__(self, file, product=None, relating_object=None): + """Assigns an object as an aggregate to a product + + :param product: The part of the aggregate + :param relating_object: The whole of the aggregate + :return: entity: The aggregate relationship + + Example:: + + element = ifcopenshell.api.run("root.create_entity", model, ifc_class="IfcSite") + subelement = ifcopenshell.api.run("root.create_entity", model, ifc_class="IfcBuilding") + ifcopenshell.api.run("aggregate.assign_object", model, product=subelement, relating_object=element) + """ self.file = file self.settings = { - "product": None, - "relating_object": None, + "product": product, + "relating_object": relating_object, } - for key, value in settings.items(): - self.settings[key] = value def execute(self): decomposes = None diff --git a/src/ifcopenshell-python/ifcopenshell/api/attribute/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/attribute/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/attribute/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/boundary/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/boundary/__init__.py new file mode 100644 index 0000000000..c2a0c1900d --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/boundary/__init__.py @@ -0,0 +1,21 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . + +"""Boundaries are primarily used for representing virtual interfaces between +spaces for energy analysis. +""" diff --git a/src/ifcopenshell-python/ifcopenshell/api/classification/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/classification/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/classification/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/classification/add_reference.py b/src/ifcopenshell-python/ifcopenshell/api/classification/add_reference.py index 37012f0c3b..0d271ec135 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/classification/add_reference.py +++ b/src/ifcopenshell-python/ifcopenshell/api/classification/add_reference.py @@ -27,6 +27,7 @@ class Usecase: "product": None, "reference": None, "classification": None, + "is_lightweight": True, } for key, value in settings.items(): self.settings[key] = value @@ -57,12 +58,30 @@ class Usecase: return migrator = ifcopenshell.util.schema.Migrator() - # This removal patch is to support a lightweight classification - old_referenced_source = self.settings["reference"].ReferencedSource - self.settings["reference"].ReferencedSource = None + + if self.settings["is_lightweight"]: + old_referenced_source = self.settings["reference"].ReferencedSource + self.settings["reference"].ReferencedSource = None + else: + existing_classification = [ + c for c in self.file.by_type("IfcClassification") if c.Name == self.settings["classification"].Name + ] + relating_classification = migrator.migrate(self.settings["reference"], self.file) - relating_classification.ReferencedSource = self.settings["classification"] - self.settings["reference"].ReferencedSource = old_referenced_source + + if self.settings["is_lightweight"]: + relating_classification.ReferencedSource = self.settings["classification"] + self.settings["reference"].ReferencedSource = old_referenced_source + elif existing_classification: + to_delete = set() + for traversed_reference in self.file.traverse(relating_classification): + if traversed_reference.ReferencedSource.is_a("IfcClassification"): + to_delete.add(traversed_reference.ReferencedSource) + traversed_reference.ReferencedSource = existing_classification[0] + break + for element in to_delete: + self.file.remove(element) + self.file.create_entity( "IfcRelAssociatesClassification", **{ diff --git a/src/ifcopenshell-python/ifcopenshell/api/constraint/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/constraint/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/constraint/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/context/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/context/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/context/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/control/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/control/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/control/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/cost/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/cost/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/cost/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/document/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/document/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/document/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/drawing/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/drawing/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/drawing/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py index 9bac3ba502..cbab82e81d 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/add_representation.py @@ -115,7 +115,7 @@ class Usecase: if self.settings["context"].is_a() == "IfcGeometricRepresentationContext": return self.create_variable_representation() if self.settings["context"].ContextIdentifier == "Annotation": - return self.create_geometric_set_representation() + return self.create_annotation3d_representation() elif self.settings["context"].ContextIdentifier == "Axis": return self.create_curve3d_representation() elif self.settings["context"].ContextIdentifier == "Body": @@ -149,9 +149,7 @@ class Usecase: shape_representation.Items = items return shape_representation elif self.settings["context"].ContextIdentifier == "Annotation": - shape_representation = self.create_geometric_curve_set_representation(is_2d=True) - shape_representation.RepresentationType = "Annotation2D" - return shape_representation + return self.create_annotation2d_representation() elif self.settings["context"].ContextIdentifier == "Axis": return self.create_curve2d_representation() elif self.settings["context"].ContextIdentifier == "Body": @@ -172,9 +170,7 @@ class Usecase: elif self.settings["context"].ContextIdentifier == "SurveyPoints": pass else: - shape_representation = self.create_geometric_curve_set_representation(is_2d=True) - shape_representation.RepresentationType = "Annotation2D" - return shape_representation + return self.create_annotation2d_representation() def create_lighting_representation(self): return self.file.createIfcShapeRepresentation( @@ -293,22 +289,73 @@ class Usecase: self.create_curves(is_2d=True), ) - def create_curves(self, is_2d=False): + def create_curve_bounded_planes(self, is_2d=False): + items = [] + if self.file.schema != "IFC2X3": + points = self.create_cartesian_point_list_from_vertices(self.settings["geometry"].vertices, is_2d=False) + for polygon in self.settings["geometry"].polygons: + plane = self.create_plane(polygon) + if self.file.schema == "IFC2X3": + curve = self.create_curve_from_polygon_ifc2x3(polygon, is_2d=False) + else: + curve = self.create_curve_from_polygon(points, polygon, is_2d=False) + items.append(self.file.createIfcCurveBoundedPlane(BasisSurface=plane, OuterBoundary=curve)) + return items + + def create_plane(self, polygon): + return self.file.createIfcPlane(Position=self.file.createIfcAxis2Placement3D( + Location=self.file.createIfcCartesianPoint(polygon.center), + Axis=self.file.createIfcDirection(polygon.normal), + )) + + def create_annotation_fill_areas(self, is_2d=False): + items = [] + if self.file.schema != "IFC2X3": + points = self.create_cartesian_point_list_from_vertices(self.settings["geometry"].vertices, is_2d=is_2d) + for polygon in self.settings["geometry"].polygons: + if self.file.schema == "IFC2X3": + curve = self.create_curve_from_polygon_ifc2x3(polygon, is_2d=is_2d) + else: + curve = self.create_curve_from_polygon(points, polygon, is_2d=is_2d) + items.append(self.file.createIfcAnnotationFillArea(OuterBoundary=curve)) + return items + + def create_curve_from_polygon(self, points, polygon, is_2d=False): + indices = list(polygon.vertices) + indices.append(indices[0]) + edge_loop = [self.file.createIfcLineIndex((v1 + 1, v2 + 1)) for v1, v2 in zip(indices, indices[1:])] + return self.file.createIfcIndexedPolyCurve(points, edge_loop) + + def create_curve_from_polygon_ifc2x3(self, polygon, is_2d=False): + indices = list(polygon.vertices) + indices.append(indices[0]) + points = [ + self.create_cartesian_point(v.co.x, v.co.y, v.co.z if not is_2d else None) + for v in self.settings["geometry"].vertices + ] + return self.file.createIfcPolyline([points[i] for i in indices]) + + def create_curves(self, should_exclude_faces=False, is_2d=False): if isinstance(self.settings["geometry"], bpy.types.Mesh): if self.file.schema == "IFC2X3": - return self.create_curves_from_mesh_ifc2x3(is_2d=is_2d) + return self.create_curves_from_mesh_ifc2x3(should_exclude_faces=should_exclude_faces, is_2d=is_2d) else: - return self.create_curves_from_mesh(is_2d=is_2d) + return self.create_curves_from_mesh(should_exclude_faces=should_exclude_faces, is_2d=is_2d) elif isinstance(self.settings["geometry"], bpy.types.Curve): return self.create_curves_from_curve(is_2d=is_2d) - def create_curves_from_mesh(self, is_2d=False): + def create_curves_from_mesh(self, should_exclude_faces=False, is_2d=False): curves = [] points = self.create_cartesian_point_list_from_vertices(self.settings["geometry"].vertices, is_2d=is_2d) edge_loops = [] previous_edge = None edge_loop = [] - for edge in self.settings["geometry"].edges: + face_edges = set() + if should_exclude_faces: + [face_edges.union([self.settings["geometry"].edge_keys.index(ek) for ek in p.edge_keys]) for p in self.settings["geometry"].polygons] + for i, edge in enumerate(self.settings["geometry"].edges): + if should_exclude_faces and i in face_edges: + continue if (Vector(points.CoordList[edge.vertices[0]]) - Vector(points.CoordList[edge.vertices[1]])).length < 0.001: # Maybe we should warn the user to weld vertices in this scenario? continue @@ -325,7 +372,7 @@ class Usecase: curves.append(self.file.createIfcIndexedPolyCurve(points, edge_loop)) return curves - def create_curves_from_mesh_ifc2x3(self, is_2d=False): + def create_curves_from_mesh_ifc2x3(self, should_exclude_faces=False, is_2d=False): curves = [] points = [ self.create_cartesian_point(v.co.x, v.co.y, v.co.z if not is_2d else None) @@ -335,7 +382,12 @@ class Usecase: edge_loops = [] previous_edge = None edge_loop = [] - for edge in self.settings["geometry"].edges: + face_edges = set() + if should_exclude_faces: + [face_edges.union([self.settings["geometry"].edge_keys.index(ek) for ek in p.edge_keys]) for p in self.settings["geometry"].polygons] + for i, edge in enumerate(self.settings["geometry"].edges): + if should_exclude_faces and i in face_edges: + continue if (Vector(coord_list[edge.vertices[0]]) - Vector(coord_list[edge.vertices[1]])).length < 0.001: # Maybe we should warn the user to weld vertices in this scenario? continue @@ -600,6 +652,33 @@ class Usecase: return (co / self.settings["unit_scale"]) + self.settings["coordinate_offset"] return co / self.settings["unit_scale"] + def create_annotation2d_representation(self): + if isinstance(self.settings["geometry"], bpy.types.Mesh) and len(self.settings["geometry"].polygons): + items = self.create_annotation_fill_areas(is_2d=True) + else: + items = [self.file.createIfcGeometricCurveSet(self.create_curves(is_2d=True))] + return self.file.createIfcShapeRepresentation( + self.settings["context"], + self.settings["context"].ContextIdentifier, + "Annotation2D", + items, + ) + + def create_annotation3d_representation(self): + items = [] + curves = self.create_curves(should_exclude_faces=True, is_2d=False) + if curves: + items.append(self.file.createIfcGeometricCurveSet(curves)) + surfaces = self.create_curve_bounded_planes() + if surfaces: + items.append(self.file.createIfcGeometricSet(surfaces)) + return self.file.createIfcShapeRepresentation( + self.settings["context"], + self.settings["context"].ContextIdentifier, + "GeometricSet", + items, + ) + def create_geometric_curve_set_representation(self, is_2d=False): geometric_curve_set = self.file.createIfcGeometricCurveSet(self.create_curves(is_2d=is_2d)) return self.file.createIfcShapeRepresentation( diff --git a/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py b/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py index caad38bb05..f604d5a3da 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py +++ b/src/ifcopenshell-python/ifcopenshell/api/geometry/edit_object_placement.py @@ -103,6 +103,10 @@ class Usecase: for referenced_placement in placement.ReferencedByPlacements: matrix = ifcopenshell.util.placement.get_local_placement(referenced_placement) for obj in referenced_placement.PlacesObject: + # Although a port is technically a nested child, it is generally + # more intuitive that the ports always move with the parent. + if obj.is_a("IfcDistributionPort"): + continue results.append({"product": obj, "matrix": matrix, "is_si": False, "should_transform_children": False}) results.extend(self.get_children_settings(referenced_placement)) return results diff --git a/src/ifcopenshell-python/ifcopenshell/api/georeference/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/georeference/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/georeference/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/grid/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/grid/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/grid/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/group/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/group/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/group/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/layer/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/layer/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/layer/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/library/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/library/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/library/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/material/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/material/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/assign_material.py b/src/ifcopenshell-python/ifcopenshell/api/material/assign_material.py index 4430c2eb63..70a5040352 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/material/assign_material.py +++ b/src/ifcopenshell-python/ifcopenshell/api/material/assign_material.py @@ -91,11 +91,23 @@ class Usecase: subelement.SweptArea = profile def create_layer_set_usage(self, material_set): + if self.settings["product"].is_a() in [ + "IfcSlab", + "IfcSlabStandardCase", + "IfcSlabElementedCase", + "IfcRoof", + "IfcRamp", + "IfcPlate", + "IfcPlateStandardCase", + ]: + layer_set_direction = "AXIS3" + else: + layer_set_direction = "AXIS2" return self.file.create_entity( "IfcMaterialLayerSetUsage", **{ "ForLayerSet": material_set, - "LayerSetDirection": "AXIS2" if self.settings["product"].is_a("IfcWall") else "AXIS3", + "LayerSetDirection": layer_set_direction, "DirectionSense": "POSITIVE", "OffsetFromReferenceLine": 0, } diff --git a/src/ifcopenshell-python/ifcopenshell/api/nest/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/nest/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/nest/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/owner/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/assign_actor.py b/src/ifcopenshell-python/ifcopenshell/api/owner/assign_actor.py new file mode 100644 index 0000000000..eefe3d5142 --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/assign_actor.py @@ -0,0 +1,59 @@ +# 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 +import ifcopenshell.api + + +class Usecase: + def __init__(self, file, **settings): + self.file = file + self.settings = { + "relating_actor": None, + "related_object": None, + } + for key, value in settings.items(): + self.settings[key] = value + + def execute(self): + if self.settings["related_object"].HasAssignments: + for rel in self.settings["related_object"].HasAssignments: + if rel.is_a("IfcRelAssignsToActor") and rel.RelatingActor == self.settings["relating_actor"]: + return + + rel = None + + if self.settings["relating_actor"].IsActingUpon: + rel = self.settings["relating_actor"].IsActingUpon[0] + + if rel: + related_objects = list(rel.RelatedObjects) + related_objects.append(self.settings["related_object"]) + rel.RelatedObjects = related_objects + ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": rel}) + else: + rel = self.file.create_entity( + "IfcRelAssignsToActor", + **{ + "GlobalId": ifcopenshell.guid.new(), + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), + "RelatedObjects": [self.settings["related_object"]], + "RelatingActor": self.settings["relating_actor"], + } + ) + return rel diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/unassign_actor.py b/src/ifcopenshell-python/ifcopenshell/api/owner/unassign_actor.py new file mode 100644 index 0000000000..9bd8b2f834 --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/unassign_actor.py @@ -0,0 +1,43 @@ +# 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 +import ifcopenshell.api + + +class Usecase: + def __init__(self, file, **settings): + self.file = file + self.settings = { + "relating_actor": None, + "related_object": None, + } + for key, value in settings.items(): + self.settings[key] = value + + def execute(self): + for rel in self.settings["related_object"].HasAssignments or []: + if not rel.is_a("IfcRelAssignsToActor") or rel.RelatingActor != self.settings["relating_actor"]: + continue + if len(rel.RelatedObjects) == 1: + return self.file.remove(rel) + related_objects = list(rel.RelatedObjects) + related_objects.remove(self.settings["related_object"]) + rel.RelatedObjects = related_objects + ifcopenshell.api.run("owner.update_owner_history", self.file, **{"element": rel}) + return rel diff --git a/src/ifcopenshell-python/ifcopenshell/api/profile/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/profile/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/profile/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/project/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/project/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/project/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py b/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py index 3f73d3c07a..828335c0d6 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py +++ b/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py @@ -109,7 +109,7 @@ class Usecase: for inverse in self.file.get_inverse(added_context): ifcopenshell.util.element.replace_attribute(inverse, added_context, equivalent_existing_context) for added_context in added_contexts: - ifcopenshell.util.element.remove_deep(self.file, added_context) + ifcopenshell.util.element.remove_deep2(self.file, added_context) element_type = ifcopenshell.util.element.get_type(self.settings["element"]) if element_type: diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/pset/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/pset/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset_template/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/pset_template/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/pset_template/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/resource/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/resource/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/resource/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/root/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/root/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/root/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/root/copy_class.py b/src/ifcopenshell-python/ifcopenshell/api/root/copy_class.py index 1021998af4..15ca564142 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/root/copy_class.py +++ b/src/ifcopenshell-python/ifcopenshell/api/root/copy_class.py @@ -45,6 +45,24 @@ class Usecase: inverse.RelatedObjects = [to_element] pset = ifcopenshell.util.element.copy_deep(self.file, inverse.RelatingPropertyDefinition) inverse.RelatingPropertyDefinition = pset + elif inverse.is_a("IfcRelNests") and inverse.RelatingObject == from_element: + ports = [e for e in inverse.RelatedObjects if e.is_a("IfcDistributionPort")] + if ports: + new_ports = [ifcopenshell.api.run("root.copy_class", self.file, product=p) for p in ports] + inverse = ifcopenshell.util.element.copy(self.file, inverse) + inverse.RelatingObject = to_element + inverse.RelatedObjects = new_ports + for port in new_ports: + ifcopenshell.api.run("system.unassign_port", self.file, element=from_element, port=port) + matrix = ifcopenshell.util.placement.get_local_placement(port.ObjectPlacement) + ifcopenshell.api.run( + "geometry.edit_object_placement", + self.file, + product=port, + matrix=matrix, + is_si=False, + should_transform_children=False, + ) elif inverse.is_a("IfcRelAggregates") and inverse.RelatingObject == from_element: continue elif inverse.is_a("IfcRelContainedInSpatialStructure") and inverse.RelatingStructure == from_element: diff --git a/src/ifcopenshell-python/ifcopenshell/api/root/remove_product.py b/src/ifcopenshell-python/ifcopenshell/api/root/remove_product.py index c4f195a13c..489be2a31f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/root/remove_product.py +++ b/src/ifcopenshell-python/ifcopenshell/api/root/remove_product.py @@ -57,4 +57,11 @@ class Usecase: self.file.remove(inverse) elif inverse.is_a("IfcRelVoidsElement"): self.file.remove(inverse) + elif inverse.is_a("IfcRelNests"): + if inverse.RelatingObject == self.settings["product"]: + for subelement in inverse.RelatedObjects: + if subelement.is_a("IfcDistributionPort"): + ifcopenshell.api.run("root.remove_product", self.file, product=subelement) + if not inverse.RelatedObjects: + self.file.remove(inverse) self.file.remove(self.settings["product"]) diff --git a/src/ifcopenshell-python/ifcopenshell/api/sequence/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/sequence/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/sequence/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/spatial/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/spatial/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/spatial/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/structural/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/structural/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/structural/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/style/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/style/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/style/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/system/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/system/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/system/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/type/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/type/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/type/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/type/assign_type.py b/src/ifcopenshell-python/ifcopenshell/api/type/assign_type.py index 4305302fe0..6d3991bb8e 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/type/assign_type.py +++ b/src/ifcopenshell-python/ifcopenshell/api/type/assign_type.py @@ -72,7 +72,7 @@ class Usecase: } ) - if self.settings["relating_type"].RepresentationMaps: + if getattr(self.settings["relating_type"], "RepresentationMaps", None): ifcopenshell.api.run( "type.map_type_representations", self.file, diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/unit/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/unit/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/api/void/__init__.py b/src/ifcopenshell-python/ifcopenshell/api/void/__init__.py new file mode 100644 index 0000000000..e0caddbe3c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/api/void/__init__.py @@ -0,0 +1,17 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 . diff --git a/src/ifcopenshell-python/ifcopenshell/draw.py b/src/ifcopenshell-python/ifcopenshell/draw.py index 8687edea8e..42755555b5 100644 --- a/src/ifcopenshell-python/ifcopenshell/draw.py +++ b/src/ifcopenshell-python/ifcopenshell/draw.py @@ -16,6 +16,7 @@ # You should have received a copy of the GNU Lesser General Public License # along with IfcOpenShell. If not, see . +"""2D drawing generation and serialisation""" import math import json @@ -56,6 +57,7 @@ class draw_settings: drawing_guid: str = "" profile_threshold: int = -1 cells: bool = True + merge_cells: bool = False def main(settings, files, iterators=None, merge_projection=True, progress_function=DO_NOTHING): @@ -173,118 +175,182 @@ def main(settings, files, iterators=None, merge_projection=True, progress_functi if not settings.cells: return svg_data_1.encode("ascii", "xmlcharrefreplace") - - # Parse SVG into vector of line segments - # - # The second argument 'projection' tells the parser to only include groups - # that have the classname 'projection'. The IfcOpenShell SVG serializer puts - # the hidden line rendering output into this group. So the sections are not - # included here as they already form closed loops. - ls = W.svg_to_line_segments(svg_data_1, "projection") - progress_function("creating cells") - ps = W.line_segments_to_polygons(W.FILTERED_CARTESIAN_QUOTIENT, 1.0e-3, ls) - progress_function("done creating cells") - - """ - # Debugging tool to plot line segments and cells - from matplotlib import pyplot as plt - - arr = numpy.array(ls).reshape((-1, 2, 2)) - for x in arr: - plt.plot(x.T[0], x.T[1]) - for x in ps[0]: - plt.fill(numpy.array(x.boundary).T[0], numpy.array(x.boundary).T[1]) - """ - - # Reserialize cells into an SVG string - svg_data_2 = W.polygons_to_svg(ps, True) - - # We parse both SVG files to create on document with the combination of sections from - # the output directly from the serializer and the cells found from the hidden line - # rendering - dom1 = parseString(svg_data_1) - dom2 = parseString(svg_data_2) - - svg1 = dom1.childNodes[0] - svg2 = dom2.childNodes[0] - + def yield_groups(n): if n.nodeType == n.ELEMENT_NODE and n.tagName == "g": yield n for c in n.childNodes: yield from yield_groups(c) + dom1 = parseString(svg_data_1) + svg1 = dom1.childNodes[0] # From file 1 we take the groups to be substituted groups1 = [g for g in yield_groups(svg1) if g.getAttribute("class") == "projection"] - # file 2 only has the groups we are interested in. - groups2 = list(yield_groups(svg2)) - - assert len(groups1) == len(groups2) - - for ii, (g1, g2) in enumerate(zip(groups1, groups2)): + + # Parse SVG into vector of line segments + # + # The second argument 'projection' tells the parser to only include groups + # that have the classname 'projection'. The IfcOpenShell SVG serializer puts + # the hidden line rendering output into this group. So the sections are not + # included here as they already form closed loops. + + ls_groups = W.svg_to_line_segments(svg_data_1, "projection") + for i, (ls, g1) in enumerate(zip(ls_groups, groups1)): + progress_function("creating cells", i) + projection, g1 = g1, g1.parentNode + + svgfill_context = W.context(W.FILTERED_CARTESIAN_QUOTIENT, 1.0e-3) + svgfill_context.add(ls) + + if settings.merge_cells: + # To be refined: + # - Find cells on original line segments + # - Associate cells with IFC entities for merging + # - Merge cells by discarding edges + # - Associate cells with IFC entities for styling + num_passes = 1 + else: + num_passes = 0 + + for iteration in range(num_passes+1): + + # initialize empty group, note that in the current approach only one + # group is stored + ps = W.svg_groups_of_polygons() + + if iteration != 0 or svgfill_context.build(): + svgfill_context.write(ps) + + """ + # Debugging tool to plot line segments and cells + from matplotlib import pyplot as plt - # These are attributes on the original group that we can use to reconstruct - # a 4x4 matrix of the projection used in the SVG generation process - nm = g1.getAttribute("ifc:name") - m4 = numpy.array(json.loads(g1.getAttribute("ifc:plane"))) - m3 = numpy.array(json.loads(g1.getAttribute("ifc:matrix3"))) - m44 = numpy.eye(4) - m44[0][0:2] = m3[0][0:2] - m44[1][0:2] = m3[1][0:2] - m44[0][3] = m3[0][2] - m44[1][3] = m3[1][2] - m44 = numpy.linalg.inv(m44) + arr = numpy.array(ls).reshape((-1, 2, 2)) + for x in arr: + plt.plot(x.T[0], x.T[1]) + for x in ps[0]: + plt.fill(numpy.array(x.boundary).T[0], numpy.array(x.boundary).T[1]) + """ + + if iteration != num_passes: + pairs = svgfill_context.get_face_pairs() + semantics = [None] * (max(pairs)+1) + # For every edge print the two neighbouring faces + # for x in range(0, len(pairs), 2): + # print(x // 2, *pairs[x:x+2]) - def project(xy, z=0.0): - xyzw = m44 @ numpy.array(xy + [z, 1.0]) - xyzw[1] *= -1.0 - return (m4 @ xyzw)[0:3] + # Reserialize cells into an SVG string + svg_data_2 = W.polygons_to_svg(ps, True) - def pythonize(arr): - return tuple(map(float, arr)) + # We parse both SVG files to create on document with the combination of sections from + # the output directly from the serializer and the cells found from the hidden line + # rendering + dom2 = parseString(svg_data_2) + svg2 = dom2.childNodes[0] + # file 2 only has the groups we are interested in. + # in fact in the approach, it's only a single group + + g2 = list(yield_groups(svg2))[0] - # Loop over the cell paths - for i, p in enumerate(g2.getElementsByTagName("path")): + # These are attributes on the original group that we can use to reconstruct + # a 4x4 matrix of the projection used in the SVG generation process + nm = g1.getAttribute("ifc:name") + m4 = numpy.array(json.loads(g1.getAttribute("ifc:plane"))) + m3 = numpy.array(json.loads(g1.getAttribute("ifc:matrix3"))) + m44 = numpy.eye(4) + m44[0][0:2] = m3[0][0:2] + m44[1][0:2] = m3[1][0:2] + m44[0][3] = m3[0][2] + m44[1][3] = m3[1][2] + m44 = numpy.linalg.inv(m44) - progress_function("group", ii, "path", i) + def project(xy, z=0.0): + xyzw = m44 @ numpy.array(xy + [z, 1.0]) + xyzw[1] *= -1.0 + return (m4 @ xyzw)[0:3] - d = p.getAttribute("d") - # point inside is an attribute that comes from line_segments_to_polygons() - # it is an arbitrary point guaranteed to be inside the polygon and outside - # of any potential inner bounds. We can use this to construct a ray to find - # the face of the IFC element that the cell belongs to. - assert p.hasAttribute("ifc:pointInside") + def pythonize(arr): + return tuple(map(float, arr)) - xy = list(map(float, p.getAttribute("ifc:pointInside").split(","))) + # Loop over the cell paths + for pi, p in enumerate(g2.getElementsByTagName("path")): - a, b = project(xy, 0.0), project(xy, -100.0) - elements = tree.select_ray(pythonize(a), pythonize(b - a)) + progress_function("group", i, "pass", iteration, "path", pi) - if elements: - # Put the IFC element entity type on the path for CSS-based styling - p.setAttribute("class", elements[0].instance.is_a()) + d = p.getAttribute("d") + # point inside is an attribute that comes from line_segments_to_polygons() + # it is an arbitrary point guaranteed to be inside the polygon and outside + # of any potential inner bounds. We can use this to construct a ray to find + # the face of the IFC element that the cell belongs to. + assert p.hasAttribute("ifc:pointInside") - # Obtain style (IfcOpenShell IfcGeom::Material) - style = tree.styles()[elements[0].style_index] + xy = list(map(float, p.getAttribute("ifc:pointInside").split(","))) + + a, b = project(xy, 0.0), project(xy, -100.0) + + inside_elements = tree.select(pythonize(a)) + + if inside_elements: + elements = None + if iteration != num_passes: + semantics[pi] = (inside_elements[0], -1) + else: + elements = tree.select_ray(pythonize(a), pythonize(b - a)) - # This is just a demonstration. We compose a factor of using: - # - ray intersection distance - # - dot product ray . face normal - # - style transparency - # the factor determines how much white will be interpolated - # into the style diffuse color. - clr = numpy.array(style.diffuse) - factor = (math.log(elements[0].distance + 2.0) / 7.0) * (1.0 - 0.5 * abs(elements[0].dot_product)) - if style.has_transparency: - factor *= 1.0 - style.transparency - clr = WHITE * (1.0 - factor) + clr * factor + if elements: + # Put the IFC element entity type on the path for CSS-based styling + p.setAttribute("class", elements[0].instance.is_a()) - svg_fill = "rgb(%s)" % ", ".join(str(f * 255.0) for f in clr[0:3]) - else: - svg_fill = "none" + # Obtain style (IfcOpenShell IfcGeom::Material) + style = tree.styles()[elements[0].style_index] - p.setAttribute("style", "fill: " + svg_fill) + # This is just a demonstration. We compose a factor of using: + # - ray intersection distance + # - dot product ray . face normal + # - style transparency + # the factor determines how much white will be interpolated + # into the style diffuse color. + clr = numpy.array(style.diffuse) + factor = (math.log(elements[0].distance + 2.0) / 7.0) * (1.0 - 0.5 * abs(elements[0].dot_product)) + if style.has_transparency: + factor *= 1.0 - style.transparency + clr = WHITE * (1.0 - factor) + clr * factor + + svg_fill = "rgb(%s)" % ", ".join(str(f * 255.0) for f in clr[0:3]) + + if iteration != num_passes: + semantics[pi] = elements[0] + else: + svg_fill = "none" + + p.setAttribute("style", "fill: " + svg_fill) + + if iteration != num_passes: + to_remove = [] + + for he_idx in range(0, len(pairs), 2): + # @todo instead of ray_distance, better do (x.point - y.point).dot(x.normal) + # to see if they're coplanar, because ray-distance will be different in case + # of element surfaces non-orthogonal to the view direction + + def format(x): + if x is None: return None + elif isinstance(x, tuple): + # found to be inside element using tree.select() no face or style info + return x + else: return (x.instance.is_a(), x.ray_distance, tuple(x.position)) + + pp = pairs[he_idx:he_idx+2] + if pp == (-1, -1): + continue + data = list(map(format, map(semantics.__getitem__, pp))) + if None not in data and data[0][0] == data[1][0] and abs(data[0][1] - data[1][1]) < 1.e-5: + to_remove.append(he_idx // 2) + # Print edge index and semantic data + # print(he_idx // 2, *data) + + svgfill_context.merge(to_remove) # Swap the XML nodes from the files # Remove the original hidden line node we still have in the serializer output diff --git a/src/ifcopenshell-python/ifcopenshell/entity_instance.py b/src/ifcopenshell-python/ifcopenshell/entity_instance.py index 14cd7de69b..7b04d06387 100644 --- a/src/ifcopenshell-python/ifcopenshell/entity_instance.py +++ b/src/ifcopenshell-python/ifcopenshell/entity_instance.py @@ -88,7 +88,7 @@ for nm in ifcopenshell_wrapper.schema_names(): class entity_instance(object): - """This is the base Python class for all IFC objects. + """Base class for all IFC objects. An instantiated entity_instance will have methods of Python and the IFC class itself. diff --git a/src/ifcopenshell-python/ifcopenshell/express/implementation.py b/src/ifcopenshell-python/ifcopenshell/express/implementation.py index a500b41b2f..2e32e38829 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/implementation.py +++ b/src/ifcopenshell-python/ifcopenshell/express/implementation.py @@ -159,6 +159,8 @@ class Implementation(codegen.Base): "type": arg["full_type"].replace("::Value", ""), "non_optional_type": arg["non_optional_type"].replace("::Value", ""), "star_if_optional": "*" if "boost::optional" in arg["full_type"] else "", + "check_optional_set_begin": "if (v) {" if "boost::optional" in arg["full_type"] else "", + "check_optional_set_end": "}" if "boost::optional" in arg["full_type"] else "", }, ) diff --git a/src/ifcopenshell-python/ifcopenshell/express/schema_class.py b/src/ifcopenshell-python/ifcopenshell/express/schema_class.py index f6be4e888e..ba38778175 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/schema_class.py +++ b/src/ifcopenshell-python/ifcopenshell/express/schema_class.py @@ -283,10 +283,22 @@ __attribute__((optnone)) self.statements.extend( ( - "const schema_definition& %s::get_schema() {" % schema_name_title, + "static std::unique_ptr schema;", "", - " static const schema_definition* s = %(schema_name)s_populate_schema();" % locals(), - " return *s;", + "void %s::clear_schema() {" % schema_name_title, + " schema.reset();", + "}", + "", + ) + ) + + self.statements.extend( + ( + "const schema_definition& %s::get_schema() {" % schema_name_title, + " if (!schema) {", + " schema.reset(%(schema_name)s_populate_schema());" % locals(), + " }", + " return *schema;", "}", "", "", diff --git a/src/ifcopenshell-python/ifcopenshell/express/templates.py b/src/ifcopenshell-python/ifcopenshell/express/templates.py index 6870608335..3b0b043e9f 100644 --- a/src/ifcopenshell-python/ifcopenshell/express/templates.py +++ b/src/ifcopenshell-python/ifcopenshell/express/templates.py @@ -36,7 +36,9 @@ header = """ struct %(schema_name)s { -static const IfcParse::schema_definition& get_schema(); +IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); + +IFC_PARSE_API static void clear_schema(); static const char* const Identifier; @@ -257,13 +259,13 @@ get_attr_stmt_nested_array = "%(null_check)s aggregate_of_aggregate_of_instance: get_inverse = "return data_->getInverse(%(schema_name_upper)s_%(type)s_type, %(index)d)->as<%(type)s>();" set_attr_stmt = ( - "{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(%(star_if_optional)sv" - + ");data_->setArgument(%(index)d,attr);}" + "{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();%(check_optional_set_begin)sattr->set(%(star_if_optional)sv" + + ");%(check_optional_set_end)sdata_->setArgument(%(index)d,attr);}" ) -set_attr_stmt_enum = "{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(%(star_if_optional)sv,%(non_optional_type)s::ToString(%(star_if_optional)sv)));data_->setArgument(%(index)d,attr);}" +set_attr_stmt_enum = "{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();%(check_optional_set_begin)sattr->set(IfcWrite::IfcWriteArgument::EnumerationReference(%(star_if_optional)sv,%(non_optional_type)s::ToString(%(star_if_optional)sv)));%(check_optional_set_end)sdata_->setArgument(%(index)d,attr);}" set_attr_stmt_array = ( - "{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((%(star_if_optional)sv)->generalize()" - + ");data_->setArgument(%(index)d,attr);}" + "{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();%(check_optional_set_begin)sattr->set((%(star_if_optional)sv)->generalize()" + + ");%(check_optional_set_end)sdata_->setArgument(%(index)d,attr);}" ) constructor_stmt = ( diff --git a/src/ifcopenshell-python/ifcopenshell/file.py b/src/ifcopenshell-python/ifcopenshell/file.py index 0e9874da3f..73bd62c8e0 100644 --- a/src/ifcopenshell-python/ifcopenshell/file.py +++ b/src/ifcopenshell-python/ifcopenshell/file.py @@ -180,14 +180,12 @@ class file(object): ifc_file = ifcopenshell.open(file_path) products = ifc_file.by_type("IfcProduct") - print(products[0].id(), products[0].GlobalId) - >>> 122 2XQ$n5SLP5MBLyL442paFx - # Subscripting - print(products[0] == ifc_file[122] == ifc_file['2XQ$n5SLP5MBLyL442paFx']) - >>> True + print(products[0].id(), products[0].GlobalId) # 122 2XQ$n5SLP5MBLyL442paFx + print(products[0] == ifc_file[122] == ifc_file["2XQ$n5SLP5MBLyL442paFx"]) # True """ def __init__(self, f=None, schema=None): + """Create a new file object""" if f is not None: self.wrapped_data = f else: @@ -247,12 +245,12 @@ class file(object): Example:: f = ifcopenshell.file() - f.create_entity('IfcPerson') - >>> #1=IfcPerson($,$,$,$,$,$,$,$) - f.create_entity('IfcPerson', 'Foobar') - >>> #2=IfcPerson('Foobar',$,$,$,$,$,$,$) - f.create_entity('IfcPerson', Identification='Foobar') - >>> #3=IfcPerson('Foobar',$,$,$,$,$,$,$) + f.create_entity("IfcPerson") + # >>> #1=IfcPerson($,$,$,$,$,$,$,$) + f.create_entity("IfcPerson", "Foobar") + # >>> #2=IfcPerson('Foobar',$,$,$,$,$,$,$) + f.create_entity("IfcPerson", Identification="Foobar") + # >>> #3=IfcPerson('Foobar',$,$,$,$,$,$,$) """ eid = kwargs.pop("id", -1) diff --git a/src/ifcopenshell-python/ifcopenshell/geom/__init__.py b/src/ifcopenshell-python/ifcopenshell/geom/__init__.py index a960dde620..7edfeaa50b 100644 --- a/src/ifcopenshell-python/ifcopenshell/geom/__init__.py +++ b/src/ifcopenshell-python/ifcopenshell/geom/__init__.py @@ -16,6 +16,7 @@ # You should have received a copy of the GNU Lesser General Public License # along with IfcOpenShell. If not, see . +"""Geometry processing and analysis""" from __future__ import absolute_import from __future__ import division diff --git a/src/ifcopenshell-python/ifcopenshell/guid.py b/src/ifcopenshell-python/ifcopenshell/guid.py index 6f20166988..a5e417e251 100644 --- a/src/ifcopenshell-python/ifcopenshell/guid.py +++ b/src/ifcopenshell-python/ifcopenshell/guid.py @@ -16,6 +16,7 @@ # You should have received a copy of the GNU Lesser General Public License # along with IfcOpenShell. If not, see . +"""Reads and writes encoded GlobalIds""" from __future__ import absolute_import from __future__ import division diff --git a/src/ifcopenshell-python/ifcopenshell/ids.py b/src/ifcopenshell-python/ifcopenshell/ids.py index 27c336ba9d..9d7082541d 100644 --- a/src/ifcopenshell-python/ifcopenshell/ids.py +++ b/src/ifcopenshell-python/ifcopenshell/ids.py @@ -1,5 +1,5 @@ # IDS - Information Delivery Specification. -# Copyright (C) 2021 Artur Tomczak , Thomas Krijnen +# Copyright (C) 2021 Artur Tomczak , Thomas Krijnen , Dion Moult # # This file is part of IfcOpenShell. # @@ -19,24 +19,24 @@ import os import re import logging -import operator -import os import numpy as np import datetime - +import builtins +import ifcopenshell.util.unit import ifcopenshell.util.element import ifcopenshell.util.placement - +import ifcopenshell.util.classification from bcf.v2.bcfxml import BcfXml from bcf.v2 import data as bcf - from xmlschema import XMLSchema from xmlschema import etree_tostring from xmlschema.validators import identities +from xml.etree import ElementTree as ET +# http://standards.buildingsmart.org/IDS/ids_05.xsd cwd = os.path.dirname(os.path.realpath(__file__)) -ids_schema = XMLSchema(os.path.join(cwd, "ids.xsd")) # source: "http://standards.buildingsmart.org/IDS/ids_05.xsd" +ids_schema = XMLSchema(os.path.join(cwd, "ids.xsd")) def error(msg): @@ -48,7 +48,7 @@ class ids: def __init__( self, - title="Name", + title="Untitled", copyright=None, version=None, description=None, @@ -78,22 +78,20 @@ class ids: """ self.specifications = [] self.info = {} - if title: - self.info["title"] = title + self.info["title"] = title or "Untitled" if copyright: self.info["copyright"] = copyright if version: self.info["version"] = version if description: self.info["description"] = description - if author: - if "@" in author: - self.info["author"] = author + if author and "@" in author: + self.info["author"] = author if date: - if re.match(r"\d\d\d\d-\d\d-\d\d", date): - self.info["date"] = date # date.fromisoformat(creation_date).isoformat() - if "date" not in self.info: - self.info["date"] = datetime.date.today().isoformat() + try: + self.info["date"] = datetime.date.fromisoformat(date).isoformat() + except ValueError: + pass if purpose: self.info["purpose"] = purpose if milestone: @@ -111,56 +109,35 @@ class ids: "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", "@xsi:schemaLocation": "http://standards.buildingsmart.org/IDS/ids_05.xsd", "info": self.info, - "specifications": [], + "specifications": {"specification": []}, } for spec in self.specifications: - ids_dict["specifications"].append({"specification": spec.asdict()}) #TEST! + ids_dict["specifications"]["specification"].append(spec.asdict()) return ids_dict - def to_xml(self, filepath="./", ids_schema=ids_schema): - """Save IDS object as .xml file. + def to_string(self, ids_schema=ids_schema): + """Convert IDS object to XML string - :param filepath: Path for the new file, defaults to "./" + :param ids_schema: XML Schema for an IDS file, defaults to ids_schema object from buildingSMART + :type ids_schema: XMLschema, optional + :return: The contents of the XML data in string form + :rtype: string + """ + ns = {"": "http://standards.buildingsmart.org/IDS"} + return etree_tostring(ids_schema.encode(self.asdict()), namespaces=ns) + + def to_xml(self, filepath="output.xml", ids_schema=ids_schema): + """Writes IDS object to an XML file. + + :param filepath: Path to the file, defaults to "output.xml" :type filepath: str, optional :param ids_schema: XML Schema for an IDS file, defaults to ids_schema object from buildingSMART :type ids_schema: XMLschema, optional :return: Result of the newly created file validation against the schema. :rtype: bool """ - - if filepath.endswith("/"): - filepath = filepath + "IDS" - if not filepath.endswith(".xml"): - filepath = filepath + ".xml" - - ids_dict = self.asdict() - - ids_xml = ids_schema.encode( - ids_dict, - namespaces={ - "": "http://standards.buildingsmart.org/IDS", - "xs": "http://www.w3.org/2001/XMLSchema", - "xsi": "http://www.w3.org/2001/XMLSchema-instance", - "xsi:schemaLocation": "http://standards.buildingsmart.org/IDS/ids_05.xsd", - }, - ) # validation='skip', - - ids_str = etree_tostring( - ids_xml, - namespaces={ - "": "http://standards.buildingsmart.org/IDS", - # 'xs': 'http://www.w3.org/2001/XMLSchema', - # 'xsi': 'http://www.w3.org/2001/XMLSchema-instance', - # 'xsi:schemaLocation': "http://standards.buildingsmart.org/IDS/ids_05.xsd" - }, - ) - - with open(filepath, "w", encoding="utf-8") as f: - f.write('\n') - f.write("\n") - f.write(ids_str) - f.close() - + ET.register_namespace("", "http://standards.buildingsmart.org/IDS") + ET.ElementTree(ids_schema.encode(self.asdict())).write(filepath, encoding="utf-8", xml_declaration=True) return ids_schema.is_valid(filepath) @staticmethod @@ -183,6 +160,29 @@ class ids: ids_file.specifications = [specification.parse(s) for s in ids_content["specifications"]["specification"]] return ids_file + def validate2(self, ifc_file): + """Use to validate IFC model against IDS specifications. + + :param ifc_file: path to ifc file + :type ifc_file: str + :param logger: Logging object with handlers, defaults to None + :type logger: logging, optional + """ + for specification in self.specifications: + specification.applicable_entities.clear() + specification.failed_entities.clear() + specification.status = None + for element in ifc_file: + for specification in self.specifications: + if not specification.applicability(element, None): + continue + specification.applicable_entities.append(element) + if specification.requirements(element, None): + specification.status = True + else: + specification.status = False + specification.failed_entities.append(element) + def validate(self, ifc_file, logger=None): """Use to validate IFC model against IDS specifications. @@ -196,32 +196,18 @@ class ids: logging.basicConfig(level=logging.INFO, format="%(message)s") logger.setLevel(logging.INFO) - # if "ifcversion" in self.info.keys(): - # if self.info["ifcversion"] in ["2.3.0.1", "4.0.2.1", "4.3.0.0"]: - # if self.info["ifcversion"][0:3] == "2.3": - # if not ifc_file.schema.startswith("IFC2x3"): - # logger.error("IFC file is of %s not of %s schema." % (ifc_file.schema, self.info["ifcversion"])) - # elif self.info["ifcversion"][0:3] == "4.0": - # if not ifc_file.schema == "IFC4": - # logger.error("IFC file is of %s not of %s schema." % (ifc_file.schema, self.info["ifcversion"])) - # elif self.info["ifcversion"][0:3] == "4.3": - # if not ifc_file.schema.startswith("IFC4x3"): - # logger.error("IFC file is of %s not of %s schema." % (ifc_file.schema, self.info["ifcversion"])) - # else: - # logger.error("IFC version not recognized") - # Consider other way around: for elem, for spec so we can see if an element pass all IDSes? for spec in self.specifications: self.ifc_applicable = 0 self.ifc_passed = 0 - for elem in ifc_file.by_type("IfcObject"): + for elem in ifc_file: apply, comply = spec(elem, logger) if apply: self.ifc_applicable += 1 if comply: self.ifc_passed += 1 if self.ifc_applicable == 0: - if spec.use == "required": + if spec.minOccurs != "0": logger.error("No applicable elements found. Minimum 1 applicable element required.") else: logger.debug("No applicable elements found. None required.") @@ -247,19 +233,38 @@ class ids: class specification: """Represents the XML node and its two children and """ - def __init__(self, name="Specification", use="required", ifcVersion="IFC2X3"): + def __init__( + self, + name="Unnamed", + minOccurs=None, + maxOccurs=None, + ifcVersion=["IFC2X3", "IFC4"], + identifier=None, + description=None, + instructions=None, + ): """Create a specification to be added in ids. - :param name:, defaults to "Specification" - :type name: str, optional - :param use: 'required'|'optional', defaults to "required" - :type use: str, optional + :param name: Name describing the specification to a contract reader + :type name: str + :param minOccurs: The minimum total entities that should pass as an integer >= 0 + :type minOccurs: str, optional + :param maxOccurs: The maximum total entities that should pass as an integer >= 0 or "unbounded" + :type maxOccurs: str, optional """ - self.name = name + self.name = name or "Unnamed" self.applicability = None self.requirements = None + self.minOccurs = minOccurs + self.maxOccurs = maxOccurs self.ifcVersion = ifcVersion - self.use = use + self.identifier = identifier + self.description = description + self.instructions = instructions + + self.applicable_entities = [] + self.failed_entities = [] + self.status = None def asdict(self): """Converts object to a dictionary, adding required attributes. @@ -268,21 +273,27 @@ class specification: :rtype: dict """ # if older python collections.OrderedDict() - spec_dict = { + results = { "@name": self.name, - "@use": self.use, "@ifcVersion": self.ifcVersion, "applicability": {}, "requirements": {}, } - for x in ["applicability", "requirements"]: - for fac in (getattr(self, x)).terms: + for attribute in ["identifier", "description", "instructions", "minOccurs", "maxOccurs"]: + value = getattr(self, attribute) + if value: + results[f"@{attribute}"] = value + for clause_type in ["applicability", "requirements"]: + clause = getattr(self, clause_type) + if not clause: + continue + for fac in clause.terms: fclass = type(fac).__name__ - if fclass in spec_dict[x]: - spec_dict[x][fclass].append(fac.asdict()) + if fclass in results[clause_type]: + results[clause_type][fclass].append(fac.asdict()) else: - spec_dict[x][fclass] = [fac.asdict()] - return spec_dict + results[clause_type][fclass] = [fac.asdict()] + return results @staticmethod def parse(ids_dict): @@ -302,26 +313,29 @@ class specification: spec = specification() try: spec.name = ids_dict["@name"] - except KeyError: + except KeyError: spec.name = "" - spec.use = ids_dict["@use"] + spec.minOccurs = ids_dict["@minOccurs"] + spec.maxOccurs = ids_dict["@maxOccurs"] spec.ifcVersion = ids_dict["@ifcVersion"] spec.applicability = boolean_and(parse_rules(ids_dict["applicability"])) spec.requirements = boolean_and(parse_rules(ids_dict["requirements"])) return spec def add_applicability(self, facet): - """Applicability specifies what conditions must be meet for an IFC object to be used for validation. Note, that at least one entity facet is required. + """Applicability specifies a filter for IFC entities are to be validated. - :param facet: any of entity|classification|property|material + At least one filter must be added. + + :param facet: any of entity|attribute|classification|property|material :type facet: facet Example:: - i = ids.ids() - i.specifications.append(ids.specification(name="Test_Specification")) - e = ids.entity.create(name="Test_Name", predefinedType="Test_PredefinedType") - i.specifications[0].add_applicability(e) + specs = ids.ids() + spec = ids.specification(name="Test_Specification") + spec.add_applicability(ids.entity.create(name="IfcWall")) + specs.specifications.append(spec) """ if self.applicability: self.applicability = boolean_and(self.applicability.terms + [facet]) @@ -329,9 +343,11 @@ class specification: self.applicability = boolean_and([facet]) def add_requirement(self, facet): - """Requirement is validated on all applicable IFC elements. Note, that at least one facet of any type is required. + """A requirement specifies data to be checked for all applicable entities. - :param facet: any of entity|classification|property|material + At least one requirement must be added. + + :param facet: any of entity|attribute|classification|property|material|partOf :type facet: facet """ if self.requirements: @@ -350,7 +366,6 @@ class specification: :rtype: [bool,bool] """ if self.applicability(inst, logger): - valid = self.requirements(inst, logger) if valid: @@ -437,25 +452,15 @@ class facet(metaclass=meta_facet): Use child classes instead: entity, classification, property and material. """ - def __init__(self, node=None, location=None): - + def __init__(self, node=None): if node: self.node = node - if "@location" in self: - self.location = self.node["@location"] - else: - self.location = "any" - - if location: - self.location = location - else: - self.location = "any" def __getattr__(self, attr): - - if attr in getattr(self, 'node', None): + + if attr in getattr(self, "node", None): v = self.node[attr] - + # BUG list of dictionaries should not happen if isinstance(v, list): v = v[0] @@ -486,10 +491,10 @@ class facet(metaclass=meta_facet): class entity(facet): """The IDS entity facet currently *with* inheritance""" - parameters = ["name", "predefinedType"] + parameters = ["name", "predefinedType", "instructions"] @staticmethod - def create(name=None, predefinedType=None): + def create(name=None, predefinedType=None, instructions=None): """Create an entity facet that can be added to applicability or requirements of IDS specification. :param name: IFC entity name that is required. e.g. IfcWall, defaults to None @@ -503,6 +508,7 @@ class entity(facet): inst = entity() inst.name = name inst.predefinedType = predefinedType + inst.instructions = instructions return inst def asdict(self): @@ -511,18 +517,89 @@ class entity(facet): :return: Xmlschema compliant dictionary. :rtype: dict """ - fac_dict = {"name": parameter_asdict(self.name)} - if "predefinedType" in self: - if self.predefinedType: - fac_dict["predefinedType"] = parameter_asdict(self.predefinedType) - # try: - # fac_dict["predefinedType"] = parameter_asdict(self.predefinedType) - # except (RecursionError, UnboundLocalError) as e: - # print(e) - return fac_dict + results = {"name": parameter_asdict(self.name)} + if self.predefinedType: + results["predefinedType"] = parameter_asdict(self.predefinedType) + if self.instructions: + results["@instructions"] = self.instructions + return results - def __call__(self, inst, logger): - """Validate an ifc instance against that entity facet. + def __call__(self, inst, logger=None): + """Validate an entity. + + Subclasses are not considered to pass the requirements. PredefinedType + checks support userdefined types for both element and type elements. + + :param inst: IFC entity element + :type inst: IFC entity + :param logger: Logging object + :type logger: logging + :return: result of the validation as bool and message + :rtype: facet_evaluation(bool, str) + """ + is_pass = inst.is_a().upper() == self.name + if is_pass and self.predefinedType: + predefined_type = ifcopenshell.util.element.get_predefined_type(inst) + is_pass = predefined_type == self.predefinedType + + if self.predefinedType: + self.message = "an entity name '%(name)s' of predefined type '%(predefinedType)s'" + return facet_evaluation(is_pass, self.message % {"name": inst.is_a(), "predefinedType": predefined_type}) + else: + self.message = "an entity name '%(name)s'" + return facet_evaluation(is_pass, self.message % {"name": inst.is_a()}) + + +class attribute(facet): + """The IDS attribute facet""" + + parameters = ["name", "value", "minOccurs", "maxOccurs", "instructions"] + + @staticmethod + def create(name="Name", value=None, minOccurs=None, maxOccurs=None, instructions=None): + """Create an attribute facet that can be added to applicability or requirements of IDS specification. + + :param name: Attribute name, such as "Description" + :type name: str + :param value: Attribute value, with type being strictly checked + :type value: str, optional + :param minOccurs: The minimum total entities that should pass as an integer >= 0 + :type minOccurs: str, optional + :param maxOccurs: The maximum total entities that should pass as an integer >= 0 or "unbounded" + :type maxOccurs: str, optional + :param instructions: Instructions as a guide for model authors when reading the requirements + :type instructions: str, optional + :return: entity object + :rtype: entity + """ + + inst = attribute() + inst.name = name + inst.value = value + inst.minOccurs = minOccurs + inst.maxOccurs = maxOccurs + inst.instructions = instructions + return inst + + def asdict(self): + """Converts object to a dictionary, adding required attributes. + + :return: Xmlschema compliant dictionary. + :rtype: dict + """ + results = {"name": parameter_asdict(self.name)} + if self.value: + results["value"] = parameter_asdict(self.value) + if self.minOccurs: + results["@minOccurs"] = self.minOccurs + if self.maxOccurs: + results["@maxOccurs"] = self.maxOccurs + if self.instructions: + results["@instructions"] = self.instructions + return results + + def __call__(self, inst, logger=None): + """Validate an ifc instance. :param inst: IFC entity element :type inst: IFC entity @@ -532,16 +609,76 @@ class entity(facet): :rtype: facet_evaluation(bool, str) """ - # @nb with inheritance - if self.predefinedType and hasattr(inst, "PredefinedType"): - self.message = "an entity name '%(name)s' of predefined type '%(predefinedType)s'" - return facet_evaluation( - inst.is_a(self.name) and inst.PredefinedType == self.predefinedType, - self.message % {"name": inst.is_a(), "predefinedType": inst.PredefinedType}, - ) + def get_values(element, name): + if isinstance(name, str): + return [getattr(element, name, None)] + return [v for k, v in element.get_info().items() if k == name] + + element_type = ifcopenshell.util.element.get_type(inst) + + if isinstance(self.name, str): + type_value = getattr(element_type, self.name, None) if element_type else None + occurrence_value = getattr(inst, self.name, None) + names = [self.name] + values = [occurrence_value if occurrence_value is not None else type_value] else: - self.message = "an entity name '%(name)s'" - return facet_evaluation(inst.is_a(self.name), self.message % {"name": inst.is_a()}) + if element_type: + info = element_type.get_info() + info.update({k: v for k, v in inst.get_info().items() if v is not None}) + else: + info = inst.get_info() + names = [] + values = [] + for k, v in info.items(): + if k == self.name: + names.append(k) + values.append(v) + + is_pass = bool(values) + + if is_pass: + for i, value in enumerate(values): + if value is None: + is_pass = False + elif value == "": + is_pass = False + elif value == tuple(): + is_pass = False + else: + argument_index = inst.wrapped_data.get_argument_index(names[i]) + try: + attribute_type = inst.attribute_type(argument_index) + if attribute_type == "LOGICAL" and value == "UNKNOWN": + is_pass = False + except: + if names[i] in inst.wrapped_data.get_inverse_attribute_names(): + is_pass = False + if not is_pass: + break + + if is_pass and self.value: + for value in values: + if isinstance(value, ifcopenshell.entity_instance): + is_pass = False + break + elif isinstance(self.value, str) and isinstance(value, str): + if value != self.value: + is_pass = False + break + elif isinstance(self.value, str): + cast_value = cast_to_value(self.value, value) + if value != cast_value: + is_pass = False + break + elif value != self.value: + is_pass = False + break + + if self.value: + self.message = "foo" + return facet_evaluation(is_pass, f"an entity with {self.name} set to something wrong") + else: + return facet_evaluation(is_pass, f"an entity with {self.name}") class classification(facet): @@ -549,27 +686,31 @@ class classification(facet): The IDS classification facet by traversing the HasAssociations inverse attribute """ - parameters = ["system", "value", "location"] - message = "%(location)sclassification reference %(value)s from '%(system)s'" + parameters = ["system", "value", "uri", "minOccurs", "maxOccurs" "instructions"] + message = "sclassification reference %(value)s from '%(system)s'" @staticmethod - def create(location="any", value=None, system=None): + def create(value=None, system=None, uri=None, minOccurs=None, maxOccurs=None, instructions=None): """Create a classification facet that can be added to applicability or requirements of IDS specification. - :param location: Define where to check for the parameter. One of "any"|"instance"|"type", defaults to "any" - :type location: str, optional :param value: Value that is required. Could be alphanumeric or restriction object, defaults to None :type value: restriction|alphanumeric, optional :param system: System that is required. Could be alphanumeric or restriction object, defaults to None :type system: restriction|alphanumeric, optional + :param minOccurs: The minimum total entities that should pass as an integer >= 0 + :type minOccurs: str, optional + :param maxOccurs: The maximum total entities that should pass as an integer >= 0 or "unbounded" + :type maxOccurs: str, optional :return: classification object :rtype: classification """ - inst = classification() - inst.location = location inst.value = value inst.system = system + inst.uri = uri + inst.minOccurs = minOccurs + inst.maxOccurs = maxOccurs + inst.instructions = instructions return inst def asdict(self): @@ -578,15 +719,22 @@ class classification(facet): :return: Xmlschema compliant dictionary. :rtype: dict """ - fac_dict = { - "value": parameter_asdict(self.value), - "system": parameter_asdict(self.system), - "@location": self.location, - # "instructions": "SAMPLE_INSTRUCTIONS", - } - return fac_dict + results = {} + if self.value: + results["value"] = parameter_asdict(self.value) + if self.system: + results["system"] = parameter_asdict(self.system) + if self.uri: + results["@uri"] = self.uri + if self.minOccurs: + results["@minOccurs"] = self.minOccurs + if self.maxOccurs: + results["@maxOccurs"] = self.maxOccurs + if self.instructions: + results["@instructions"] = self.instructions + return results - def __call__(self, inst, logger): + def __call__(self, inst, logger=None): """Validate an ifc instance against that classification facet. :param inst: IFC entity element @@ -596,45 +744,33 @@ class classification(facet): :return: result of the validation as bool and message :rtype: facet_evaluation(bool, str) """ + leaf_references = ifcopenshell.util.classification.get_references(inst) - instance_classiciations = inst.HasAssociations - if ifcopenshell.util.element.get_type(inst): - type_classifications = ifcopenshell.util.element.get_type(inst).HasAssociations - else: - type_classifications = () + references = leaf_references.copy() + for leaf_reference in leaf_references: + references.update(ifcopenshell.util.classification.get_inherited_references(leaf_reference)) - if self.location == "instance" and instance_classiciations: - associations = instance_classiciations - elif self.location == "type" and type_classifications: - associations = type_classifications - elif self.location == "any" and (instance_classiciations or type_classifications): - associations = instance_classiciations + type_classifications - else: - associations = () + is_pass = bool(references) + if is_pass and self.value: + is_pass = any( + [self.value == getattr(r, "Identification", getattr(r, "ItemReference", None)) for r in references] + ) + if is_pass and self.system: + is_pass = any( + [self.system == ifcopenshell.util.classification.get_classification(r).Name for r in references] + ) - refs = [] - for association in associations: - if association.is_a("IfcRelAssociatesClassification"): - cref = association.RelatingClassification - if hasattr(cref, "ItemReference"): # IFC2x3 - refs.append((cref.ReferencedSource.Name, cref.ItemReference)) - elif hasattr(cref, "Identification"): # IFC4 - refs.append((cref.ReferencedSource.Name, cref.Identification)) - - self.location_msg = location[self.location] - - if refs: + if references: return facet_evaluation( - (self.system, self.value) in refs, + is_pass, self.message % { - "system": refs[0][0], - "value": "'" + refs[0][1] + "'", - "location": self.location_msg, - }, # what if not first item of refs? + "system": list(references)[0][0], + "value": list(references)[0][1], + }, # TODO Fix this 0 index reference assumption when I refactor out the messages ) else: - return facet_evaluation(False, "does not have %sclassification reference" % self.location_msg) + return facet_evaluation(False, "does not have classification reference") class partOf(facet): @@ -644,13 +780,9 @@ class partOf(facet): parameters = ["entity"] message = "relation as part of %(entity)s" - #TODO temp default - entity = "IfcElementAssembly" @staticmethod - #TODO should not assume IfcElementAssembly - # def create(entity=None): - def create(entity="IfcElementAssembly"): + def create(entity="IfcSystem"): """Create a partOf facet that can be added to applicability or requirements of IDS specification. :param entity: Entity that should contain this object. Could be alphanumeric or restriction object, defaults to None @@ -669,13 +801,9 @@ class partOf(facet): :return: Xmlschema compliant dictionary. :rtype: dict """ - fac_dict = { - "@entity": parameter_asdict(self.entity), - # "instructions": "SAMPLE_INSTRUCTIONS", - } - return fac_dict + return {"@entity": self.entity} - def __call__(self, inst, logger): + def __call__(self, inst, logger=None): """Validate an ifc instance against that partOf facet. :param inst: IFC entity element @@ -685,48 +813,21 @@ class partOf(facet): :return: result of the validation as bool and message :rtype: facet_evaluation(bool, str) """ - - #TODO handle partOf facet - -# instance_classiciations = inst.HasAssociations -# if ifcopenshell.util.element.get_type(inst): -# type_classifications = ifcopenshell.util.element.get_type(inst).HasAssociations -# else: -# type_classifications = () - -# if self.location == "instance" and instance_classiciations: -# associations = instance_classiciations -# elif self.location == "type" and type_classifications: -# associations = type_classifications -# elif self.location == "any" and (instance_classiciations or type_classifications): -# associations = instance_classiciations + type_classifications -# else: -# associations = () - - refs = [] -# for association in associations: -# if association.is_a("IfcRelAssociatesClassification"): -# cref = association.RelatingClassification -# if hasattr(cref, "ItemReference"): # IFC2x3 -# refs.append((cref.ReferencedSource.Name, cref.ItemReference)) -# elif hasattr(cref, "Identification"): # IFC4 -# refs.append((cref.ReferencedSource.Name, cref.Identification)) - -# self.location_msg = location[self.location] - - if refs: - pass - # return facet_evaluation( - # (self.system, self.value) in refs, - # self.message - # % { - # "system": refs[0][0], - # "value": "'" + refs[0][1] + "'", - # "location": self.location_msg, - # }, # what if not first item of refs? - # ) + if self.entity == "IfcElementAssembly": + is_pass = False + aggregate = ifcopenshell.util.element.get_aggregate(inst) + while aggregate is not None: + if aggregate.is_a() == "IfcElementAssembly": + is_pass = True + break + aggregate = ifcopenshell.util.element.get_aggregate(aggregate) else: - return facet_evaluation(False, "is not a part of %s" % self.node['@entity']) + is_pass = False + for rel in getattr(inst, "HasAssignments", []) or []: + if rel.is_a("IfcRelAssignsToGroup") and rel.RelatingGroup.is_a(self.entity): + is_pass = True + + return facet_evaluation(is_pass, "is not a part of") class property(facet): @@ -734,32 +835,44 @@ class property(facet): The IDS property facet implemented using `ifcopenshell.util.element` """ - parameters = ["name", "propertySet", "value", "location"] - message = "%(location)sproperty '%(name)s' in '%(propertySet)s' with a value %(value)s" + parameters = ["name", "propertySet", "value"] + message = "property '%(name)s' in '%(propertySet)s' with a value %(value)s" @staticmethod - def create(location="any", propertySet=None, name=None, value=None): + def create( + propertySet="Property_Set", + name="PropertyName", + value=None, + measure=None, + uri=None, + minOccurs=None, + maxOccurs=None, + instructions=None, + ): """Create a property facet that can be added to applicability or requirements of IDS specification. - :param location: Define where to check for the parameter. One of "any"|"instance"|"type", defaults to "any" - :type location: str, optional :param propertySet: Propertyset that is required. Could be alphanumeric or restriction object, defaults to None :type propertySet: restriction|alphanumeric, optional :param name: Name that is required. Could be alphanumeric or restriction object, defaults to None :type name: restriction|alphanumeric, optional :param value: Value that is required. Could be alphanumeric or restriction object, defaults to None :type value: restriction|alphanumeric, optional + :param minOccurs: The minimum total entities that should pass as an integer >= 0 + :type minOccurs: str, optional + :param maxOccurs: The maximum total entities that should pass as an integer >= 0 or "unbounded" + :type maxOccurs: str, optional :return: property object :rtype: property """ inst = property() - inst.location = location inst.propertySet = propertySet inst.name = name inst.value = value - # cls.attributes = {'@location': location} # 'type', 'instance', 'any' - # BUG '@href': 'http://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/FireRating', #https://identifier.buildingsmart.org/uri/something - # BUG 'instructions': 'Please add the desired rating.', + inst.measure = measure + inst.uri = uri + inst.minOccurs = minOccurs + inst.maxOccurs = maxOccurs + inst.instructions = instructions return inst def asdict(self): @@ -768,17 +881,26 @@ class property(facet): :return: Xmlschema compliant dictionary. :rtype: dict """ - fac_dict = { - "@location": self.location, + results = { "propertySet": parameter_asdict(self.propertySet), "name": parameter_asdict(self.name), - "value": parameter_asdict(self.value), - # "instructions": "SAMPLE_INSTRUCTIONS", - # TODO '@href': 'http://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/FireRating', #https://identifier.buildingsmart.org/uri/something } - return fac_dict + if self.value: + results["value"] = parameter_asdict(self.value) + if self.measure: + results["@measure"] = self.measure + if self.uri: + results["@uri"] = self.uri + if self.minOccurs: + results["@minOccurs"] = self.minOccurs + if self.maxOccurs: + results["@maxOccurs"] = self.maxOccurs + if self.instructions: + results["@instructions"] = self.instructions + # TODO '@href': 'http://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/FireRating', #https://identifier.buildingsmart.org/uri/something + return results - def __call__(self, inst, logger): + def __call__(self, inst, logger=None): """Validate an ifc instance against that property facet. :param inst: IFC entity element @@ -788,50 +910,64 @@ class property(facet): :return: result of the validation as bool and message :rtype: facet_evaluation(bool, str) """ + all_psets = ifcopenshell.util.element.get_psets(inst) - # self.location = self.node["@location"] - - #TODO add documentation that attributes should have "attribute" as propertySets - if self.propertySet == "attribute": - val = {k.lower(): v for k, v in inst.get_info().items()}.get(self.name, None) + if isinstance(self.propertySet, str): + pset = all_psets.get(self.propertySet, None) + psets = {self.propertySet: pset} if pset else {} else: - # TODO sometimes AttributeError: 'str' object has no attribute 'wrappedValue' - try: - instance_props = ifcopenshell.util.element.get_psets(inst) - except AttributeError: - instance_props = {} + psets = {k: v for k, v in all_psets.items() if k == self.propertySet} - if ifcopenshell.util.element.get_type(inst): - # TODO sometimes AttributeError: 'str' object has no attribute 'wrappedValue' - try: - type_props = ifcopenshell.util.element.get_psets(ifcopenshell.util.element.get_type(inst)) - except AttributeError: - type_props = {} - else: - type_props = {} + is_pass = bool(psets) - if self.location == "instance": - props = instance_props - elif self.location == "type" and type_props: - props = type_props - elif self.location == "any" and (instance_props or type_props): - props = {**instance_props, **type_props} - else: - props = {} + if is_pass: + props = {} + for pset_name, pset_props in psets.items(): + props[pset_name] = {} + if isinstance(self.name, str): + prop = pset_props.get(self.name) + if prop: + props[pset_name][self.name] = prop + else: + props[pset_name] = {k: v for k, v in pset_props.items() if k == self.name} - pset = props.get(self.propertySet) - val = pset.get(self.name) if pset else None + if not bool(props[pset_name]): + is_pass = False + break - self.location_msg = location[self.location] - di = {"name": self.name, "propertySet": self.propertySet, "value": "'%s'" % val, "location": self.location_msg} + if self.measure: + pset_entity = inst.wrapped_data.file.by_id(pset_props["id"]) + for prop_entity in pset_entity.HasProperties: + if ( + prop_entity.Name not in props[pset_name].keys() + or not prop_entity.is_a("IfcPropertySingleValue") + or prop_entity.NominalValue is None + ): + continue - if val is not None: - msg = self.message % di - else: - if pset: - msg = "does not have %(location)sproperty '%(name)s' in a set '%(propertySet)s'" % di - else: - msg = "does not have %(location)sset '%(propertySet)s'" % di + data_type = prop_entity.NominalValue.is_a().replace("Ifc", "").replace("Measure", "") + + if data_type != self.measure: + is_pass = False + break + + unit = ifcopenshell.util.unit.get_property_unit(prop_entity, inst.wrapped_data.file) + + props[pset_name][prop_entity.Name] = ifcopenshell.util.unit.convert( + prop_entity.NominalValue.wrappedValue, + getattr(unit, "Prefix", None), + unit.Name, + None, + ifcopenshell.util.unit.si_type_names[unit.UnitType], + ) + + if not is_pass: + break + + if self.value: + if any([v != self.value for v in props[pset_name].values()]): + is_pass = False + break # TODO implement data type comparison # xs:string @@ -844,32 +980,30 @@ class property(facet): # xs:dateTime YYYY-MM-DDThh:mm:ss # xs:duration PnYnMnDTnHnMnS - return facet_evaluation(val == self.value, msg) + return facet_evaluation(is_pass, "todo") class material(facet): """The IDS material facet used to traverse the HasAssociations inverse attribute.""" - parameters = ["value", "location"] - message = "%(location)smaterial '%(value)s'" + parameters = ["value"] + message = "material '%(value)s'" @staticmethod - def create(location="any", value=None): + def create(value=None, uri=None, minOccurs=None, maxOccurs=None, instructions=None): """Create a material facet that can be added to applicability or requirements of IDS specification. - :param location: Define where to check for the parameter. One of "any"|"instance"|"type", defaults to "any" - :type location: str, optional :param value: Value that is required. Could be alphanumeric or restriction object, defaults to None :type value: restriction|alphanumeric, optional :return: material object :rtype: material """ inst = material() - inst.location = location inst.value = value - # TODO '@use': 'optional' - # TODO '@href': 'https://identifier.buildingsmart.org/uri/something', - # TODO 'instructions': 'Please add the desired...', + inst.uri = uri + inst.minOccurs = minOccurs + inst.maxOccurs = maxOccurs + inst.instructions = instructions return inst def asdict(self): @@ -878,16 +1012,20 @@ class material(facet): :return: Xmlschema compliant dictionary. :rtype: dict """ - fac_dict = { - "value": parameter_asdict(self.value), - "@location": self.location, - # TODO "instructions": "SAMPLE_INSTRUCTIONS", - # TODO '@href': 'http://identifier.buildingsmart.org/uri/buildingsmart/ifc-4.3/prop/FireRating', #https://identifier.buildingsmart.org/uri/something - # TODO '@use': 'optional' - } - return fac_dict + results = {} + if self.value: + results["value"] = parameter_asdict(self.value) + if self.uri: + results["@uri"] = self.uri + if self.minOccurs: + results["@minOccurs"] = self.minOccurs + if self.maxOccurs: + results["@maxOccurs"] = self.maxOccurs + if self.instructions: + results["@instructions"] = self.instructions + return results - def __call__(self, inst, logger): + def __call__(self, inst, logger=None): """Validate an ifc instance against that material facet. :param inst: IFC entity element @@ -897,57 +1035,39 @@ class material(facet): :return: result of the validation as bool and message :rtype: facet_evaluation(bool, str) """ + material = ifcopenshell.util.element.get_material(inst, should_skip_usage=True) - # self.location = self.node["@location"] + is_pass = material is not None - instance_material_rel = [rel for rel in inst.HasAssociations if rel.is_a("IfcRelAssociatesMaterial")] - if ifcopenshell.util.element.get_type(inst): - type_material_rel = [ - rel - for rel in ifcopenshell.util.element.get_type(inst).HasAssociations - if rel.is_a("IfcRelAssociatesMaterial") - ] - else: - type_material_rel = [] + if is_pass and self.value: + if material.is_a("IfcMaterial"): + values = {material.Name, getattr(material, "Category")} + elif material.is_a("IfcMaterialList"): + values = set() + for mat in material.Materials or []: + values.update([mat.Name, getattr(mat, "Category")]) + elif material.is_a("IfcMaterialLayerSet"): + values = {material.LayerSetName} + for item in material.MaterialLayers or []: + values.update([item.Name, item.Category, item.Material.Name, getattr(item.Material, "Category")]) + elif material.is_a("IfcMaterialProfileSet"): + values = {material.Name} + for item in material.MaterialProfiles or []: + values.update([item.Name, item.Category, item.Material.Name, getattr(item.Material, "Category")]) + elif material.is_a("IfcMaterialConstituentSet"): + values = {material.Name} + for item in material.MaterialConstituents or []: + values.update([item.Name, item.Category, item.Material.Name, getattr(item.Material, "Category")]) - if self.location == "instance": - material_relations = list(instance_material_rel) - elif self.location == "type" and type_material_rel: - material_relations = list(type_material_rel) - elif self.location == "any" and (instance_material_rel or type_material_rel): - material_relations = instance_material_rel + type_material_rel - else: - material_relations = [] - - materials = [] - for rel in material_relations: - if rel.RelatingMaterial.is_a() == "IfcMaterial": - materials.append(rel.RelatingMaterial.Name) - elif rel.RelatingMaterial.is_a() == "IfcMaterialList": # DEPRECATED in IFC4 - [materials.append(mat.Name) for mat in rel.RelatingMaterial.Materials] - elif rel.RelatingMaterial.is_a() == "IfcMaterialConstituentSet": - [materials.append(mat.Material.Name) for mat in rel.RelatingMaterial.MaterialConstituents] - elif rel.RelatingMaterial.is_a() == "IfcMaterialLayerSet": - [materials.append(mat.Name) for mat in rel.RelatingMaterial.MaterialLayers] - elif rel.RelatingMaterial.is_a() == "IfcMaterialLayerSetUsage": - layers = rel.RelatingMaterial.ForLayerSet.MaterialLayers - [materials.append(layer.Material.Name) for layer in layers] - elif rel.RelatingMaterial.is_a() == "IfcMaterialProfileSet": - [materials.append(mat.Material.Name) for mat in rel.RelatingMaterial.MaterialProfiles] - elif rel.RelatingMaterial.is_a() == "IfcMaterialProfileSetUsage": - profileSets = rel.RelatingMaterial.ForProfileSet.MaterialProfiles - [materials.append(pset.Material.Name) for pset in profileSets] - else: - raise Exception("IfcRelAssociatesMaterial not implemented") - - if not materials: - materials.append("UNDEFINED") - - self.location_msg = location[self.location] + is_pass = False + for value in values: + if value == self.value: + is_pass = True + break return facet_evaluation( - self.value in materials, - self.message % {"value": "'/'".join(materials), "location": self.location_msg}, + is_pass, + self.message % {"value": "todo", "location": "todo"}, ) @@ -995,6 +1115,22 @@ class boolean_or(boolean_logic): fold = any +def cast_to_value(from_value, to_value): + try: + target_type = type(to_value).__name__ + if target_type == "int": + # Casting str -> float -> int means that notation like '1e3' is preserved + return int(float(from_value)) + elif target_type == "bool": + if from_value == "TRUE": + return True + elif from_value == "FALSE": + return False + return builtins.__dict__[target_type](from_value) + except ValueError: + pass + + class restriction: """ The value restriction from XSD implemented as a list of values and a containment test @@ -1008,17 +1144,17 @@ class restriction: @staticmethod def parse(ids_dict): """Parse xml restriction to python object. - + :param ids_dict: :type ids_dict: dict """ r = restriction() if ids_dict: # TODO 'base' missing in some IDS?! - + try: r.base = ids_dict["@base"][3:] - except KeyError: + except KeyError: r.base = "String" for n in ids_dict: @@ -1065,7 +1201,7 @@ class restriction: rest_dict["xs:enumeration"].append({"@value": option}) elif self.type == "bounds": for option in self.options: - rest_dict["xs:" + option] = [{"@value": self.options[option], "@fixed": False}] + rest_dict["xs:" + option] = [{"@value": str(self.options[option]), "@fixed": False}] elif self.type == "pattern": if "xs:pattern" not in rest_dict: rest_dict["xs:pattern"] = [{"@value": self.options}] @@ -1117,13 +1253,12 @@ class restriction: :rtype: bool """ result = False - # TODO implement data type comparison if self and (other or other == 0): if self.type == "enumeration" and self.base == "bool": self.options = [x.lower() for x in self.options] result = str(other).lower() in self.options elif self.type == "enumeration": - result = other in self.options + result = other in [cast_to_value(o, other) for o in self.options] elif self.type == "bounds": result = True for sign in self.options.keys(): @@ -1141,7 +1276,7 @@ class restriction: result = True elif self.type == "pattern": if isinstance(self.options, list): - #TODO handle case with multiple pattern options + # TODO handle case with multiple pattern options translated_pattern = identities.translate_pattern(self.options[0]) else: translated_pattern = identities.translate_pattern(self.options) @@ -1249,7 +1384,7 @@ class BcfHandler(logging.StreamHandler): bcf_handler = BcfHandler( project_name="Default IDS Project", author="your@email.com", - filepath=r".\example.bcf", + filepath="example.bcf", ) logger = logging.getLogger("IDS_Logger") logging.basicConfig(level=logging.INFO, format="%(message)s") @@ -1320,8 +1455,6 @@ class BcfHandler(logging.StreamHandler): viewpoint.components.visibility.default_visibility = True viewpoint.snapshot = None self.bcf.add_viewpoint(topic, viewpoint) - # except: - # pass def flush(self): """Saves the BCF report to file. Triggered at the end of the validation process.""" diff --git a/src/ifcopenshell-python/ifcopenshell/ids.xsd b/src/ifcopenshell-python/ifcopenshell/ids.xsd index 5ef675ff56..362e401ffa 100644 --- a/src/ifcopenshell-python/ifcopenshell/ids.xsd +++ b/src/ifcopenshell-python/ifcopenshell/ids.xsd @@ -1,6 +1,6 @@ - - + + @@ -55,15 +55,6 @@ - - - - - - - - - @@ -73,71 +64,7 @@ - - - - See the documentation and default units of these measures on https://github.com/buildingSMART/IDS/wiki/Physical-Quantities-and-Units - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -150,25 +77,71 @@ - - - - - - - - + + + See the documentation and default units of these measures on https://github.com/buildingSMART/IDS/blob/master/Documentation/Physical_Quantities_and_Units.md + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -178,29 +151,11 @@ - - - - - - - - - - - - - - - - - - @@ -210,13 +165,7 @@ - - - - Author of the IDS can leave instructions for the authors of the IFC. This text could/should be displayed in the BIM/IFC authoring tool. - - - + @@ -228,6 +177,12 @@ + + + + + + @@ -238,16 +193,8 @@ - - - - - - - - - - + + Author of the IDS can leave instructions for the authors of the IFC. This text could/should be displayed in the BIM/IFC authoring tool. @@ -260,16 +207,8 @@ - - - - - - - - - - + + Author of the IDS can leave instructions for the authors of the IFC. This text could/should be displayed in the BIM/IFC authoring tool. @@ -283,79 +222,8 @@ - - - - - - - - - - - - See the documentation and default units of these measures on https://github.com/buildingSMART/IDS/wiki/Physical-Quantities-and-Units - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + Author of the IDS can leave instructions for the authors of the IFC. This text could/should be displayed in the BIM/IFC authoring tool. @@ -369,16 +237,8 @@ - - - - - - - - - - + + Author of the IDS can leave instructions for the authors of the IFC. This text could/should be displayed in the BIM/IFC authoring tool. @@ -394,16 +254,8 @@ - - - - - - - - - - + + @@ -411,19 +263,19 @@ - + - + Author of the IDS can provide an identifier to the IDS. Beware: this cannot be enforced/assumed as (global) unique. - + Author of the IDS can leave instructions for the authors of the IFC. This text could/should be displayed in the BIM/IFC authoring tool. diff --git a/src/ifcopenshell-python/ifcopenshell/mvd b/src/ifcopenshell-python/ifcopenshell/mvd index 667894b629..83c12fa494 160000 --- a/src/ifcopenshell-python/ifcopenshell/mvd +++ b/src/ifcopenshell-python/ifcopenshell/mvd @@ -1 +1 @@ -Subproject commit 667894b6295ea5ccc489d97ff2064bebcd67bda8 +Subproject commit 83c12fa494b9d6a5a370d8525dc1f76aa5c89d8d diff --git a/src/ifcopenshell-python/ifcopenshell/requirements.txt b/src/ifcopenshell-python/ifcopenshell/requirements.txt index d0a2328f34..29dd91befd 100644 --- a/src/ifcopenshell-python/ifcopenshell/requirements.txt +++ b/src/ifcopenshell-python/ifcopenshell/requirements.txt @@ -1,4 +1,4 @@ lxml==4.6.5 -numpy==1.21.0 +numpy==1.22.0 regex==2021.4.4 xmlschema==1.6.4 \ No newline at end of file diff --git a/src/ifcopenshell-python/ifcopenshell/util/__init__.py b/src/ifcopenshell-python/ifcopenshell/util/__init__.py index 8bed51a56f..944d7db18c 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/__init__.py +++ b/src/ifcopenshell-python/ifcopenshell/util/__init__.py @@ -15,3 +15,5 @@ # # You should have received a copy of the GNU Lesser General Public License # along with IfcOpenShell. If not, see . + +"""Utility functions for common IFC queries""" diff --git a/src/ifcopenshell-python/ifcopenshell/util/classification.py b/src/ifcopenshell-python/ifcopenshell/util/classification.py new file mode 100644 index 0000000000..e0f60fd19c --- /dev/null +++ b/src/ifcopenshell-python/ifcopenshell/util/classification.py @@ -0,0 +1,62 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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.util.element + + +def get_references(element, should_inherit=True): + results = set() + if should_inherit: + element_type = ifcopenshell.util.element.get_type(element) + if element_type and element_type != element: + results = get_references(element_type) + occurrence_results = { + r.RelatingClassification + for r in getattr(element, "HasAssociations", []) + if r.is_a("IfcRelAssociatesClassification") + } + if results: + type_references_per_system = {} + occurrence_references_per_system = {} + for result in results: + type_references_per_system.setdefault(get_classification(result), []).append(result) + for result in occurrence_results: + occurrence_references_per_system.setdefault(get_classification(result), []).append(result) + type_references_per_system.update(occurrence_references_per_system) + results = set() + for values in type_references_per_system.values(): + [results.add(v) for v in values] + return results + return occurrence_results + + +def get_classification(reference): + if reference.is_a("IfcClassification"): + return reference + return get_classification(reference.ReferencedSource) + + +def get_inherited_references(reference): + results = [] + while True: + if not reference or reference.is_a("IfcClassification"): + break + results.append(reference) + reference = reference.ReferencedSource + return results + diff --git a/src/ifcopenshell-python/ifcopenshell/util/element.py b/src/ifcopenshell-python/ifcopenshell/util/element.py index caa618d373..7c75ec98d9 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/element.py +++ b/src/ifcopenshell-python/ifcopenshell/util/element.py @@ -19,7 +19,7 @@ import ifcopenshell -def get_psets(element, psets_only=False, qtos_only=False): +def get_psets(element, psets_only=False, qtos_only=False, should_inherit=True): psets = {} if element.is_a("IfcTypeObject"): for definition in element.HasPropertySets or []: @@ -34,6 +34,9 @@ def get_psets(element, psets_only=False, qtos_only=False): continue psets[definition.Name] = get_property_definition(definition) elif hasattr(element, "IsDefinedBy"): + element_type = ifcopenshell.util.element.get_type(element) + if element_type and should_inherit: + psets = get_psets(element_type, psets_only=psets_only, qtos_only=qtos_only, should_inherit=False) for relationship in element.IsDefinedBy: if relationship.is_a("IfcRelDefinesByProperties"): definition = relationship.RelatingPropertyDefinition @@ -41,7 +44,7 @@ def get_psets(element, psets_only=False, qtos_only=False): continue if qtos_only and not definition.is_a("IfcElementQuantity"): continue - psets[definition.Name] = get_property_definition(definition) + psets.setdefault(definition.Name, {}).update(get_property_definition(definition)) return psets @@ -89,12 +92,12 @@ def get_predefined_type(element): element_type = get_type(element) if element_type: predefined_type = getattr(element_type, "PredefinedType", None) - if predefined_type == "USERDEFINED": - predefined_type = getattr(element_type, "ElementType", None) + if predefined_type == "USERDEFINED" or not predefined_type: + predefined_type = getattr(element_type, "ElementType", getattr(element_type, "ProcessType", None)) if predefined_type and predefined_type != "NOTDEFINED": return predefined_type predefined_type = getattr(element, "PredefinedType", None) - if predefined_type == "USERDEFINED": + if predefined_type == "USERDEFINED" or not predefined_type: predefined_type = getattr(element, "ObjectType", None) return predefined_type @@ -118,7 +121,7 @@ def get_types(type): return [] -def get_material(element, should_skip_usage=False): +def get_material(element, should_skip_usage=False, should_inherit=True): if hasattr(element, "HasAssociations") and element.HasAssociations: for relationship in element.HasAssociations: if relationship.is_a("IfcRelAssociatesMaterial"): @@ -128,31 +131,72 @@ def get_material(element, should_skip_usage=False): elif relationship.RelatingMaterial.is_a("IfcMaterialProfileSetUsage"): return relationship.RelatingMaterial.ForProfileSet return relationship.RelatingMaterial - relating_type = get_type(element) - if relating_type != element and hasattr(relating_type, "HasAssociations") and relating_type.HasAssociations: - return get_material(relating_type, should_skip_usage) + if should_inherit: + relating_type = get_type(element) + if relating_type != element and hasattr(relating_type, "HasAssociations") and relating_type.HasAssociations: + return get_material(relating_type, should_skip_usage) def get_elements_by_material(ifc_file, material): - results = [] + results = set() for inverse in ifc_file.get_inverse(material): if inverse.is_a("IfcRelAssociatesMaterial"): - results.extend(inverse.RelatedObjects) + results.update(inverse.RelatedObjects) elif inverse.is_a("IfcMaterialLayer"): for material_set in inverse.ToMaterialLayerSet: - results.extend(get_elements_by_material(ifc_file, material_set)) + results.update(get_elements_by_material(ifc_file, material_set)) elif inverse.is_a("IfcMaterialProfile"): for material_set in inverse.ToMaterialProfileSet: - results.extend(get_elements_by_material(ifc_file, material_set)) + results.update(get_elements_by_material(ifc_file, material_set)) elif inverse.is_a("IfcMaterialConstituent"): for material_set in inverse.ToMaterialConstituentSet: - results.extend(get_elements_by_material(ifc_file, material_set)) + results.update(get_elements_by_material(ifc_file, material_set)) elif inverse.is_a("IfcMaterialLayerSetUsage"): - results.extend(get_elements_by_material(ifc_file, inverse)) + results.update(get_elements_by_material(ifc_file, inverse)) elif inverse.is_a("IfcMaterialProfileSetUsage"): - results.extend(get_elements_by_material(ifc_file, inverse)) + results.update(get_elements_by_material(ifc_file, inverse)) elif inverse.is_a("IfcMaterialList"): - results.extend(get_elements_by_material(ifc_file, inverse)) + results.update(get_elements_by_material(ifc_file, inverse)) + return results + + +def get_elements_by_style(ifc_file, style): + results = set() + inverses = list(ifc_file.get_inverse(style)) + while inverses: + inverse = inverses.pop() + if inverse.is_a("IfcPresentationStyleAssignment"): + inverses.extend(ifc_file.get_inverse(inverse)) + continue + if not inverse.is_a("IfcStyledItem"): + continue + if inverse.Item: + [ + results.update(get_elements_by_representation(ifc_file, i)) + for i in ifc_file.get_inverse(inverse.Item) + if i.is_a("IfcShapeRepresentation") + ] + else: + styled_reps = [i for i in ifc_file.get_inverse(inverse) if i.is_a("IfcStyledRepresentation")] + for styled_rep in styled_reps: + for material_def_rep in styled_rep.OfProductRepresentation: + results.update(get_elements_by_material(ifc_file, material_def_rep.RepresentedMaterial)) + return results + + +def get_elements_by_representation(ifc_file, representation): + results = set() + [results.update(pr.ShapeOfProduct) for pr in representation.OfProductRepresentation] + for rep_map in representation.RepresentationMap: + for inverse in ifc_file.get_inverse(rep_map): + if inverse.is_a("IfcTypeProduct"): + results.add(inverse) + elif inverse.is_a("IfcMappedItem"): + [ + results.update(get_elements_by_representation(ifc_file, rep)) + for rep in ifc_file.get_inverse(inverse) + if rep.is_a("IfcShapeRepresentation") + ] return results diff --git a/src/ifcopenshell-python/ifcopenshell/util/geolocation.py b/src/ifcopenshell-python/ifcopenshell/util/geolocation.py index 2018f51702..85a23b6120 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/geolocation.py +++ b/src/ifcopenshell-python/ifcopenshell/util/geolocation.py @@ -114,7 +114,7 @@ def global2local(matrix, eastings, northings, orthogonal_height, x_axis_abscissa # Used for converting the X and Y vectors of the X Axis in IFC grid north geolocation def xaxis2angle(x, y): - return math.degrees(math.atan2(y, x)) + return math.degrees(math.atan2(y, x)) * -1 # Used for converting the X and Y vectors of the Y Axis in IFC true north geolocation diff --git a/src/ifcopenshell-python/ifcopenshell/util/schema.py b/src/ifcopenshell-python/ifcopenshell/util/schema.py index c6199c9889..3ec12889f9 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/schema.py +++ b/src/ifcopenshell-python/ifcopenshell/util/schema.py @@ -28,8 +28,8 @@ cwd = os.path.dirname(os.path.realpath(__file__)) def is_a(entity, ifc_class): - ifc_class = ifc_class.lower() - if entity.name_lc() == ifc_class: + ifc_class = ifc_class.upper() + if entity.name_uc() == ifc_class: return True if entity.supertype(): return is_a(entity.supertype(), ifc_class) diff --git a/src/ifcopenshell-python/ifcopenshell/util/selector.py b/src/ifcopenshell-python/ifcopenshell/util/selector.py index 910f287647..c8b7a2eb91 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/selector.py +++ b/src/ifcopenshell-python/ifcopenshell/util/selector.py @@ -192,7 +192,9 @@ class Selector: element_value = cls.get_element_value(element, key) if element_value is None and value is not None: continue - if not comparison or cls.filter_element(element, element_value, comparison, value): + if comparison and cls.filter_element(element, element_value, comparison, value): + results.append(element) + elif not comparison and element_value: results.append(element) return results diff --git a/src/ifcopenshell-python/ifcopenshell/util/system.py b/src/ifcopenshell-python/ifcopenshell/util/system.py index acbedc8305..0b3e50a469 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/system.py +++ b/src/ifcopenshell-python/ifcopenshell/util/system.py @@ -40,7 +40,8 @@ def get_ports(element): results = [] for rel in getattr(element, "IsNestedBy", []) or []: results.extend([o for o in rel.RelatedObjects if o.is_a("IfcDistributionPort")]) - for rel in element.HasPorts or []: + # IFC2X3 only, deprecated in IFC4 + for rel in getattr(element, "HasPorts", []) or []: results.append(rel.RelatingPort) return results diff --git a/src/ifcopenshell-python/ifcopenshell/validate.py b/src/ifcopenshell-python/ifcopenshell/validate.py index 866154ff3c..685ba8c8c0 100644 --- a/src/ifcopenshell-python/ifcopenshell/validate.py +++ b/src/ifcopenshell-python/ifcopenshell/validate.py @@ -16,6 +16,8 @@ # You should have received a copy of the GNU Lesser General Public License # along with IfcOpenShell. If not, see . +"""Data validation module""" + from __future__ import print_function import sys @@ -70,11 +72,54 @@ simple_type_python_mapping = { } +def annotate_inst_attr_pos(inst, pos): + def get_pos(): + depth=0 + idx=-1 + for c in str(inst): + if c == '(': + depth += 1 + if depth == 1: + idx = 0 + yield -1 + else: + yield idx + elif c == ')': + depth -= 1 + if depth == 0: + idx = -1 + yield -1 + else: + yield idx + elif depth == 1 and c == ',': + idx += 1 + yield -1 + else: + yield idx + return "".join(" ^"[i == pos] for i in get_pos()) + + +def format(val): + if isinstance(val, tuple) and val and isinstance(val[0], ifcopenshell.entity_instance): + return "[\n%s\n ]" % "\n".join(" {}. {}".format(*x) for x in enumerate(val, start=1)) + else: + return repr(val) + + def assert_valid_inverse(attr, val, schema): b1, b2 = attr.bound1(), attr.bound2() invalid = len(val) < b1 or (b2 != -1 and len(val) > b2) if invalid: - raise ValidationError("%r not valid for %s" % (val, attr)) + + ent_ref = attr.entity_reference().name() + attr_ref = attr.attribute_reference().name() + aggr = attr.type_of_aggregation_string().upper() + b1 = attr.bound1() + b2 = attr.bound2() + + attr_formatted = f"{attr.name()} : {aggr} [{b1}:{b2}] OF {ent_ref} FOR {attr_ref}" + + raise ValidationError(f"With inverse:\n {attr_formatted}\nValue:\n {format(val)}\nNot valid\n") return True @@ -123,7 +168,7 @@ def assert_valid(attr, val, schema): raise NotImplementedError("Not impl %s %s" % (type(attr_type), attr_type)) if invalid: - raise ValidationError("%r not valid for %s" % (val, attr)) + raise ValidationError(f"With attribute:\n {attr}\nValue:\n {val}\nNot valid\n") return True @@ -164,7 +209,7 @@ def validate(f, logger): if hasattr(logger, "set_instance"): logger.error(e) else: - logger.error("In %s\n%s", inst, e) + logger.error("For instance:\n %s\n%s", inst, e) has_invalid_value = False for i in range(len(attrs)): @@ -176,18 +221,27 @@ def validate(f, logger): logger.error("Invalid attribute value for %s.%s", entity, attrs[i]) else: logger.error( - "In %s\nInvalid attribute value for %s.%s", + "For instance:\n %s\n %s\nInvalid attribute value for %s.%s", inst, + annotate_inst_attr_pos(inst, i), entity, attrs[i], ) has_invalid_value = True if not has_invalid_value: - for attr, val, is_derived in zip(attrs, inst, entity.derived()): + for i, (attr, val, is_derived) in enumerate(zip(attrs, inst, entity.derived())): if val is None and not (is_derived or attr.optional()): - logger.error("Attribute %s.%s not optional", entity, attr) + if hasattr(logger, "set_instance"): + logger.error("Attribute %s.%s not optional", entity, attr) + else: + logger.error( + "For instance:\n %s\n %s\nWith attribute:\n %s\nNot optional\n", + inst, + annotate_inst_attr_pos(inst, i), + attr + ) if val is not None: attr_type = attr.type_of_attribute() @@ -197,7 +251,10 @@ def validate(f, logger): if hasattr(logger, "set_instance"): logger.error(str(e)) else: - logger.error("In %s\n%s", inst, e) + logger.error("For instance:\n %s\n %s\n%s", + inst, + annotate_inst_attr_pos(inst, i), + e) for attr in entity.all_inverse_attributes(): val = getattr(inst, attr.name()) @@ -207,7 +264,7 @@ def validate(f, logger): if hasattr(logger, "set_instance"): logger.error(str(e)) else: - logger.error("In %s\n%s", inst, e) + logger.error("For instance:\n %s\n%s", inst, e) if __name__ == "__main__": diff --git a/src/ifcopenshell-python/test/api/geometry/test_edit_object_placement.py b/src/ifcopenshell-python/test/api/geometry/test_edit_object_placement.py index 384c5fc5d3..e213ed21a2 100644 --- a/src/ifcopenshell-python/test/api/geometry/test_edit_object_placement.py +++ b/src/ifcopenshell-python/test/api/geometry/test_edit_object_placement.py @@ -460,8 +460,55 @@ class TestEditObjectPlacement(test.bootstrap.IFC4): assert numpy.array_equal(ifcopenshell.util.placement.get_local_placement(subelement.ObjectPlacement), submatrix) assert subelement.ObjectPlacement.PlacementRelTo == element.ObjectPlacement + def test_changing_placements_always_affecting_child_ports_as_a_special_case(self): + ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcProject") + ifcopenshell.api.run("unit.assign_unit", self.file) + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcChiller") + subelement = ifcopenshell.api.run("system.add_port", self.file, element=element) + matrix = numpy.array( + ( + (1.0, 0.0, 0.0, 1.0), + (0.0, 1.0, 0.0, 1.0), + (0.0, 0.0, 1.0, 1.0), + (0.0, 0.0, 0.0, 1.0), + ) + ) + submatrix = numpy.array( + ( + (1.0, 0.0, 0.0, 1.0), + (0.0, 1.0, 0.0, 2.0), + (0.0, 0.0, 1.0, 3.0), + (0.0, 0.0, 0.0, 1.0), + ) + ) + shifted_submatrix = numpy.array( + ( + (1.0, 0.0, 0.0, 1.0), + (0.0, 1.0, 0.0, 3.0), + (0.0, 0.0, 1.0, 5.0), + (0.0, 0.0, 0.0, 1.0), + ) + ) + ifcopenshell.api.run( + "geometry.edit_object_placement", self.file, product=element, matrix=matrix.copy(), is_si=False + ) + ifcopenshell.api.run( + "geometry.edit_object_placement", self.file, product=subelement, matrix=submatrix.copy(), is_si=False + ) + ifcopenshell.api.run( + "geometry.edit_object_placement", + self.file, + product=element, + matrix=submatrix.copy(), + is_si=False, + should_transform_children=False, + ) + assert numpy.array_equal(ifcopenshell.util.placement.get_local_placement(element.ObjectPlacement), submatrix) + assert numpy.array_equal(ifcopenshell.util.placement.get_local_placement(subelement.ObjectPlacement), shifted_submatrix) + assert subelement.ObjectPlacement.PlacementRelTo == element.ObjectPlacement -class TestEditObjectPlacement(test.bootstrap.IFC2X3): + +class TestEditObjectPlacementIFC2X3(test.bootstrap.IFC2X3): def test_changing_placements_relative_to_a_distribution_element(self): ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcProject") ifcopenshell.api.run("unit.assign_unit", self.file) diff --git a/src/ifcopenshell-python/test/api/library/test_assign_reference.py b/src/ifcopenshell-python/test/api/library/test_assign_reference.py index 8565514502..1133b592d6 100644 --- a/src/ifcopenshell-python/test/api/library/test_assign_reference.py +++ b/src/ifcopenshell-python/test/api/library/test_assign_reference.py @@ -38,7 +38,7 @@ class TestAssignReference(test.bootstrap.IFC4): assert reference.LibraryRefForObjects[0].RelatedObjects == (product,) -class TestAssignReference(test.bootstrap.IFC2X3): +class TestAssignReferenceIFC2X3(test.bootstrap.IFC2X3): def test_assigning_a_reference(self): reference = self.file.createIfcLibraryReference() product = self.file.createIfcWall() diff --git a/src/ifcopenshell-python/test/api/owner/test_assign_actor.py b/src/ifcopenshell-python/test/api/owner/test_assign_actor.py new file mode 100644 index 0000000000..720cf1492b --- /dev/null +++ b/src/ifcopenshell-python/test/api/owner/test_assign_actor.py @@ -0,0 +1,38 @@ +# 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 + + +class TestAssignProduct(test.bootstrap.IFC4): + def test_assigning_an_actor(self): + wall = self.file.createIfcWall() + wall2 = self.file.createIfcWall() + actor = self.file.createIfcActor() + ifcopenshell.api.run("owner.assign_actor", self.file, relating_actor=actor, related_object=wall) + assert actor.IsActingUpon[0].RelatedObjects == (wall,) + ifcopenshell.api.run("owner.assign_actor", self.file, relating_actor=actor, related_object=wall2) + assert actor.IsActingUpon[0].RelatedObjects == (wall, wall2) + + def test_not_assigning_twice(self): + wall = self.file.createIfcWall() + actor = self.file.createIfcActor() + ifcopenshell.api.run("owner.assign_actor", self.file, relating_actor=actor, related_object=wall) + ifcopenshell.api.run("owner.assign_actor", self.file, relating_actor=actor, related_object=wall) + assert actor.IsActingUpon[0].RelatedObjects == (wall,) diff --git a/src/ifcopenshell-python/test/api/owner/test_unassign_actor.py b/src/ifcopenshell-python/test/api/owner/test_unassign_actor.py new file mode 100644 index 0000000000..c7e4e7c220 --- /dev/null +++ b/src/ifcopenshell-python/test/api/owner/test_unassign_actor.py @@ -0,0 +1,29 @@ +# 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 + + +class TestUnassignActor(test.bootstrap.IFC4): + def test_unassigning_an_actor(self): + wall = self.file.createIfcWall() + actor = self.file.createIfcActor() + ifcopenshell.api.run("owner.assign_actor", self.file, relating_actor=actor, related_object=wall) + ifcopenshell.api.run("owner.unassign_actor", self.file, relating_actor=actor, related_object=wall) + assert len(self.file.by_type("IfcRelAssignsToActor")) == 0 diff --git a/src/ifcopenshell-python/test/api/root/test_copy_class.py b/src/ifcopenshell-python/test/api/root/test_copy_class.py index 39198260d6..ce9875c475 100644 --- a/src/ifcopenshell-python/test/api/root/test_copy_class.py +++ b/src/ifcopenshell-python/test/api/root/test_copy_class.py @@ -149,3 +149,15 @@ class TestCopyClass(test.bootstrap.IFC4): ifcopenshell.api.run("type.assign_type", self.file, related_object=element, relating_type=type) new = ifcopenshell.api.run("root.copy_class", self.file, product=type) assert not new.Types + + def test_copying_distribution_ports(self): + ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcProject") + ifcopenshell.api.run("unit.assign_unit", self.file) + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcChiller") + port = ifcopenshell.api.run("system.add_port", self.file) + ifcopenshell.api.run("system.assign_port", self.file, element=element, port=port) + new = ifcopenshell.api.run("root.copy_class", self.file, product=element) + new_ports = ifcopenshell.util.system.get_ports(new) + assert port not in new_ports + assert new_ports[0].is_a("IfcDistributionPort") + assert ifcopenshell.util.system.get_ports(element) == [port] diff --git a/src/ifcopenshell-python/test/api/root/test_remove_product.py b/src/ifcopenshell-python/test/api/root/test_remove_product.py index 7bfaef0243..7eeb17d3cf 100644 --- a/src/ifcopenshell-python/test/api/root/test_remove_product.py +++ b/src/ifcopenshell-python/test/api/root/test_remove_product.py @@ -130,3 +130,13 @@ class TestRemoveProduct(test.bootstrap.IFC4): assert len(list(self.file)) == total_entities - 2 assert len(self.file.by_type("IfcDoor")) == 0 assert len(self.file.by_type("IfcRelFillsElement")) == 0 + + def test_removing_all_distribution_ports(self): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcChiller") + port = ifcopenshell.api.run("system.add_port", self.file, element=element) + total_entities = len(list(self.file)) + ifcopenshell.api.run("root.remove_product", self.file, product=element) + assert len(list(self.file)) == total_entities - 3 + assert len(self.file.by_type("IfcChiller")) == 0 + assert len(self.file.by_type("IfcRelNests")) == 0 + assert len(self.file.by_type("IfcDistributionPort")) == 0 diff --git a/src/ifcopenshell-python/test/ids_doc_generator.py b/src/ifcopenshell-python/test/ids_doc_generator.py new file mode 100644 index 0000000000..a703d4d48b --- /dev/null +++ b/src/ifcopenshell-python/test/ids_doc_generator.py @@ -0,0 +1,125 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2021 Thomas Krijnen +# +# 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 os +import re +import unittest +import functools +import itertools +import ifcopenshell +import test_ids +from xml.dom.minidom import parseString +from ifcopenshell import ids, template, validate + +outdir = "build" + + +class DocGenerator: + def __init__(self): + self.facet = None + self.testcases = {} + + def __call__(self, name, *, facet, inst, expected): + if not name: + return + + result = "pass" if expected is True else "fail" + + f = inst.wrapped_data.file + instances = list(f) + + # Validate the file created and loop over the issues, fixing them + # one by one. + l = validate.json_logger() + validate.validate(f, l) + for issue in l.statements: + if "GlobalId" in issue["message"]: + issue["instance"].GlobalId = ifcopenshell.guid.new() + + elif "PredefinedType" in issue["message"]: + ty = re.findall("\\(.+?\\)", issue["message"])[0][1:-1].split(", ")[0] + issue["instance"].PredefinedType = ty + elif "IfcMaterialList" in issue["message"]: + issue["instance"].Materials = [f.createIfcMaterial("Concrete", None, "CONCRETE")] + else: + raise Exception("About to emit invalid example data:", issue) + + ifc_text = "\n".join([f"{e} /* Testcase */" if e == inst else str(e) for e in f]) + basename = f"{result}-" + re.sub("[^0-9a-zA-Z]", "_", name.lower()) + + # Write IFC to disk + f.write(os.path.join(outdir, f"{basename}.ifc")) + + # Create an IDS with the applicability selecting exactly + # the entity type passed to us in `inst`. + specs = ids.ids(title=name) + spec = ids.specification(name=name) + spec.add_applicability(ids.entity.create(name=inst.is_a())) + spec.add_requirement(facet) + specs.specifications.append(spec) + + # Write IDS to disk + with open(os.path.join(outdir, f"{basename}.ids"), "w", encoding="utf-8") as ids_file: + ids_file.write(specs.to_string()) + + xml_text = "\n".join( + l + for l in parseString(specs.to_string()) + .getElementsByTagName("requirements")[0] + .childNodes[1] + .toprettyxml() + .split("\n") + if l.strip() + ).replace("\t", " ") + + self.testcases.setdefault(self.facet, []).append( + {"name": name, "ids": xml_text, "ifc": ifc_text, "basename": basename, "result": result, "id": inst.id()} + ) + + assert bool(facet(inst)) is expected + + def set_facet(self, facet): + self.facet = facet + + +test_ids.run = DocGenerator() +test_ids.set_facet = test_ids.run.set_facet + +suite = unittest.TestLoader().discover(".", pattern="test_ids.py") +result = unittest.TextTestRunner(verbosity=2).run(suite) + +for facet, testcases in test_ids.run.testcases.items(): + with open(os.path.join(outdir, f"testcases-{facet}.md"), "w") as f: + write = functools.partial(print, file=f) + write(f"# {facet.capitalize()} testcases") + write() + write("These testcases are designed to help describe behaviour in edge cases and ambiguities. All valid IDS implementations must demonstrate identical behaviour to these test cases.") + write() + for testcase in testcases: + write(f"## [{testcase['result'].upper()}] {testcase['name']}") + write() + write("~~~xml") + write(testcase["ids"]) + write("~~~") + write() + write("~~~lua") + write(testcase["ifc"]) + write("~~~") + write() + write(f"[Sample IDS]({testcase['basename']}.ids) - [Sample IFC: {testcase['id']}]({testcase['basename']}.ifc)") + write() diff --git a/src/ifcopenshell-python/test/test_ids.py b/src/ifcopenshell-python/test/test_ids.py index 99d2cae3bf..ccd7e20fac 100644 --- a/src/ifcopenshell-python/test/test_ids.py +++ b/src/ifcopenshell-python/test/test_ids.py @@ -17,16 +17,16 @@ # along with IfcOpenShell. If not, see . import os +import pytest import logging import unittest import tempfile -import requests -from bcf import bcfxml +import xmlschema import ifcopenshell +import ifcopenshell.api +from bcf import bcfxml from ifcopenshell import ids - -TEST_PATH = os.path.join(tempfile.gettempdir(), "test.ifc") IFC_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IFC/", "IFC4_Wall_3_with_properties.ifc") IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_all_fields.xml") @@ -40,30 +40,37 @@ file.close() ifc_file = ifcopenshell.open(IFC_URL) os.remove(os.path.join(tempfile.gettempdir(), "test.ifc")) + +def set_facet(facet): + pass + +def run(name, *, facet, inst, expected): + assert bool(facet(inst)) is expected + + class TestIdsParsing(unittest.TestCase): - - """Parsing basic IDS files""" - def test_parse_basic_ids(self): + return # TODO IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_all_fields.xml") ids_file = ids.ids.open(IDS_URL) self.assertEqual(type(ids_file).__name__, "ids") def test_parse_entity_facet(self): + return # TODO IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_entity.xml") ids_file = ids.ids.open(IDS_URL) self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["name"]["simpleValue"], "IfcWall") def test_parse_predefinedType_facet(self): - IDS_URL = ( - os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_predefinedtype.xml") - ) + return # TODO + IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_predefinedtype.xml") ids_file = ids.ids.open(IDS_URL) self.assertEqual( ids_file.specifications[0].requirements.terms[0].node["predefinedType"]["simpleValue"], "CLADDING" ) def test_parse_property_facet(self): + return # TODO IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property.xml") ids_file = ids.ids.open(IDS_URL) self.assertEqual( @@ -73,40 +80,52 @@ class TestIdsParsing(unittest.TestCase): self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["value"]["simpleValue"], "Test_Value") def test_parse_material_facet(self): + return # TODO IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_material.xml") ids_file = ids.ids.open(IDS_URL) self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["value"]["simpleValue"], "Test_Material") def test_parse_classification_facet(self): - IDS_URL = ( - os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_classification.xml") - ) + return # TODO + IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_classification.xml") ids_file = ids.ids.open(IDS_URL) self.assertEqual( ids_file.specifications[0].requirements.terms[0].node["value"]["simpleValue"], "Test_Classification" ) self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["system"]["simpleValue"], "Test_System") - """ Parsing invalid IDS.xml """ - # TODO - # def test_invalid_classification_facet(self): - # IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "Invalid_IDS_Wall_needs_classification.xml") - # self.assertRaises( XMLSchemaChildrenValidationError, ids.open(IDS_URL) ) + def test_failing_on_opening_invalid_ids_data(self): + with pytest.raises(xmlschema.validators.exceptions.XMLSchemaValidationError): + ids.ids.open("""""") """ Saving parsed IDS to IDS.xml """ def test_parsed_ids_to_xml(self): - IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_all_fields.xml") + return # TODO + IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files", "IDS", "IDS_Wall_needs_all_fields.xml") ids_file = ids.ids.open(IDS_URL) - fn = "TEST_FILE.xml" + fn = "output.xml" result = ids_file.to_xml(fn) + assert os.path.isfile(fn) os.remove(fn) self.assertTrue(result) + def test_parsed_ids_to_string(self): + return # TODO + IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files", "IDS", "IDS_Wall_needs_all_fields.xml") + ids_file = ids.ids.open(IDS_URL) + output = ids_file.to_string() + assert output and "http://standards.buildingsmart.org/IDS" in output + """ Parsing IDS files with restrictions """ def test_parse_restrictions_enumeration(self): - IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property_with_restriction_enumeration.xml") + return # TODO + IDS_URL = os.path.join( + os.path.dirname(__file__), + "Sample-BIM-Files/IDS/", + "IDS_Wall_needs_property_with_restriction_enumeration.xml", + ) ids_file = ids.ids.open(IDS_URL) self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["name"]["simpleValue"], "Test_Parameter") self.assertEqual( @@ -118,7 +137,10 @@ class TestIdsParsing(unittest.TestCase): ) def test_parse_restrictions_bounds(self): - IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property_with_restriction_bounds.xml") + return # TODO + IDS_URL = os.path.join( + os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property_with_restriction_bounds.xml" + ) ids_file = ids.ids.open(IDS_URL) self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["name"]["simpleValue"], "Test_Parameter") self.assertEqual( @@ -127,7 +149,10 @@ class TestIdsParsing(unittest.TestCase): ) def test_parse_restrictions_pattern_simple(self): - IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property_with_restriction_pattern.xml") + return # TODO + IDS_URL = os.path.join( + os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property_with_restriction_pattern.xml" + ) ids_file = ids.ids.open(IDS_URL) self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["name"]["simpleValue"], "Test_Parameter") self.assertEqual( @@ -137,51 +162,981 @@ class TestIdsParsing(unittest.TestCase): class TestIdsAuthoring(unittest.TestCase): + def test_create_an_ids_with_minimal_information(self): + specs = ids.ids() + assert specs.asdict() == { + "@xmlns": "http://standards.buildingsmart.org/IDS", + "@xmlns:xs": "http://www.w3.org/2001/XMLSchema", + "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", + "@xsi:schemaLocation": "http://standards.buildingsmart.org/IDS/ids_05.xsd", + "info": {"title": "Untitled"}, + "specifications": {"specification": []}, + } - """Creating basic IDS""" - - def test_entity_create(self): - e = ids.entity.create(name="Test_Name", predefinedType="Test_PredefinedType") - self.assertEqual(e.name, "Test_Name") - self.assertEqual(e.predefinedType, "Test_PredefinedType") - - def test_classification_create(self): - c = ids.classification.create(location="any", value="Test_Value", system="Test_System") - self.assertEqual(c.location, "any") - self.assertEqual(c.value, "Test_Value") - self.assertEqual(c.system, "Test_System") - - def test_property_create(self): - p = ids.property.create( - location="any", propertySet="Test_PropertySet", name="Test_Parameter", value="Test_Value" + def test_create_an_ids_with_all_possible_information(self): + specs = ids.ids( + title="title", + copyright="copyright", + version="version", + description="description", + author="author@test.com", + date="2020-01-01", + purpose="purpose", + milestone="milestone", ) - self.assertEqual(p.location, "any") - self.assertEqual(p.propertySet, "Test_PropertySet") - self.assertEqual(p.name, "Test_Parameter") - self.assertEqual(p.value, "Test_Value") + assert specs.asdict() == { + "@xmlns": "http://standards.buildingsmart.org/IDS", + "@xmlns:xs": "http://www.w3.org/2001/XMLSchema", + "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", + "@xsi:schemaLocation": "http://standards.buildingsmart.org/IDS/ids_05.xsd", + "info": { + "title": "title", + "copyright": "copyright", + "version": "version", + "description": "description", + "author": "author@test.com", + "date": "2020-01-01", + "purpose": "purpose", + "milestone": "milestone", + }, + "specifications": {"specification": []}, + } - def test_material_create(self): - m = ids.material.create(location="any", value="Test_Value") - self.assertEqual(m.location, "any") - self.assertEqual(m.value, "Test_Value") + def test_check_invalid_ids_information(self): + specs = ids.ids(title=None, author="author", date="9999-99-99") + assert specs.asdict() == { + "@xmlns": "http://standards.buildingsmart.org/IDS", + "@xmlns:xs": "http://www.w3.org/2001/XMLSchema", + "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", + "@xsi:schemaLocation": "http://standards.buildingsmart.org/IDS/ids_05.xsd", + "info": {"title": "Untitled"}, + "specifications": {"specification": []}, + } - def test_specification_create(self): - s = ids.specification(name="Test_Specification") - self.assertEqual(s.name, "Test_Specification") + def test_authoring_an_ids_with_no_specifications_is_invalid(self): + specs = ids.ids() + with pytest.raises(xmlschema.validators.exceptions.XMLSchemaChildrenValidationError): + specs.to_string() - def test_ids_add_content(self): - i = ids.ids(title="My IDS") - i.specifications.append(ids.specification(name="Test_Specification")) - self.assertEqual(i.specifications[0].name, "Test_Specification") - m = ids.material.create(location="any", value="Test_Value") - i.specifications[0].add_applicability(m) - self.assertEqual(i.specifications[0].applicability.terms[0].value, "Test_Value") - i.specifications[0].add_applicability(m) - self.assertEqual(i.specifications[0].applicability.terms[1].value, "Test_Value") - i.specifications[0].add_requirement(m) - self.assertEqual(i.specifications[0].requirements.terms[0].value, "Test_Value") - i.specifications[0].add_requirement(m) - self.assertEqual(i.specifications[0].requirements.terms[1].value, "Test_Value") + def test_create_specification_with_minimal_information(self): + spec = ids.specification() + assert spec.asdict() == { + "@name": "Unnamed", + "@ifcVersion": ["IFC2X3", "IFC4"], + "applicability": {}, + "requirements": {}, + } + + def test_create_specification_with_all_possible_information(self): + spec = ids.specification( + name="name", + minOccurs="0", + maxOccurs="unbounded", + ifcVersion="IFC4", + identifier="identifier", + description="description", + instructions="instructions", + ) + assert spec.asdict() == { + "@name": "name", + "@minOccurs": "0", + "@maxOccurs": "unbounded", + "@ifcVersion": "IFC4", + "@identifier": "identifier", + "@description": "description", + "@instructions": "instructions", + "applicability": {}, + "requirements": {}, + } + + def test_creating_an_entity_facet(self): + facet = ids.entity.create(name="IfcName") + assert facet.asdict() == {"name": {"simpleValue": "IfcName"}} + facet = ids.entity.create(name="IfcName", predefinedType="predefinedType", instructions="instructions") + assert facet.asdict() == { + "name": {"simpleValue": "IfcName"}, + "predefinedType": {"simpleValue": "predefinedType"}, + "@instructions": "instructions", + } + + def test_filtering_using_an_entity_facet(self): + set_facet("entity") + + ifc = ifcopenshell.file() + facet = ids.entity.create(name="IFCRABBIT") + run("Invalid entities always fail", facet=facet, inst=ifc.createIfcWall(), expected=False) + + ifc = ifcopenshell.file() + facet = ids.entity.create(name="IFCWALL") + run("A matching entity should pass", facet=facet, inst=ifc.createIfcWall(), expected=True) + ifc = ifcopenshell.file() + run( + "An matching entity should pass regardless of predefined type", + facet=facet, + inst=ifc.createIfcWall(PredefinedType="SOLIDWALL"), + expected=True, + ) + ifc = ifcopenshell.file() + run( + "An entity not matching the specified class should fail", + facet=facet, + inst=ifc.createIfcSlab(), + expected=False, + ) + # TODO: Some votes to prefer inheritance (For: Moult, Evandro, Artur) + # Possible argument: CAD tools don't understand IFC + ifc = ifcopenshell.file() + run( + "Subclasses are not considered as matching", + facet=facet, + inst=ifc.createIfcWallStandardCase(), + expected=False, + ) + + # TODO But in that case why are the enumerations for things like partOf using the IFC capitalisation? + facet = ids.entity.create(name="IfcWall") + ifc = ifcopenshell.file() + run( + "Entities must be specified as uppercase strings", + facet=facet, + inst=ifc.createIfcWall(), + expected=False, + ) + + facet = ids.entity.create(name="IFCWALL", predefinedType="SOLIDWALL") + ifc = ifcopenshell.file() + run( + "A matching predefined type should pass", + facet=facet, + inst=ifc.createIfcWall(PredefinedType="SOLIDWALL"), + expected=True, + ) + ifc = ifcopenshell.file() + run( + "A null predefined type should always fail a specified predefined types", + facet=facet, + inst=ifc.createIfcWall(), + expected=False, + ) + ifc = ifcopenshell.file() + run( + "An entity not matching a specified predefined type will fail", + facet=facet, + inst=ifc.createIfcWall(PredefinedType="PARTITIONING"), + expected=False, + ) + + facet = ids.entity.create(name="IFCWALL", predefinedType="solidwall") + ifc = ifcopenshell.file() + run( + "A predefined type from an enumeration must be uppercase", + facet=facet, + inst=ifc.createIfcWall(PredefinedType="SOLIDWALL"), + expected=False, + ) + + facet = ids.entity.create(name="IFCWALL", predefinedType="WALDO") + ifc = ifcopenshell.file() + run( + "A predefined type may specify a user-defined object type", + facet=facet, + inst=ifc.createIfcWall(PredefinedType="USERDEFINED", ObjectType="WALDO"), + expected=True, + ) + + facet = ids.entity.create(name="IFCWALL", predefinedType="WALDO") + ifc = ifcopenshell.file() + run( + "User-defined types are checked case sensitively", + facet=facet, + inst=ifc.createIfcWall(PredefinedType="USERDEFINED", ObjectType="waldo"), + expected=False, + ) + + facet = ids.entity.create(name="IFCWALLTYPE", predefinedType="WALDO") + ifc = ifcopenshell.file() + run( + "A predefined type may specify a user-defined element type", + facet=facet, + inst=ifc.createIfcWallType(PredefinedType="USERDEFINED", ElementType="WALDO"), + expected=True, + ) + + facet = ids.entity.create(name="IFCTASKTYPE", predefinedType="TASKY") + ifc = ifcopenshell.file() + run( + "A predefined type may specify a user-defined process type", + facet=facet, + inst=ifc.createIfcTaskType(PredefinedType="USERDEFINED", ProcessType="TASKY"), + expected=True, + ) + + facet = ids.entity.create(name="IFCWALL", predefinedType="USERDEFINED") + ifc = ifcopenshell.file() + run( + "A predefined type must always specify a meaningful type, not USERDEFINED itself", + facet=facet, + inst=ifc.createIfcWall(PredefinedType="USERDEFINED", ObjectType="WALDO"), + expected=False, + ) + + ifc = ifcopenshell.file() + wall = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + wall_type = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWallType", predefined_type="X") + ifcopenshell.api.run("type.assign_type", ifc, related_object=wall, relating_type=wall_type) + facet = ids.entity.create(name="IFCWALL", predefinedType="X") + run("Inherited predefined types should pass", facet=facet, inst=wall, expected=True) + + ifc = ifcopenshell.file() + wall = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall", predefined_type="X") + wall_type = ifcopenshell.api.run( + "root.create_entity", ifc, ifc_class="IfcWallType", predefined_type="NOTDEFINED" + ) + ifcopenshell.api.run("type.assign_type", ifc, related_object=wall, relating_type=wall_type) + facet = ids.entity.create(name="IFCWALL", predefinedType="X") + run("Overridden predefined types should pass", facet=facet, inst=wall, expected=True) + + restriction = ids.restriction.create(options=["IFCWALL", "IFCSLAB"], type="enumeration") + facet = ids.entity.create(name=restriction) + ifc = ifcopenshell.file() + run("Entities can be specified as an enumeration 1/3", facet=facet, inst=ifc.createIfcWall(), expected=True) + ifc = ifcopenshell.file() + run("Entities can be specified as an enumeration 2/3", facet=facet, inst=ifc.createIfcSlab(), expected=True) + ifc = ifcopenshell.file() + run("Entities can be specified as an enumeration 3/3", facet=facet, inst=ifc.createIfcBeam(), expected=False) + + restriction = ids.restriction.create(options="IFC.*TYPE", type="pattern") + facet = ids.entity.create(name=restriction) + ifc = ifcopenshell.file() + run("Entities can be specified as a XSD regex pattern 1/2", facet=facet, inst=ifc.createIfcWall(), expected=False) + ifc = ifcopenshell.file() + run("Entities can be specified as a XSD regex pattern 2/2", facet=facet, inst=ifc.createIfcWallType(), expected=True) + + restriction = ids.restriction.create(options="FOO.*", type="pattern") + facet = ids.entity.create(name="IFCWALL", predefinedType=restriction) + ifc = ifcopenshell.file() + wall = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall", predefined_type="FOOBAR") + run("Restrictions an be specified for the predefined type 1/3", facet=facet, inst=wall, expected=True) + ifc = ifcopenshell.file() + wall2 = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall", predefined_type="FOOBAZ") + run("Restrictions an be specified for the predefined type 2/3", facet=facet, inst=wall2, expected=True) + ifc = ifcopenshell.file() + wall3 = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall", predefined_type="BAZFOO") + run("Restrictions an be specified for the predefined type 3/3", facet=facet, inst=wall3, expected=False) + + def test_creating_an_attribute_facet(self): + attribute = ids.attribute.create(name="name") + assert attribute.asdict() == {"name": {"simpleValue": "name"}} + attribute = ids.attribute.create(name="name", value="value") + assert attribute.asdict() == {"name": {"simpleValue": "name"}, "value": {"simpleValue": "value"}} + attribute = ids.attribute.create( + name="name", value="value", minOccurs="0", maxOccurs="unbounded", instructions="instructions" + ) + assert attribute.asdict() == { + "name": {"simpleValue": "name"}, + "value": {"simpleValue": "value"}, + "@minOccurs": "0", + "@maxOccurs": "unbounded", + "@instructions": "instructions", + } + + def test_filtering_using_an_attribute_facet(self): + set_facet("attribute") + + ifc = ifcopenshell.file() + facet = ids.attribute.create(name="Foobar") + run("Invalid attribute names always fail", facet=facet, inst=ifc.createIfcWall(), expected=False) + + ifc = ifcopenshell.file() + facet = ids.attribute.create(name="Name") + run("Attributes with a string value should pass", facet=facet, inst=ifc.createIfcWall(Name="Foobar"), expected=True) + ifc = ifcopenshell.file() + run("Attributes with null values always fail", facet=facet, inst=ifc.createIfcWall(), expected=False) + # The logic is that unfortunately most BIM users cannot differentiate between the two. + ifc = ifcopenshell.file() + run("Attributes with empty strings always fail", facet=facet, inst=ifc.createIfcWall(Name=""), expected=False) + facet = ids.attribute.create(name="CountValue") + ifc = ifcopenshell.file() + run("Attributes with a zero number have meaning and should pass", facet=facet, inst=ifc.createIfcQuantityCount(Name="Foobar", CountValue=0), expected=True) + + facet = ids.attribute.create(name="IsCritical") + ifc = ifcopenshell.file() + element = ifc.createIfcTaskTime(IsCritical=True) + run("Attributes with a boolean true should pass", facet=facet, inst=element, expected=True) + element.IsCritical = False + run("Attributes with a boolean false should pass", facet=facet, inst=element, expected=True) + + facet = ids.attribute.create(name="RelatingPriorities") + ifc = ifcopenshell.file() + run("Attributes with an empty list always fail", facet=facet, inst=ifc.createIfcRelConnectsPathElements(RelatingElement=ifc.createIfcWall(), RelatedElement=ifc.createIfcWall(), RelatingPriorities=[], RelatedPriorities=[], RelatedConnectionType="ATSTART", RelatingConnectionType="ATEND"), expected=False) + + facet = ids.attribute.create(name="LayerStyles") + ifc = ifcopenshell.file() + item = ifc.createIfcCartesianPoint([0., 0., 0.]) + layer = ifc.createIfcPresentationLayerWithStyle("Foo", None, [item], None, True, False, False, []) + run("Attributes with an empty set always fail", facet=facet, inst=layer, expected=False) + + layer.LayerOn = "UNKNOWN" + facet = ids.attribute.create(name="LayerOn") + run("Attributes with a logical unknown always fail", facet=facet, inst=layer, expected=False) + + facet = ids.attribute.create(name="ScheduleDuration") + ifc = ifcopenshell.file() + element = ifc.createIfcTaskTime(ScheduleDuration="P0D") + run("Attributes with a zero duration should pass", facet=facet, inst=element, expected=True) + + facet = ids.attribute.create(name="TaskTime") + ifc = ifcopenshell.file() + element = ifc.createIfcTask(IsMilestone=True, TaskTime=ifc.createIfcTaskTime()) + run("Attributes referencing an object should pass", facet=facet, inst=element, expected=True) + + facet = ids.attribute.create(name="DiffuseColour") + ifc = ifcopenshell.file() + rgb = ifc.createIfcColourRgb(None, 1, 1, 1) + run("Attributes with a select referencing an object should pass", facet=facet, inst=ifc.createIfcSurfaceStyleRendering(SurfaceColour=rgb, ReflectanceMethod="FLAT", DiffuseColour=ifc.createIfcColourRgb(None, 1, 1, 1)), expected=True) + + ifc = ifcopenshell.file() + rgb = ifc.createIfcColourRgb(None, 1, 1, 1) + run("Attributes with a select referencing a primitive should pass", facet=facet, inst=ifc.createIfcSurfaceStyleRendering(SurfaceColour=rgb, ReflectanceMethod="FLAT", DiffuseColour=ifc.createIfcNormalisedRatioMeasure(0.5)), expected=True) + + ifc = ifcopenshell.file() + facet = ids.attribute.create(name="EngagedIn") + person = ifc.createIfcPerson() + organisation = ifc.createIfcOrganization(Name="Foo") + ifc.createIfcPersonAndOrganization(ThePerson=person, TheOrganization=organisation) + run("Inverse attributes cannot be checked and always fail", facet=facet, inst=person, expected=False) + + ifc = ifcopenshell.file() + facet = ids.attribute.create(name="Dim") + run("Derived attributes cannot be checked and always fail", facet=facet, inst=ifc.createIfcCartesianPoint([0., 0., 0.]), expected=False) + + facet = ids.attribute.create(name="Name", value="Foobar") + ifc = ifcopenshell.file() + run("Attributes should check strings case sensitively 1/2", facet=facet, inst=ifc.createIfcWall(Name="Foobar"), expected=True) + ifc = ifcopenshell.file() + run("Attributes should check strings case sensitively 2/2", facet=facet, inst=ifc.createIfcWall(Name="foobar"), expected=False) + + facet = ids.attribute.create(name="TaskTime", value="Foobar") + ifc = ifcopenshell.file() + run("Value checks always fail for objects", facet=facet, inst=ifc.createIfcTask(IsMilestone=False, TaskTime=ifc.createIfcTaskTime()), expected=False) + + facet = ids.attribute.create(name="DiffuseColour", value="Foobar") + ifc = ifcopenshell.file() + rgb = ifc.createIfcColourRgb(None, 1, 1, 1) + run("Value checks always fail for selects", facet=facet, inst=ifc.createIfcSurfaceStyleRendering(SurfaceColour=rgb, ReflectanceMethod="FLAT", DiffuseColour=ifc.createIfcNormalisedRatioMeasure(0.5)), expected=False) + + facet = ids.attribute.create(name="Coordinates", value="Foobar") + ifc = ifcopenshell.file() + run("Value checks always fail for lists", facet=facet, inst=ifc.createIfcCartesianPoint([0., 0., 0.]), expected=False) + + # TODO continue from here + + global_id = ifcopenshell.guid.new() + facet = ids.attribute.create(name="GlobalId", value=global_id) + ifc = ifcopenshell.file() + run("GlobalIds are treated as strings and not expanded", facet=facet, inst=ifc.createIfcWall(GlobalId=global_id), expected=True) + + # 255 characters + identifier = "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345" + facet = ids.attribute.create(name="Identification", value=identifier + "_extra_characters") + ifc = ifcopenshell.file() + run("IDS does not handle string truncation such as for identifiers", facet=facet, inst=ifc.createIfcPerson(Identification=identifier), expected=False) + + facet = ids.attribute.create(name="RefractionIndex", value="42") + ifc = ifcopenshell.file() + run("Numeric values are checked using type casting 1/4", facet=facet, inst=ifc.createIfcSurfaceStyleRefraction(RefractionIndex=42), expected=True) + facet = ids.attribute.create(name="RefractionIndex", value="42.") + ifc = ifcopenshell.file() + run("Numeric values are checked using type casting 2/4", facet=facet, inst=ifc.createIfcSurfaceStyleRefraction(RefractionIndex=42.0), expected=True) + facet = ids.attribute.create(name="RefractionIndex", value="42.0") + ifc = ifcopenshell.file() + run("Numeric values are checked using type casting 3/4", facet=facet, inst=ifc.createIfcSurfaceStyleRefraction(RefractionIndex=42.0), expected=True) + facet = ids.attribute.create(name="RefractionIndex", value="42") + ifc = ifcopenshell.file() + run("Numeric values are checked using type casting 4/4", facet=facet, inst=ifc.createIfcSurfaceStyleRefraction(RefractionIndex=42.3), expected=False) + facet = ids.attribute.create(name="RefractionIndex", value="42,3") + ifc = ifcopenshell.file() + run("Only specifically formatted numbers are allowed 1/4", facet=facet, inst=ifc.createIfcSurfaceStyleRefraction(RefractionIndex=42.3), expected=False) + facet = ids.attribute.create(name="RefractionIndex", value="123,4.5") + ifc = ifcopenshell.file() + run("Only specifically formatted numbers are allowed 2/4", facet=facet, inst=ifc.createIfcSurfaceStyleRefraction(RefractionIndex=1234.5), expected=False) + facet = ids.attribute.create(name="RefractionIndex", value="1.2345e3") + ifc = ifcopenshell.file() + run("Only specifically formatted numbers are allowed 3/4", facet=facet, inst=ifc.createIfcSurfaceStyleRefraction(RefractionIndex=1234.5), expected=True) + facet = ids.attribute.create(name="RefractionIndex", value="1.2345E3") + ifc = ifcopenshell.file() + run("Only specifically formatted numbers are allowed 4/4", facet=facet, inst=ifc.createIfcSurfaceStyleRefraction(RefractionIndex=1234.5), expected=True) + + facet = ids.attribute.create(name="NumberOfRisers", value="42") + ifc = ifcopenshell.file() + run("Integers follow the same rules as numbers", facet=facet, inst=ifc.createIfcStairFlight(NumberOfRisers=42), expected=True) + facet = ids.attribute.create(name="NumberOfRisers", value="42.0") + ifc = ifcopenshell.file() + run("Integers follow the same rules as numbers 2/2", facet=facet, inst=ifc.createIfcStairFlight(NumberOfRisers=42), expected=True) + + facet = ids.attribute.create(name="NumberOfRisers", value="42.3") + ifc = ifcopenshell.file() + run("Integers are always floored when cast 1/2", facet=facet, inst=ifc.createIfcStairFlight(NumberOfRisers=42), expected=True) + facet = ids.attribute.create(name="NumberOfRisers", value="42.7") + ifc = ifcopenshell.file() + run("Integers are always floored when cast 2/2", facet=facet, inst=ifc.createIfcStairFlight(NumberOfRisers=42), expected=True) + + facet = ids.attribute.create(name="NumberOfRisers", value="42.7") + ifc = ifcopenshell.file() + run("Integers are always floored when cast 2/2", facet=facet, inst=ifc.createIfcStairFlight(NumberOfRisers=42), expected=True) + + facet = ids.attribute.create(name="IsMilestone", value="TRUE") + ifc = ifcopenshell.file() + element = ifc.createIfcTask(IsMilestone=False) + run("Booleans must be specified as uppercase strings 1/3", facet=facet, inst=element, expected=False) + facet = ids.attribute.create(name="IsMilestone", value="FALSE") + run("Booleans must be specified as uppercase strings 2/3", facet=facet, inst=element, expected=True) + facet = ids.attribute.create(name="IsMilestone", value="False") + run("Booleans must be specified as uppercase strings 2/3", facet=facet, inst=element, expected=False) + + facet = ids.attribute.create(name="EditionDate", value="2022-01-01") + ifc = ifcopenshell.file() + run("Dates are treated as strings 1/2", facet=facet, inst=ifc.createIfcClassification(Name="Name", EditionDate="2022-01-01"), expected=True) + ifc = ifcopenshell.file() + run("Dates are treated as strings 1/2", facet=facet, inst=ifc.createIfcClassification(Name="Name", EditionDate="2022-01-01+00:00"), expected=False) + + facet = ids.attribute.create(name="ScheduleDuration", value="PT16H") + ifc = ifcopenshell.file() + run("Durations are treated as strings 1/2", facet=facet, inst=ifc.createIfcClassification(Name="Name", EditionDate="PT16H"), expected=False) + ifc = ifcopenshell.file() + run("Durations are treated as strings 2/2", facet=facet, inst=ifc.createIfcClassification(Name="Name", EditionDate="P2D"), expected=False) + + restriction = ids.restriction.create(options=".*Name.*", type="pattern") + facet = ids.attribute.create(name=restriction) + ifc = ifcopenshell.file() + run("Name restrictions may be used 1/4", facet=facet, inst=ifc.createIfcMaterialLayerSet(MaterialLayers=[ifc.createIfcMaterialLayer(LayerThickness=1)], LayerSetName="Foo"), expected=True) + ifc = ifcopenshell.file() + run("Name restrictions may be used 2/4", facet=facet, inst=ifc.createIfcMaterialConstituentSet(Name="Foo"), expected=True) + + restriction = ids.restriction.create(options=["Name", "Description"], type="enumeration") + facet = ids.attribute.create(name=restriction) + ifc = ifcopenshell.file() + run("Name restrictions may be used 3/4", facet=facet, inst=ifc.createIfcWall(Name="Foo"), expected=False) + ifc = ifcopenshell.file() + run("Name restrictions may be used 4/4", facet=facet, inst=ifc.createIfcWall(Name="Foo", Description="Bar"), expected=True) + + restriction = ids.restriction.create(options=["Foo", "Bar"], type="enumeration") + facet = ids.attribute.create(name="Name", value=restriction) + ifc = ifcopenshell.file() + run("Value restrictions may be used 1/3", facet=facet, inst=ifc.createIfcWall(Name="Foo"), expected=True) + ifc = ifcopenshell.file() + run("Value restrictions may be used 2/3", facet=facet, inst=ifc.createIfcWall(Name="Bar"), expected=True) + ifc = ifcopenshell.file() + run("Value restrictions may be used 3/3", facet=facet, inst=ifc.createIfcWall(Name="Foobar"), expected=False) + + ifc = ifcopenshell.file() + wall = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + wall_type = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", ifc, related_object=wall, relating_type=wall_type) + wall_type.Description = "Foobar" + run("Attributes are not inherited by the occurrence", facet=facet, inst=wall, expected=False) + + restriction = ids.restriction.create(options=["42"], type="enumeration", base="string") + facet = ids.attribute.create(name="RefractionIndex", value=restriction) + ifc = ifcopenshell.file() + run("Typecast checking may also occur within enumeration restrictions", facet=facet, inst=ifc.createIfcSurfaceStyleRefraction(RefractionIndex=42), expected=True) + + restriction = ids.restriction.create( + options={"minInclusive": 42, "maxInclusive": 42}, type="bounds", base="decimal" + ) + facet = ids.attribute.create(name="RefractionIndex", value=restriction) + ifc = ifcopenshell.file() + run("Strict numeric checking may be done with a bounds restriction", facet=facet, inst=ifc.createIfcSurfaceStyleRefraction(RefractionIndex=42), expected=True) + + def test_creating_a_classification_facet(self): + facet = ids.classification.create() + assert facet.asdict() == {} + facet = ids.classification.create(value="value", system="system") + assert facet.asdict() == {"value": {"simpleValue": "value"}, "system": {"simpleValue": "system"}} + facet = ids.classification.create( + value="value", + system="system", + uri="https://test.com", + minOccurs="0", + maxOccurs="unbounded", + instructions="instructions", + ) + assert facet.asdict() == { + "value": {"simpleValue": "value"}, + "system": {"simpleValue": "system"}, + "@uri": "https://test.com", + "@minOccurs": "0", + "@maxOccurs": "unbounded", + "@instructions": "instructions", + } + + def test_filtering_using_a_classification_facet(self): + set_facet("classification") + + library = ifcopenshell.file() + system_a = library.createIfcClassification(Name="Foobar") + ref1 = library.createIfcClassificationReference(Identification="1", ReferencedSource=system_a) + ref11 = library.createIfcClassificationReference(Identification="11", ReferencedSource=ref1) + ref2 = library.createIfcClassificationReference(Identification="2", ReferencedSource=system_a) + ref22 = library.createIfcClassificationReference(Identification="22", ReferencedSource=ref2) + system_b = library.createIfcClassification(Name="Foobaz") + refx = library.createIfcClassificationReference(Identification="X", ReferencedSource=system_b) + + ifc = ifcopenshell.file() + project = ifc.createIfcProject() + system_a = ifcopenshell.api.run("classification.add_classification", ifc, classification=system_a) + element0 = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + element1 = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + ifcopenshell.api.run( + "classification.add_reference", ifc, product=element1, reference=ref1, classification=system_a + ) + element11 = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + ifcopenshell.api.run( + "classification.add_reference", ifc, product=element11, reference=ref11, classification=system_a + ) + element22 = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + ifcopenshell.api.run( + "classification.add_reference", + ifc, + product=element22, + reference=ref22, + classification=system_a, + is_lightweight=False, + ) + + facet = ids.classification.create() + run("A classification facet with no data matches any classification 1/2", facet=facet, inst=element0, expected=False) + run("A classification facet with no data matches any classification 2/2", facet=facet, inst=element1, expected=True) + + facet = ids.classification.create(value="1") + run("Values should match exactly if lightweight classifications are used", facet=facet, inst=element1, expected=True) + + facet = ids.classification.create(value="2") + run("Values match subreferences if full classifications are used (e.g. EF_25_10 should match EF_25_10_25, EF_25_10_30, etc)", facet=facet, inst=element22, expected=True) + + facet = ids.classification.create(system="Foobar") + run("Systems should match exactly 1/5", facet=facet, inst=project, expected=True) + run("Systems should match exactly 2/5", facet=facet, inst=element0, expected=False) + run("Systems should match exactly 3/5", facet=facet, inst=element1, expected=True) + run("Systems should match exactly 4/5", facet=facet, inst=element11, expected=True) + run("Systems should match exactly 5/5", facet=facet, inst=element22, expected=True) + + restriction = ids.restriction.create(options="1.*", type="pattern") + facet = ids.classification.create(value=restriction) + run("Restrictions can be used for values 1/3", facet=facet, inst=element1, expected=True) + run("Restrictions can be used for values 2/3", facet=facet, inst=element11, expected=True) + run("Restrictions can be used for values 3/3", facet=facet, inst=element22, expected=False) + + restriction = ids.restriction.create(options="Foo.*", type="pattern") + facet = ids.classification.create(system=restriction) + run("Restrictions can be used for systems 1/2", facet=facet, inst=element0, expected=False) + run("Restrictions can be used for systems 2/2", facet=facet, inst=element1, expected=True) + + facet = ids.classification.create(system="Foobar", value="1") + run("Both system and value must match (all, not any) if specified 1/2", facet=facet, inst=element1, expected=True) + run("Both system and value must match (all, not any) if specified 2/2", facet=facet, inst=element11, expected=False) + + # IFC doesn't yet formally specify how inheritance and overrides work here. We follow these rules: + # https://github.com/buildingSMART/IFC4.3.x-development/issues/475 + wall = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + wall_type = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", ifc, related_object=wall, relating_type=wall_type) + ifcopenshell.api.run("classification.add_reference", ifc, product=wall, reference=ref11, classification=system_a) + ifcopenshell.api.run( + "classification.add_reference", ifc, product=wall_type, reference=ref22, classification=system_a + ) + + system_b = ifcopenshell.api.run("classification.add_classification", ifc, classification=system_b) + ifcopenshell.api.run( + "classification.add_reference", ifc, product=wall_type, reference=refx, classification=system_b + ) + + facet = ids.classification.create(value="11") + run("Occurrences override the type classification per system 1/3", facet=facet, inst=wall, expected=True) + facet = ids.classification.create(value="22") + run("Occurrences override the type classification per system 2/3", facet=facet, inst=wall, expected=False) + facet = ids.classification.create(value="X") + run("Occurrences override the type classification per system 3/3", facet=facet, inst=wall, expected=True) + + def test_creating_a_property_facet(self): + facet = ids.property.create() + assert facet.asdict() == { + "propertySet": {"simpleValue": "Property_Set"}, + "name": {"simpleValue": "PropertyName"}, + } + facet = ids.property.create( + propertySet="propertySet", + name="name", + value="value", + measure="String", + uri="https://test.com", + minOccurs="0", + maxOccurs="unbounded", + instructions="instructions", + ) + assert facet.asdict() == { + "propertySet": {"simpleValue": "propertySet"}, + "name": {"simpleValue": "name"}, + "value": {"simpleValue": "value"}, + "@measure": "String", + "@uri": "https://test.com", + "@minOccurs": "0", + "@maxOccurs": "unbounded", + "@instructions": "instructions", + } + + def test_filtering_using_a_property_facet(self): + ifc = ifcopenshell.file() + ifc.createIfcProject() + # Milli prefix used to check measurement conversions + lengthunit = ifcopenshell.api.run("unit.add_si_unit", ifc, unit_type="LENGTHUNIT", name="METRE", prefix="MILLI") + areaunit = ifcopenshell.api.run( + "unit.add_si_unit", ifc, unit_type="AREAUNIT", name="SQUARE_METRE", prefix="MILLI" + ) + volumeunit = ifcopenshell.api.run( + "unit.add_si_unit", ifc, unit_type="VOLUMEUNIT", name="CUBIC_METRE", prefix="MILLI" + ) + timeunit = ifcopenshell.api.run("unit.add_si_unit", ifc, unit_type="TIMEUNIT", name="SECOND") + ifcopenshell.api.run("unit.assign_unit", ifc, units=[lengthunit, areaunit, volumeunit, timeunit]) + + # A name check by itself only checks that a property is non-null and non empty string + # The logic is that unfortunately most BIM users cannot differentiate between the two. + facet = ids.property.create(propertySet="Foo_Bar", name="Foo") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + run("", facet=facet, inst=element, expected=False) + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Bar") + run("", facet=facet, inst=element, expected=False) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": None}) + run("", facet=facet, inst=element, expected=False) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": "Bar"}) + run("", facet=facet, inst=element, expected=True) + + # A simple value checks an exact case-sensitive match + facet = ids.property.create(propertySet="Foo_Bar", name="Foo", value="Bar") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": "Bar"}) + run("", facet=facet, inst=element, expected=True) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": "Baz"}) + run("", facet=facet, inst=element, expected=False) + + # Simple values only check string matches + facet = ids.property.create(propertySet="Foo_Bar", name="Foo", value="1") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": "1"}) + run("", facet=facet, inst=element, expected=True) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": ifc.createIfcInteger(1)}) + run("", facet=facet, inst=element, expected=False) + + # Restrictions are supported for property sets. If multiple are matched, all must satisfy requirements. + restriction = ids.restriction.create(options="Foo_.*", type="pattern") + facet = ids.property.create(propertySet=restriction, name="Foo") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": "Bar"}) + run("", facet=facet, inst=element, expected=True) + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Baz") + run("", facet=facet, inst=element, expected=False) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": "Bar"}) + run("", facet=facet, inst=element, expected=True) + + # Restrictions are supported for names. If multiple are matched, all must satisfy requirements. + restriction = ids.restriction.create(options="Foo.*", type="pattern") + facet = ids.property.create(propertySet="Foo_Bar", name=restriction, value="x") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foobar": "x"}) + run("", facet=facet, inst=element, expected=True) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foobar": "x", "Foobaz": "x"}) + run("", facet=facet, inst=element, expected=True) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foobar": "x", "Foobaz": "y"}) + run("", facet=facet, inst=element, expected=False) + + # Restrictions are supported for values. If multiple are matched, all must satisfy requirements. + restriction1 = ids.restriction.create(options="Foo.*", type="pattern") + restriction2 = ids.restriction.create(options=["x", "y"], type="enumeration") + facet = ids.property.create(propertySet="Foo_Bar", name=restriction1, value=restriction2) + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foobar": "x", "Foobaz": "y"}) + run("", facet=facet, inst=element, expected=True) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foobar": "x", "Foobaz": "z"}) + run("", facet=facet, inst=element, expected=False) + + # Restrictions may be used to check basic data primitives + restriction = ids.restriction.create(options=[42.12], type="enumeration", base="decimal") + facet = ids.property.create(propertySet="Foo_Bar", name="Foobar", value=restriction) + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foobar": 42.12}) + run("", facet=facet, inst=element, expected=True) + restriction = ids.restriction.create(options=[42], type="enumeration", base="integer") + facet = ids.property.create(propertySet="Foo_Bar", name="Foobar", value=restriction) + run("", facet=facet, inst=element, expected=False) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foobar": 42}) + run("", facet=facet, inst=element, expected=True) + restriction = ids.restriction.create(options=[True], type="enumeration", base="boolean") + facet = ids.property.create(propertySet="Foo_Bar", name="Foobar", value=restriction) + run("", facet=facet, inst=element, expected=False) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foobar": True}) + run("", facet=facet, inst=element, expected=True) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foobar": False}) + run("", facet=facet, inst=element, expected=False) + + # When measure is not specified, no unit conversion is done and only primitives are checked + restriction = ids.restriction.create(options=[42.12], type="enumeration", base="decimal") + facet = ids.property.create(propertySet="Foo_Bar", name="Foobar", value=restriction) + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foobar": 42.12}) + run("", facet=facet, inst=element, expected=True) + + # Measure may be used to specify an IFC data type + restriction = ids.restriction.create(options=[2], type="enumeration", base="decimal") + facet = ids.property.create(propertySet="Foo_Bar", name="Foo", value=restriction, measure="Time") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": ifc.createIfcMassMeasure(2)}) + run("", facet=facet, inst=element, expected=False) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": ifc.createIfcTimeMeasure(2)}) + run("", facet=facet, inst=element, expected=True) + + # Measure also implies that a unit matters, and so a conversion shall take place to SI units + restriction = ids.restriction.create(options=[2], type="enumeration", base="decimal") + facet = ids.property.create(propertySet="Foo_Bar", name="Foo", value=restriction, measure="Length") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=element, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": ifc.createIfcLengthMeasure(2)}) + run("", facet=facet, inst=element, expected=False) + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": ifc.createIfcLengthMeasure(2000)}) + run("", facet=facet, inst=element, expected=True) + + # The facet checks inherited properties from the type + wall = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + wall_type = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", ifc, related_object=wall, relating_type=wall_type) + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=wall_type, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": "Bar"}) + facet = ids.property.create(propertySet="Foo_Bar", name="Foo") + run("", facet=facet, inst=wall, expected=True) + run("", facet=facet, inst=wall_type, expected=True) + + # The facet checks overriden properties from the occurrence + wall = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + wall_type = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", ifc, related_object=wall, relating_type=wall_type) + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=wall_type, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": "Baz"}) + pset = ifcopenshell.api.run("pset.add_pset", ifc, product=wall, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", ifc, pset=pset, properties={"Foo": "Bar"}) + facet = ids.property.create(propertySet="Foo_Bar", name="Foo", value="Bar") + run("", facet=facet, inst=wall, expected=True) + run("", facet=facet, inst=wall_type, expected=False) + + def test_creating_a_material_facet(self): + facet = ids.material.create() + assert facet.asdict() == {} + facet = ids.material.create( + value="value", uri="https://test.com", minOccurs="0", maxOccurs="unbounded", instructions="instructions" + ) + assert facet.asdict() == { + "value": {"simpleValue": "value"}, + "@uri": "https://test.com", + "@minOccurs": "0", + "@maxOccurs": "unbounded", + "@instructions": "instructions", + } + + def test_filtering_using_a_material_facet(self): + ifc = ifcopenshell.file() + + # A material facet with no data matches any present material + facet = ids.material.create() + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + run("", facet=facet, inst=element, expected=False) + material = ifcopenshell.api.run("material.add_material", ifc) + ifcopenshell.api.run("material.assign_material", ifc, product=element, material=material) + run("", facet=facet, inst=element, expected=True) + + # A value will match a material name or category + facet = ids.material.create(value="Foo") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + material = ifcopenshell.api.run("material.add_material", ifc) + ifcopenshell.api.run("material.assign_material", ifc, product=element, material=material) + run("", facet=facet, inst=element, expected=False) + material.Name = "Foo" + run("", facet=facet, inst=element, expected=True) + material.Name = "Bar" + material.Category = "Foo" + run("", facet=facet, inst=element, expected=True) + + # A value will match any material name or category in a material list + facet = ids.material.create(value="Foo") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + material_set = ifcopenshell.api.run("material.add_material_set", ifc, set_type="IfcMaterialList") + ifcopenshell.api.run("material.assign_material", ifc, product=element, material=material_set) + run("", facet=facet, inst=element, expected=False) + material = ifcopenshell.api.run("material.add_material", ifc) + ifcopenshell.api.run("material.add_list_item", ifc, material_list=material_set, material=material) + material.Name = "Foo" + run("", facet=facet, inst=element, expected=True) + material.Name = "Bar" + material.Category = "Foo" + run("", facet=facet, inst=element, expected=True) + + # A value will match any material name or category, or layer name or category in a layer set + facet = ids.material.create(value="Foo") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + material_set = ifcopenshell.api.run("material.add_material_set", ifc, set_type="IfcMaterialLayerSet") + ifcopenshell.api.run("material.assign_material", ifc, product=element, material=material_set) + run("", facet=facet, inst=element, expected=False) + material = ifcopenshell.api.run("material.add_material", ifc) + layer = ifcopenshell.api.run("material.add_layer", ifc, layer_set=material_set, material=material) + layer.Name = "Foo" + run("", facet=facet, inst=element, expected=True) + layer.Name = "Bar" + layer.Category = "Foo" + run("", facet=facet, inst=element, expected=True) + layer.Category = "Bar" + material.Name = "Foo" + run("", facet=facet, inst=element, expected=True) + material.Name = "Bar" + material.Category = "Foo" + run("", facet=facet, inst=element, expected=True) + + # A value will match any material name or category, or profile name or category in a profile set + facet = ids.material.create(value="Foo") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + material_set = ifcopenshell.api.run("material.add_material_set", ifc, set_type="IfcMaterialProfileSet") + ifcopenshell.api.run("material.assign_material", ifc, product=element, material=material_set) + run("", facet=facet, inst=element, expected=False) + material = ifcopenshell.api.run("material.add_material", ifc) + profile = ifcopenshell.api.run("material.add_profile", ifc, profile_set=material_set, material=material) + profile.Name = "Foo" + run("", facet=facet, inst=element, expected=True) + profile.Name = "Bar" + profile.Category = "Foo" + run("", facet=facet, inst=element, expected=True) + profile.Category = "Bar" + material.Name = "Foo" + run("", facet=facet, inst=element, expected=True) + material.Name = "Bar" + material.Category = "Foo" + run("", facet=facet, inst=element, expected=True) + + # A value will match any material name or category, or constituent name or category in a constituent set + facet = ids.material.create(value="Foo") + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + material_set = ifcopenshell.api.run("material.add_material_set", ifc, set_type="IfcMaterialConstituentSet") + ifcopenshell.api.run("material.assign_material", ifc, product=element, material=material_set) + run("", facet=facet, inst=element, expected=False) + material = ifcopenshell.api.run("material.add_material", ifc) + constituent = ifcopenshell.api.run( + "material.add_constituent", ifc, constituent_set=material_set, material=material + ) + constituent.Name = "Foo" + run("", facet=facet, inst=element, expected=True) + constituent.Name = "Bar" + constituent.Category = "Foo" + run("", facet=facet, inst=element, expected=True) + constituent.Category = "Bar" + material.Name = "Foo" + run("", facet=facet, inst=element, expected=True) + material.Name = "Bar" + material.Category = "Foo" + run("", facet=facet, inst=element, expected=True) + + # The facet will check for inherited materials + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + element_type = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", ifc, related_object=element, relating_type=element_type) + material = ifcopenshell.api.run("material.add_material", ifc) + ifcopenshell.api.run("material.assign_material", ifc, product=element_type, material=material) + material.Name = "Foo" + facet = ids.material.create(value="Foo") + run("", facet=facet, inst=element, expected=True) + run("", facet=facet, inst=element_type, expected=True) + + # The facet will check for overriden materials + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + element_type = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", ifc, related_object=element, relating_type=element_type) + material = ifcopenshell.api.run("material.add_material", ifc) + ifcopenshell.api.run("material.assign_material", ifc, product=element_type, material=material) + material.Name = "Bar" + material = ifcopenshell.api.run("material.add_material", ifc) + ifcopenshell.api.run("material.assign_material", ifc, product=element, material=material) + material.Name = "Foo" + facet = ids.material.create(value="Foo") + run("", facet=facet, inst=element, expected=True) + run("", facet=facet, inst=element_type, expected=False) + + def test_creating_a_partof_facet(self): + facet = ids.partOf.create() + assert facet.asdict() == {"@entity": "IfcSystem"} + facet = ids.partOf.create(entity="IfcGroup") + assert facet.asdict() == {"@entity": "IfcGroup"} + + def test_filtering_using_a_partof_facet(self): + ifc = ifcopenshell.file() + + # An IfcElementAssembly entity only passes those who are part of an assembly + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcElementAssembly") + subelement = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcWall") + ifcopenshell.api.run("aggregate.assign_object", ifc, product=subelement, relating_object=element) + facet = ids.partOf.create(entity="IfcElementAssembly") + run("", facet=facet, inst=element, expected=False) + run("", facet=facet, inst=subelement, expected=True) + + # An IfcElementAssembly strictly checks that the whole is an IfcElementAssembly class + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcSlab") + subelement = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcBeam") + ifcopenshell.api.run("aggregate.assign_object", ifc, product=subelement, relating_object=element) + facet = ids.partOf.create(entity="IfcElementAssembly") + run("", facet=facet, inst=subelement, expected=False) + + # A nested subelement still passes so long as one of its parents is an IfcElementAssembly + # TODO nononono + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcElementAssembly") + subelement = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcSlab") + subsubelement = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcBeam") + ifcopenshell.api.run("aggregate.assign_object", ifc, product=subelement, relating_object=element) + ifcopenshell.api.run("aggregate.assign_object", ifc, product=subsubelement, relating_object=subelement) + facet = ids.partOf.create(entity="IfcElementAssembly") + run("", facet=facet, inst=subsubelement, expected=True) + + # An IfcGroup only checks that a group is assigned without any other logic + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcElementAssembly") + group = ifcopenshell.api.run("group.add_group", ifc) + facet = ids.partOf.create(entity="IfcGroup") + run("", facet=facet, inst=element, expected=False) + ifcopenshell.api.run("group.assign_group", ifc, product=element, group=group) + run("", facet=facet, inst=element, expected=True) + + # An IfcGroup can be passed by subtypes + # TODO: wrong, subtypes should not be matched + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcElementAssembly") + group = ifc.createIfcInventory() + facet = ids.partOf.create(entity="IfcGroup") + ifcopenshell.api.run("group.assign_group", ifc, product=element, group=group) + run("", facet=facet, inst=element, expected=True) + + # An IfcSystem only checks that a system is assigned without any other logic + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcElementAssembly") + system = ifcopenshell.api.run("system.add_system", ifc) + facet = ids.partOf.create(entity="IfcSystem") + run("", facet=facet, inst=element, expected=False) + ifcopenshell.api.run("system.assign_system", ifc, product=element, system=system) + run("", facet=facet, inst=element, expected=True) + + # An IfcSystem allows subtypes + # TODO: wrong, subtypes should not be matched + element = ifcopenshell.api.run("root.create_entity", ifc, ifc_class="IfcElementAssembly") + system = ifcopenshell.api.run("system.add_system", ifc, ifc_class="IfcDistributionSystem") + ifcopenshell.api.run("system.assign_system", ifc, product=element, system=system) + facet = ids.partOf.create(entity="IfcSystem") + run("", facet=facet, inst=element, expected=True) """ Creating IDS with restrictions """ @@ -189,8 +1144,8 @@ class TestIdsAuthoring(unittest.TestCase): i = ids.ids(title="My IDS") i.specifications.append(ids.specification(name="Test_Specification")) i.specifications[0].add_applicability(ids.entity.create(name="Test_Name")) - r = ids.restriction.create(options=["testA", "testB"], type="enumeration", base="string") - m = ids.material.create(location="any", value=r) + r = ids.restriction.create(options=["testA", "testB"], type="enumeration") + m = ids.material.create(value=r) i.specifications[0].add_requirement(m) self.assertEqual(i.specifications[0].requirements.terms[0].value, "testA") self.assertEqual(i.specifications[0].requirements.terms[0].value, "testB") @@ -201,7 +1156,7 @@ class TestIdsAuthoring(unittest.TestCase): i.specifications.append(ids.specification(name="Test_Specification")) i.specifications[0].add_applicability(ids.entity.create(name="Test_Name")) r = ids.restriction.create(options={"minInclusive": 0, "maxExclusive": 10}, type="bounds", base="integer") - p = ids.property.create(location="any", propertySet="Test", name="Test", value=r) + p = ids.property.create(propertySet="Test", name="Test", value=r) i.specifications[0].add_requirement(p) self.assertEqual(i.specifications[0].requirements.terms[0].value, 0) self.assertEqual(i.specifications[0].requirements.terms[0].value, 5) @@ -212,8 +1167,8 @@ class TestIdsAuthoring(unittest.TestCase): i = ids.ids(title="My IDS") i.specifications.append(ids.specification(name="Test_Specification")) i.specifications[0].add_applicability(ids.entity.create(name="Test_Name")) - r = ids.restriction.create(options="[A-Z]{2,4}", type="pattern", base="string") - p = ids.property.create(location="any", propertySet="Test", name="Test", value=r) + r = ids.restriction.create(options="[A-Z]{2,4}", type="pattern") + p = ids.property.create(propertySet="Test", name="Test", value=r) i.specifications[0].add_requirement(p) self.assertEqual(i.specifications[0].requirements.terms[0].value, "XYZ") self.assertNotEqual(i.specifications[0].requirements.terms[0].value, "abc") @@ -224,8 +1179,8 @@ class TestIdsAuthoring(unittest.TestCase): i = ids.ids(title="My IDS") i.specifications.append(ids.specification(name="Test_Specification")) i.specifications[0].add_applicability(ids.entity.create(name="Test_Name")) - r = ids.restriction.create(options="(Wanddurchbruch|Deckendurchbruch).*", type="pattern", base="string") - p = ids.property.create(location="any", propertySet="Test", name="Test", value=r) + r = ids.restriction.create(options="(Wanddurchbruch|Deckendurchbruch).*", type="pattern") + p = ids.property.create(propertySet="Test", name="Test", value=r) i.specifications[0].add_requirement(p) self.assertEqual(i.specifications[0].requirements.terms[0].value, "Wanddurchbruch") self.assertEqual(i.specifications[0].requirements.terms[0].value, "Deckendurchbruch") @@ -235,63 +1190,84 @@ class TestIdsAuthoring(unittest.TestCase): i = ids.ids(title="My IDS") i.specifications.append(ids.specification(name="Test_Specification")) i.specifications[0].add_applicability(ids.entity.create(name="Test_Name")) - r = ids.restriction.create(options="èêóòâôæøåążźćęóʑʒʓʔʕʗʘʙʚʛʜʝʞ", type="pattern", base="string") - p = ids.property.create(location="any", propertySet="Test", name="Test", value=r) + r = ids.restriction.create(options="èêóòâôæøåążźćęóʑʒʓʔʕʗʘʙʚʛʜʝʞ", type="pattern") + p = ids.property.create(propertySet="Test", name="Test", value=r) i.specifications[0].add_requirement(p) self.assertEqual(i.specifications[0].requirements.terms[0].value, "èêóòâôæøåążźćęóʑʒʓʔʕʗʘʙʚʛʜʝʞ") - """ Saving created IDS to IDS.xml """ - def test_created_ids_to_xml(self): i = ids.ids(title="My IDS") i.specifications.append(ids.specification(name="Test_Specification")) e = ids.entity.create(name="Test_Name", predefinedType="Test_PredefinedType") - c = ids.classification.create(location="any", value="Test_Value", system="Test_System") - m = ids.material.create(location="any", value="Test_Value") - re = ids.restriction.create(options=["testA", "testB"], type="enumeration", base="string") + c = ids.classification.create(value="Test_Value", system="Test_System") + m = ids.material.create(value="Test_Value") + re = ids.restriction.create(options=["testA", "testB"], type="enumeration") rb = ids.restriction.create(options={"minInclusive": 0, "maxExclusive": 10}, type="bounds", base="integer") - rp1 = ids.restriction.create(options="[A-Z]{2,4}", type="pattern", base="string") - rp2 = ids.restriction.create(options="èêóòâôæøåążźćęóʑʒʓʔʕʗʘʙʚʛʜʝʞ", type="pattern", base="string") - p1 = ids.property.create(location="any", propertySet="Test_PropertySet", name="Test_Parameter", value=re) - p2 = ids.property.create(location="any", propertySet="Test_PropertySet", name="Test_Parameter", value=rb) - p3 = ids.property.create(location="any", propertySet="Test_PropertySet", name="Test_Parameter", value=rp1) - p4 = ids.property.create(location="any", propertySet="Test_PropertySet", name="Test_Parameter", value=rp2) - p5 = ids.property.create( - location="any", propertySet="Test_PropertySet", name="Test_Parameter", value=[re, rb, rp1] - ) + rp1 = ids.restriction.create(options="[A-Z]{2,4}", type="pattern") + rp2 = ids.restriction.create(options="èêóòâôæøåążźćęóʑʒʓʔʕʗʘʙʚʛʜʝʞ", type="pattern") + p1 = ids.property.create(propertySet="Test_PropertySet", name="Test_Parameter", value=re) + p2 = ids.property.create(propertySet="Test_PropertySet", name="Test_Parameter", value=rb) + p3 = ids.property.create(propertySet="Test_PropertySet", name="Test_Parameter", value=rp1) + p4 = ids.property.create(propertySet="Test_PropertySet", name="Test_Parameter", value=rp2) + p5 = ids.property.create(propertySet="Test_PropertySet", name="Test_Parameter", value=[re, rb, rp1]) i.specifications[0].add_applicability(e) i.specifications[0].add_applicability(m) i.specifications[0].add_requirement(c) i.specifications[0].add_requirement(p1) - #TODO i.specifications[0].add_requirement(p2) + i.specifications[0].add_requirement(p2) i.specifications[0].add_requirement(p3) i.specifications[0].add_requirement(p4) - #TODO i.specifications[0].add_requirement(p5) + i.specifications[0].add_requirement(p5) fn = "TEST_FILE.xml" result = i.to_xml(fn) os.remove(fn) self.assertTrue(result) - - """ IDS information """ - - def test_create_full_information(self): - i = ids.ids( - title="Test IDS", - description="test", - author="test@test.com", - copyright="test", - version=1.23, - date="2021-01-01", - purpose="test", - milestone="test", - ) - self.assertEqual(i.info["version"], 1.23) class TestIfcValidation(unittest.TestCase): + def test_creating_a_minimal_ids_and_validating(self): + specs = ids.ids(title="Title") + spec = ids.specification(name="Name") + spec.add_applicability(ids.entity.create(name="IFCWALL")) + spec.add_requirement(ids.attribute.create(name="Name", value="Waldo")) + specs.specifications.append(spec) + assert "http://standards.buildingsmart.org/IDS" in specs.to_string() + assert spec.status == None + + model = ifcopenshell.file() + wall = model.createIfcWall() + waldo = model.createIfcWall(Name="Waldo") + specs.validate2(model) + + assert spec.status == False + assert set(spec.applicable_entities) == {wall, waldo} + assert spec.failed_entities == [wall] + + def test_creating_multiple_specifications(self): + specs = ids.ids(title="Title") + spec = ids.specification(name="Name") + spec.add_applicability(ids.entity.create(name="IFCWALL")) + spec.add_requirement(ids.attribute.create(name="Name", value="Waldo")) + specs.specifications.append(spec) + + spec2 = ids.specification(name="Name") + spec2.add_applicability(ids.entity.create(name="IFCWALL")) + spec2.add_requirement(ids.attribute.create(name="Name", value="Waldo")) + specs.specifications.append(spec2) + + model = ifcopenshell.file() + wall = model.createIfcWall() + waldo = model.createIfcWall(Name="Waldo") + specs.validate2(model) + + assert spec.status == False + assert set(spec.applicable_entities) == {wall, waldo} + assert spec.failed_entities == [wall] + assert spec2.failed_entities == [wall] def test_validate_simple(self): - #Same test as in reporting... + return # TODO + # Same test as in reporting... ids_file = ids.ids.open(IDS_URL) report = ids.SimpleHandler() logger.addHandler(report) @@ -300,16 +1276,16 @@ class TestIfcValidation(unittest.TestCase): logger.handlers.pop() def test_validate_all_facets(self): - #Those are true: + # Those are true: e = ids.entity.create(name="IfcWall") - p1 = ids.property.create(location="any", propertySet="MySet", name="Param1", value="banan") - p2 = ids.property.create(location="any", propertySet="MySet", name="Param2", value=120.0) - p3 = ids.property.create(location="any", propertySet="Pset_WallCommon", name="LoadBearing", value=False) - #Those are false: - p4 = ids.property.create(location="any", propertySet="MySet", name="Param1", value="orange") - p5 = ids.property.create(location="any", propertySet="MySet", name="Param2", value=123.4) - p6 = ids.property.create(location="any", propertySet="Pset_WallCommon", name="LoadBearing", value=True) - + p1 = ids.property.create(propertySet="MySet", name="Param1", value="banan") + p2 = ids.property.create(propertySet="MySet", name="Param2", value=120.0) + p3 = ids.property.create(propertySet="Pset_WallCommon", name="LoadBearing", value=False) + # Those are false: + p4 = ids.property.create(propertySet="MySet", name="Param1", value="orange") + p5 = ids.property.create(propertySet="MySet", name="Param2", value=123.4) + p6 = ids.property.create(propertySet="Pset_WallCommon", name="LoadBearing", value=True) + i = ids.ids(title="My IDS") i.specifications.append(ids.specification(name="Test_Specification")) i.specifications[0].add_applicability(e) @@ -327,42 +1303,64 @@ class TestIfcValidation(unittest.TestCase): # TODO self.assertEqual(len(report.statements), 27) #there are 5 walls in the IFC, one passed 3 criteria, est should fail (27 failures) logger.handlers.pop() - """ Validating IDS files with restrictions """ def test_validate_restrictions_enumeration(self): - IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property_with_restriction_enumeration.xml") + return # TODO + IDS_URL = os.path.join( + os.path.dirname(__file__), + "Sample-BIM-Files/IDS/", + "IDS_Wall_needs_property_with_restriction_enumeration.xml", + ) ids_file = ids.ids.open(IDS_URL) - self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["name"]['simpleValue'], "Test_Parameter") - self.assertEqual( [x['@value'] for x in ids_file.specifications[0].requirements.terms[0].node["value"]['restriction'][0]['enumeration'] ], ['testA', 'testB']) + self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["name"]["simpleValue"], "Test_Parameter") + self.assertEqual( + [ + x["@value"] + for x in ids_file.specifications[0].requirements.terms[0].node["value"]["restriction"][0]["enumeration"] + ], + ["testA", "testB"], + ) # TODO actual test of validation result # self.assertTrue( ) def test_validate_restrictions_boundsInclusive(self): - IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property_with_restriction_bounds.xml") + return # TODO + IDS_URL = os.path.join( + os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property_with_restriction_bounds.xml" + ) ids_file = ids.ids.open(IDS_URL) - self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["name"]['simpleValue'], "Test_Parameter") - self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["value"]['restriction'][0]['minInclusive']['@value'], '0') + self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["name"]["simpleValue"], "Test_Parameter") + self.assertEqual( + ids_file.specifications[0].requirements.terms[0].node["value"]["restriction"][0]["minInclusive"]["@value"], + "0", + ) # TODO actual test of validation result # self.assertTrue( ) def test_validate_restrictions_boundsExclusive(self): - #TODO + # TODO pass def test_validate_restrictions_pattern_simple(self): - IDS_URL = os.path.join(os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property_with_restriction_pattern.xml") + return # TODO + IDS_URL = os.path.join( + os.path.dirname(__file__), "Sample-BIM-Files/IDS/", "IDS_Wall_needs_property_with_restriction_pattern.xml" + ) ids_file = ids.ids.open(IDS_URL) - self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["name"]['simpleValue'], "Test_Parameter") - self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["value"]['restriction'][0]['pattern']['@value'], '[A-Z]{2,4}') + self.assertEqual(ids_file.specifications[0].requirements.terms[0].node["name"]["simpleValue"], "Test_Parameter") + self.assertEqual( + ids_file.specifications[0].requirements.terms[0].node["value"]["restriction"][0]["pattern"]["@value"], + "[A-Z]{2,4}", + ) # TODO actual test of validation result # self.assertTrue( ) class TestIdsReporting(unittest.TestCase): - def test_simple_report(self): - #Same test as in validation... + return # TODO + # Same test as in validation... ids_file = ids.ids.open(IDS_URL) report = ids.SimpleHandler() logger.addHandler(report) @@ -370,8 +1368,8 @@ class TestIdsReporting(unittest.TestCase): self.assertEqual(len(report.statements), 5) logger.handlers.pop() - def test_bcf_report(self): + return # TODO ids_file = ids.ids.open(IDS_URL) fn = os.path.join(tempfile.gettempdir(), "test.bcf") bcf_handler = ids.BcfHandler(project_name="Default IDS Project", author="your@email.com", filepath=fn) @@ -381,7 +1379,3 @@ class TestIdsReporting(unittest.TestCase): topics = my_bcfxml.get_topics() self.assertEqual(len(topics), 5) logger.handlers.pop() - - -if __name__ == "__main__": - unittest.main() diff --git a/src/ifcopenshell-python/test/util/test_classification.py b/src/ifcopenshell-python/test/util/test_classification.py new file mode 100644 index 0000000000..7b838544e3 --- /dev/null +++ b/src/ifcopenshell-python/test/util/test_classification.py @@ -0,0 +1,131 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 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 pytest +import test.bootstrap +import ifcopenshell.api +import ifcopenshell.util.classification as subject + + +class TestGetReferences(test.bootstrap.IFC4): + def test_get_references_of_an_element(self): + library = ifcopenshell.file() + classification = library.createIfcClassification(Name="Name") + reference1 = library.createIfcClassificationReference(Identification="1", ReferencedSource=classification) + reference2 = library.createIfcClassificationReference(Identification="2", ReferencedSource=classification) + project = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcProject") + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") + ifcopenshell.api.run("classification.add_classification", self.file, classification=classification) + ifcopenshell.api.run( + "classification.add_reference", + self.file, + product=element, + reference=reference1, + classification=classification, + ) + ifcopenshell.api.run( + "classification.add_reference", + self.file, + product=element, + reference=reference2, + classification=classification, + ) + assert subject.get_references(element) == set(self.file.by_type("IfcClassificationReference")) + + def test_get_inherited_classifications(self): + library = ifcopenshell.file() + classification = library.createIfcClassification(Name="Name") + reference1 = library.createIfcClassificationReference(Identification="1", ReferencedSource=classification) + reference2 = library.createIfcClassificationReference(Identification="2", ReferencedSource=classification) + project = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcProject") + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") + element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", self.file, related_object=element, relating_type=element_type) + ifcopenshell.api.run("classification.add_classification", self.file, classification=classification) + ifcopenshell.api.run( + "classification.add_reference", + self.file, + product=element, + reference=reference1, + classification=classification, + ) + ifcopenshell.api.run( + "classification.add_reference", + self.file, + product=element_type, + reference=reference2, + classification=classification, + ) + reference1 = [r for r in self.file.by_type("IfcClassificationReference") if r.Identification == "1"][0] + reference2 = [r for r in self.file.by_type("IfcClassificationReference") if r.Identification == "2"][0] + assert subject.get_references(element_type) == set([reference2]) + assert subject.get_references(element) == set([reference1]) + + def test_getting_direct_classifications(self): + library = ifcopenshell.file() + classification = library.createIfcClassification(Name="Name") + reference1 = library.createIfcClassificationReference(Identification="1", ReferencedSource=classification) + reference2 = library.createIfcClassificationReference(Identification="2", ReferencedSource=classification) + project = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcProject") + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") + element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", self.file, related_object=element, relating_type=element_type) + ifcopenshell.api.run("classification.add_classification", self.file, classification=classification) + ifcopenshell.api.run( + "classification.add_reference", + self.file, + product=element, + reference=reference1, + classification=classification, + ) + ifcopenshell.api.run( + "classification.add_reference", + self.file, + product=element_type, + reference=reference2, + classification=classification, + ) + results = list(subject.get_references(element, should_inherit=False)) + assert len(results) == 1 + assert results[0].Identification == "1" + + +class TestGetClassification(test.bootstrap.IFC4): + def test_get_lightweight_classification(self): + classification = self.file.createIfcClassification(Name="Name") + reference = self.file.createIfcClassificationReference(ReferencedSource=classification) + assert subject.get_classification(reference) == classification + + def test_get_full_classification(self): + classification = self.file.createIfcClassification(Name="Name") + reference1 = self.file.createIfcClassificationReference(ReferencedSource=classification) + reference2 = self.file.createIfcClassificationReference(ReferencedSource=reference1) + assert subject.get_classification(reference2) == classification + + +class TestGetInheritedReferences(test.bootstrap.IFC4): + def test_single_reference(self): + classification = self.file.createIfcClassification(Name="Name") + reference = self.file.createIfcClassificationReference(ReferencedSource=classification) + assert subject.get_inherited_references(reference) == [reference] + + def test_multiple_references(self): + classification = self.file.createIfcClassification(Name="Name") + reference1 = self.file.createIfcClassificationReference(ReferencedSource=classification) + reference2 = self.file.createIfcClassificationReference(ReferencedSource=reference1) + assert subject.get_inherited_references(reference2) == [reference2, reference1] diff --git a/src/ifcopenshell-python/test/util/test_element.py b/src/ifcopenshell-python/test/util/test_element.py index 8a14e6993f..afae619e04 100644 --- a/src/ifcopenshell-python/test/util/test_element.py +++ b/src/ifcopenshell-python/test/util/test_element.py @@ -37,6 +37,20 @@ class TestGetPsetsIFC4(test.bootstrap.IFC4): ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"x": "y"}) assert subject.get_psets(type_element) == {"name": {"x": "y", "id": pset.id()}} + def test_getting_inherited_psets(self): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") + type_element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", self.file, related_object=element, relating_type=type_element) + pset = ifcopenshell.api.run("pset.add_pset", self.file, product=type_element, name="name") + ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"a": 1, "x": 1}) + pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="name") + ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"a": 2, "b": 3}) + psets = subject.get_psets(element) + assert psets["name"]["id"] == pset.id() + assert psets["name"]["a"] == 2 + assert psets["name"]["x"] == 1 + assert psets["name"]["b"] == 3 + def test_getting_the_psets_of_a_material_as_a_dictionary(self): material = self.file.createIfcMaterial() assert subject.get_psets(material) == {} @@ -148,6 +162,11 @@ class TestGetPredefinedTypeIFC4(test.bootstrap.IFC4): element.ObjectType = "FOOBAR" assert subject.get_predefined_type(element) == "FOOBAR" + def test_getting_an_element_type_without_a_predefined_type_attribute(self): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcAnnotation") + element.ObjectType = "FOOBAR" + assert subject.get_predefined_type(element) == "FOOBAR" + def test_getting_an_inherited_predefined_type(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") @@ -155,7 +174,7 @@ class TestGetPredefinedTypeIFC4(test.bootstrap.IFC4): element_type.PredefinedType = "PARTITIONING" assert subject.get_predefined_type(element) == "PARTITIONING" - def test_getting_an_inherited_userdefined_type(self): + def test_getting_an_inherited_userdefined_type_for_an_element_type(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") ifcopenshell.api.run("type.assign_type", self.file, related_object=element, relating_type=element_type) @@ -171,6 +190,14 @@ class TestGetPredefinedTypeIFC4(test.bootstrap.IFC4): element.PredefinedType = "PARTITIONING" assert subject.get_predefined_type(element) == "PARTITIONING" + def test_getting_an_inherited_userdefined_type_for_a_process_type(self): + element = ifcopenshell.api.run("sequence.add_task", self.file) + element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcTaskType") + ifcopenshell.api.run("type.assign_type", self.file, related_object=element, relating_type=element_type) + element_type.PredefinedType = "USERDEFINED" + element_type.ProcessType = "FOOBAR" + assert subject.get_predefined_type(element) == "FOOBAR" + class TestGetTypeIFC4(test.bootstrap.IFC4): def test_getting_the_type_of_a_product(self): @@ -267,13 +294,31 @@ class TestGetMaterial(test.bootstrap.IFC4): ifcopenshell.api.run("material.assign_material", self.file, product=element_type, material=material) assert subject.get_material(element) == material + def test_getting_an_overridden_material_from_the_elements_occurrence(self): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") + element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", self.file, related_object=element, relating_type=element_type) + material = ifcopenshell.api.run("material.add_material", self.file) + ifcopenshell.api.run("material.assign_material", self.file, product=element_type, material=material) + material = ifcopenshell.api.run("material.add_material", self.file) + ifcopenshell.api.run("material.assign_material", self.file, product=element, material=material) + assert subject.get_material(element) == material + + def test_getting_direct_materials_without_checking_inheritance(self): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") + element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") + ifcopenshell.api.run("type.assign_type", self.file, related_object=element, relating_type=element_type) + material = ifcopenshell.api.run("material.add_material", self.file) + ifcopenshell.api.run("material.assign_material", self.file, product=element_type, material=material) + assert subject.get_material(element, should_inherit=False) is None + class TestGetElementsByMaterial(test.bootstrap.IFC4): def test_getting_elements_of_a_material(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") material = ifcopenshell.api.run("material.add_material", self.file) ifcopenshell.api.run("material.assign_material", self.file, product=element, material=material) - assert subject.get_elements_by_material(self.file, material) == [element] + assert subject.get_elements_by_material(self.file, material) == {element} def test_getting_elements_of_a_material_layer_set(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") @@ -285,9 +330,9 @@ class TestGetElementsByMaterial(test.bootstrap.IFC4): ifcopenshell.api.run("material.assign_material", self.file, product=element_type, material=material_set) ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialLayerSetUsage") usage = self.file.by_type("IfcMaterialLayerSetUsage")[0] - assert set(subject.get_elements_by_material(self.file, material)) == {element, element_type} - assert set(subject.get_elements_by_material(self.file, material_set)) == {element, element_type} - assert set(subject.get_elements_by_material(self.file, usage)) == {element} + assert subject.get_elements_by_material(self.file, material) == {element, element_type} + assert subject.get_elements_by_material(self.file, material_set) == {element, element_type} + assert subject.get_elements_by_material(self.file, usage) == {element} def test_getting_elements_of_a_material_profile_set(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") @@ -299,18 +344,20 @@ class TestGetElementsByMaterial(test.bootstrap.IFC4): ifcopenshell.api.run("material.assign_material", self.file, product=element_type, material=material_set) ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialProfileSetUsage") usage = self.file.by_type("IfcMaterialProfileSetUsage")[0] - assert set(subject.get_elements_by_material(self.file, material)) == {element, element_type} - assert set(subject.get_elements_by_material(self.file, material_set)) == {element, element_type} - assert set(subject.get_elements_by_material(self.file, usage)) == {element} + assert subject.get_elements_by_material(self.file, material) == {element, element_type} + assert subject.get_elements_by_material(self.file, material_set) == {element, element_type} + assert subject.get_elements_by_material(self.file, usage) == {element} def test_getting_elements_of_a_material_constituent_set(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") material = ifcopenshell.api.run("material.add_material", self.file) - material_set = ifcopenshell.api.run("material.add_material_set", self.file, set_type="IfcMaterialConstituentSet") + material_set = ifcopenshell.api.run( + "material.add_material_set", self.file, set_type="IfcMaterialConstituentSet" + ) ifcopenshell.api.run("material.add_constituent", self.file, constituent_set=material_set, material=material) ifcopenshell.api.run("material.assign_material", self.file, product=element, material=material_set) - assert set(subject.get_elements_by_material(self.file, material)) == {element} - assert set(subject.get_elements_by_material(self.file, material_set)) == {element} + assert subject.get_elements_by_material(self.file, material) == {element} + assert subject.get_elements_by_material(self.file, material_set) == {element} def test_getting_elements_of_a_material_list(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") @@ -318,8 +365,97 @@ class TestGetElementsByMaterial(test.bootstrap.IFC4): material_set = ifcopenshell.api.run("material.add_material_set", self.file, set_type="IfcMaterialList") ifcopenshell.api.run("material.add_list_item", self.file, material_list=material_set, material=material) ifcopenshell.api.run("material.assign_material", self.file, product=element, material=material_set) - assert set(subject.get_elements_by_material(self.file, material)) == {element} - assert set(subject.get_elements_by_material(self.file, material_set)) == {element} + assert subject.get_elements_by_material(self.file, material) == {element} + assert subject.get_elements_by_material(self.file, material_set) == {element} + + +class TestGetElementsByStyle(test.bootstrap.IFC4): + def test_getting_elements_of_a_styled_representation_item(self): + element = self.file.createIfcWall() + style = self.file.createIfcSurfaceStyle() + item = self.file.createIfcExtrudedAreaSolid() + self.file.createIfcStyledItem(Item=item, Styles=[style]) + element.Representation = self.file.createIfcProductDefinitionShape( + Representations=[self.file.createIfcShapeRepresentation(Items=[item])] + ) + assert subject.get_elements_by_style(self.file, style) == {element} + + def test_getting_elements_of_a_styled_mapped_representation_item(self): + element = self.file.createIfcWall() + style = self.file.createIfcSurfaceStyle() + item = self.file.createIfcExtrudedAreaSolid() + self.file.createIfcStyledItem(Item=item, Styles=[style]) + element.Representation = self.file.createIfcProductDefinitionShape( + Representations=[ + self.file.createIfcShapeRepresentation( + Items=[ + self.file.createIfcMappedItem( + MappingSource=self.file.createIfcRepresentationMap( + MappedRepresentation=self.file.createIfcShapeRepresentation(Items=[item]) + ) + ) + ] + ) + ] + ) + assert subject.get_elements_by_style(self.file, style) == {element} + + def test_getting_type_elements_of_a_styled_mapped_representation_item(self): + element = self.file.createIfcWallType() + style = self.file.createIfcSurfaceStyle() + item = self.file.createIfcExtrudedAreaSolid() + self.file.createIfcStyledItem(Item=item, Styles=[style]) + element.RepresentationMaps = [ + self.file.createIfcRepresentationMap( + MappedRepresentation=self.file.createIfcShapeRepresentation(Items=[item]) + ) + ] + assert subject.get_elements_by_style(self.file, style) == {element} + + def test_getting_elements_of_a_styled_material(self): + element = self.file.createIfcWall() + material = ifcopenshell.api.run("material.add_material", self.file) + ifcopenshell.api.run("material.assign_material", self.file, product=element, material=material) + style = self.file.createIfcSurfaceStyle() + self.file.createIfcMaterialDefinitionRepresentation( + RepresentedMaterial=material, + Representations=[ + self.file.createIfcStyledRepresentation(Items=[self.file.createIfcStyledItem(Styles=[style])]) + ], + ) + assert subject.get_elements_by_style(self.file, style) == {element} + + +class TestGetElementsByRepresentation(test.bootstrap.IFC4): + def test_getting_elements_of_a_styled_representation_item(self): + element = self.file.createIfcWall() + representation = self.file.createIfcShapeRepresentation() + element.Representation = self.file.createIfcProductDefinitionShape(Representations=[representation]) + assert subject.get_elements_by_representation(self.file, representation) == {element} + + def test_getting_elements_of_a_styled_mapped_representation_item(self): + element = self.file.createIfcWall() + representation = self.file.createIfcShapeRepresentation() + element.Representation = self.file.createIfcProductDefinitionShape( + Representations=[ + self.file.createIfcShapeRepresentation( + Items=[ + self.file.createIfcMappedItem( + MappingSource=self.file.createIfcRepresentationMap( + MappedRepresentation=representation + ) + ) + ] + ) + ] + ) + assert subject.get_elements_by_representation(self.file, representation) == {element} + + def test_getting_type_elements_of_a_styled_mapped_representation_item(self): + element = self.file.createIfcWallType() + representation = self.file.createIfcShapeRepresentation() + element.RepresentationMaps = [self.file.createIfcRepresentationMap(MappedRepresentation=representation)] + assert subject.get_elements_by_representation(self.file, representation) == {element} class TestGetlayers(test.bootstrap.IFC4): @@ -358,7 +494,7 @@ class TestGetlayers(test.bootstrap.IFC4): assert subject.get_layers(self.file, element) == [layer] -class TestGetlayers(test.bootstrap.IFC2X3): +class TestGetlayersIFC2X3(test.bootstrap.IFC2X3): def test_getting_the_layer_of_a_product_item(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") layer = ifcopenshell.api.run("layer.add_layer", self.file) diff --git a/src/ifcopenshell-python/test/util/test_selector.py b/src/ifcopenshell-python/test/util/test_selector.py index 3c138098cc..37a744e6e4 100644 --- a/src/ifcopenshell-python/test/util/test_selector.py +++ b/src/ifcopenshell-python/test/util/test_selector.py @@ -33,6 +33,13 @@ class TestSelector(test.bootstrap.IFC4): ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcSlab") assert subject.Selector.parse(self.file, f"#{element.GlobalId}") == [element] + def test_selecting_by_attribute_existence(self): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") + element.Name = "Foobar" + ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcSlab") + assert subject.Selector.parse(self.file, '.IfcElement[Name]') == [element] + assert subject.Selector.parse(self.file, '.IfcElement[Description]') == [] + def test_selecting_by_attribute(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") element.Name = "Foobar" @@ -40,6 +47,13 @@ class TestSelector(test.bootstrap.IFC4): assert subject.Selector.parse(self.file, '.IfcElement[Name="Foobar"]') == [element] assert subject.Selector.parse(self.file, '.IfcElement[Name="Foobaz"]') == [] + def test_selecting_by_property_existence(self): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") + pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="Foo_Bar") + ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"Foo": "Bar"}) + assert subject.Selector.parse(self.file, '.IfcElement[Foo_Bar.Foo]') == [element] + assert subject.Selector.parse(self.file, '.IfcElement[Foo_Bar.Fox]') == [] + def test_selecting_by_string_property(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="Foo_Bar") diff --git a/src/ifcparse/ArgumentType.h b/src/ifcparse/ArgumentType.h index 91c89f05c4..48d9063c9f 100644 --- a/src/ifcparse/ArgumentType.h +++ b/src/ifcparse/ArgumentType.h @@ -19,6 +19,8 @@ #include "../ifcparse/IfcSchema.h" +#include "ifc_parse_api.h" + #ifndef ARGUMENTTYPE_H #define ARGUMENTTYPE_H @@ -51,8 +53,8 @@ namespace IfcUtil { Argument_UNKNOWN }; - ArgumentType from_parameter_type(const IfcParse::parameter_type*); - ArgumentType make_aggregate(ArgumentType elem_type); + IFC_PARSE_API ArgumentType from_parameter_type(const IfcParse::parameter_type*); + IFC_PARSE_API ArgumentType make_aggregate(ArgumentType elem_type); } #endif diff --git a/src/ifcparse/Ifc2x3-schema.cpp b/src/ifcparse/Ifc2x3-schema.cpp index 09168c89db..06ad4c3a2a 100644 --- a/src/ifcparse/Ifc2x3-schema.cpp +++ b/src/ifcparse/Ifc2x3-schema.cpp @@ -12533,9 +12533,16 @@ IfcParse::schema_definition* IFC2X3_populate_schema() { #pragma optimize("", on) #endif -const schema_definition& Ifc2x3::get_schema() { +static std::unique_ptr schema; - static const schema_definition* s = IFC2X3_populate_schema(); - return *s; +void Ifc2x3::clear_schema() { + schema.reset(); +} + +const schema_definition& Ifc2x3::get_schema() { + if (!schema) { + schema.reset(IFC2X3_populate_schema()); + } + return *schema; } diff --git a/src/ifcparse/Ifc2x3.cpp b/src/ifcparse/Ifc2x3.cpp index c0e35dc2de..249c055202 100644 --- a/src/ifcparse/Ifc2x3.cpp +++ b/src/ifcparse/Ifc2x3.cpp @@ -9015,9 +9015,9 @@ Ifc2x3::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v ::Ifc2x3::IfcRoleEnum::Value Ifc2x3::IfcActorRole::Role() const { return ::Ifc2x3::IfcRoleEnum::FromString(*data_->getArgument(0)); } void Ifc2x3::IfcActorRole::setRole(::Ifc2x3::IfcRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcRoleEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcActorRole::UserDefinedRole() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcActorRole::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc2x3::IfcActorRole::declaration() const { return *IFC2X3_IfcActorRole_type; } @@ -9037,11 +9037,11 @@ Ifc2x3::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc2x3::IfcO // Function implementations for IfcAddress boost::optional< ::Ifc2x3::IfcAddressTypeEnum::Value > Ifc2x3::IfcAddress::Purpose() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } return ::Ifc2x3::IfcAddressTypeEnum::FromString(*data_->getArgument(0)); } -void Ifc2x3::IfcAddress::setPurpose(boost::optional< ::Ifc2x3::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcAddressTypeEnum::ToString(*v)));data_->setArgument(0,attr);} } +void Ifc2x3::IfcAddress::setPurpose(boost::optional< ::Ifc2x3::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcAddressTypeEnum::ToString(*v)));}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcAddress::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcAddress::UserDefinedPurpose() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc2x3::IfcPerson::list::ptr Ifc2x3::IfcAddress::OfPerson() const { return data_->getInverse(IFC2X3_IfcPerson_type, 7)->as(); } ::Ifc2x3::IfcOrganization::list::ptr Ifc2x3::IfcAddress::OfOrganization() const { return data_->getInverse(IFC2X3_IfcOrganization_type, 4)->as(); } @@ -9120,7 +9120,7 @@ Ifc2x3::IfcAnnotationCurveOccurrence::IfcAnnotationCurveOccurrence(::Ifc2x3::Ifc ::Ifc2x3::IfcCurve* Ifc2x3::IfcAnnotationFillArea::OuterBoundary() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc2x3::IfcCurve>(true); } void Ifc2x3::IfcAnnotationFillArea::setOuterBoundary(::Ifc2x3::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcCurve >::ptr > Ifc2x3::IfcAnnotationFillArea::InnerBoundaries() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc2x3::IfcCurve >(); } -void Ifc2x3::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc2x3::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc2x3::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc2x3::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc2x3::IfcAnnotationFillArea::declaration() const { return *IFC2X3_IfcAnnotationFillArea_type; } @@ -9132,7 +9132,7 @@ Ifc2x3::IfcAnnotationFillArea::IfcAnnotationFillArea(::Ifc2x3::IfcCurve* v1_Oute ::Ifc2x3::IfcPoint* Ifc2x3::IfcAnnotationFillAreaOccurrence::FillStyleTarget() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc2x3::IfcPoint>(true); } void Ifc2x3::IfcAnnotationFillAreaOccurrence::setFillStyleTarget(::Ifc2x3::IfcPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< ::Ifc2x3::IfcGlobalOrLocalEnum::Value > Ifc2x3::IfcAnnotationFillAreaOccurrence::GlobalOrLocal() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc2x3::IfcGlobalOrLocalEnum::FromString(*data_->getArgument(4)); } -void Ifc2x3::IfcAnnotationFillAreaOccurrence::setGlobalOrLocal(boost::optional< ::Ifc2x3::IfcGlobalOrLocalEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcGlobalOrLocalEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc2x3::IfcAnnotationFillAreaOccurrence::setGlobalOrLocal(boost::optional< ::Ifc2x3::IfcGlobalOrLocalEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcGlobalOrLocalEnum::ToString(*v)));}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcAnnotationFillAreaOccurrence::declaration() const { return *IFC2X3_IfcAnnotationFillAreaOccurrence_type; } @@ -9202,9 +9202,9 @@ Ifc2x3::IfcApplication::IfcApplication(::Ifc2x3::IfcOrganization* v1_Application // Function implementations for IfcAppliedValue boost::optional< std::string > Ifc2x3::IfcAppliedValue::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcAppliedValue::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcAppliedValueSelect* Ifc2x3::IfcAppliedValue::AppliedValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc2x3::IfcAppliedValueSelect>(true); } void Ifc2x3::IfcAppliedValue::setAppliedValue(::Ifc2x3::IfcAppliedValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc2x3::IfcMeasureWithUnit* Ifc2x3::IfcAppliedValue::UnitBasis() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc2x3::IfcMeasureWithUnit>(true); } @@ -9231,9 +9231,9 @@ void Ifc2x3::IfcAppliedValueRelationship::setComponents(aggregate_of< ::Ifc2x3:: ::Ifc2x3::IfcArithmeticOperatorEnum::Value Ifc2x3::IfcAppliedValueRelationship::ArithmeticOperator() const { return ::Ifc2x3::IfcArithmeticOperatorEnum::FromString(*data_->getArgument(2)); } void Ifc2x3::IfcAppliedValueRelationship::setArithmeticOperator(::Ifc2x3::IfcArithmeticOperatorEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcArithmeticOperatorEnum::ToString(v)));data_->setArgument(2,attr);} } boost::optional< std::string > Ifc2x3::IfcAppliedValueRelationship::Name() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcAppliedValueRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcAppliedValueRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc2x3::IfcAppliedValueRelationship::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcAppliedValueRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcAppliedValueRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcAppliedValueRelationship::declaration() const { return *IFC2X3_IfcAppliedValueRelationship_type; } @@ -9243,15 +9243,15 @@ Ifc2x3::IfcAppliedValueRelationship::IfcAppliedValueRelationship(::Ifc2x3::IfcAp // Function implementations for IfcApproval boost::optional< std::string > Ifc2x3::IfcApproval::Description() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcApproval::ApprovalDateTime() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } void Ifc2x3::IfcApproval::setApprovalDateTime(::Ifc2x3::IfcDateTimeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcApproval::ApprovalStatus() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcApproval::setApprovalStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcApproval::setApprovalStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc2x3::IfcApproval::ApprovalLevel() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcApproval::setApprovalLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcApproval::setApprovalLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc2x3::IfcApproval::ApprovalQualifier() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcApproval::setApprovalQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcApproval::setApprovalQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } std::string Ifc2x3::IfcApproval::Name() const { std::string v = *data_->getArgument(5); return v; } void Ifc2x3::IfcApproval::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } std::string Ifc2x3::IfcApproval::Identifier() const { std::string v = *data_->getArgument(6); return v; } @@ -9298,7 +9298,7 @@ void Ifc2x3::IfcApprovalRelationship::setRelatedApproval(::Ifc2x3::IfcApproval* ::Ifc2x3::IfcApproval* Ifc2x3::IfcApprovalRelationship::RelatingApproval() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc2x3::IfcApproval>(true); } void Ifc2x3::IfcApprovalRelationship::setRelatingApproval(::Ifc2x3::IfcApproval* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcApprovalRelationship::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcApprovalRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcApprovalRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::string Ifc2x3::IfcApprovalRelationship::Name() const { std::string v = *data_->getArgument(3); return v; } void Ifc2x3::IfcApprovalRelationship::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -9368,11 +9368,11 @@ Ifc2x3::IfcAsset::IfcAsset(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v double Ifc2x3::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { double v = *data_->getArgument(8); return v; } void Ifc2x3::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcAsymmetricIShapeProfileDef::CentreOfGravityInY() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcAsymmetricIShapeProfileDef::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcAsymmetricIShapeProfileDef::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc2x3::IfcAsymmetricIShapeProfileDef::declaration() const { return *IFC2X3_IfcAsymmetricIShapeProfileDef_type; } @@ -9516,7 +9516,7 @@ Ifc2x3::IfcBooleanResult::IfcBooleanResult(::Ifc2x3::IfcBooleanOperator::Value v // Function implementations for IfcBoundaryCondition boost::optional< std::string > Ifc2x3::IfcBoundaryCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc2x3::IfcBoundaryCondition::declaration() const { return *IFC2X3_IfcBoundaryCondition_type; } @@ -9526,17 +9526,17 @@ Ifc2x3::IfcBoundaryCondition::IfcBoundaryCondition(boost::optional< std::string // Function implementations for IfcBoundaryEdgeCondition boost::optional< double > Ifc2x3::IfcBoundaryEdgeCondition::LinearStiffnessByLengthX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcBoundaryEdgeCondition::setLinearStiffnessByLengthX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcBoundaryEdgeCondition::setLinearStiffnessByLengthX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryEdgeCondition::LinearStiffnessByLengthY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcBoundaryEdgeCondition::setLinearStiffnessByLengthY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcBoundaryEdgeCondition::setLinearStiffnessByLengthY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryEdgeCondition::LinearStiffnessByLengthZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcBoundaryEdgeCondition::setLinearStiffnessByLengthZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcBoundaryEdgeCondition::setLinearStiffnessByLengthZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc2x3::IfcBoundaryEdgeCondition::declaration() const { return *IFC2X3_IfcBoundaryEdgeCondition_type; } @@ -9546,11 +9546,11 @@ Ifc2x3::IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(boost::optional< std: // Function implementations for IfcBoundaryFaceCondition boost::optional< double > Ifc2x3::IfcBoundaryFaceCondition::LinearStiffnessByAreaX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcBoundaryFaceCondition::setLinearStiffnessByAreaX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcBoundaryFaceCondition::setLinearStiffnessByAreaX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryFaceCondition::LinearStiffnessByAreaY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcBoundaryFaceCondition::setLinearStiffnessByAreaY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcBoundaryFaceCondition::setLinearStiffnessByAreaY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryFaceCondition::LinearStiffnessByAreaZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcBoundaryFaceCondition::setLinearStiffnessByAreaZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcBoundaryFaceCondition::setLinearStiffnessByAreaZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcBoundaryFaceCondition::declaration() const { return *IFC2X3_IfcBoundaryFaceCondition_type; } @@ -9560,17 +9560,17 @@ Ifc2x3::IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(boost::optional< std: // Function implementations for IfcBoundaryNodeCondition boost::optional< double > Ifc2x3::IfcBoundaryNodeCondition::LinearStiffnessX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcBoundaryNodeCondition::setLinearStiffnessX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcBoundaryNodeCondition::setLinearStiffnessX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryNodeCondition::LinearStiffnessY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcBoundaryNodeCondition::setLinearStiffnessY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcBoundaryNodeCondition::setLinearStiffnessY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryNodeCondition::LinearStiffnessZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcBoundaryNodeCondition::setLinearStiffnessZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcBoundaryNodeCondition::setLinearStiffnessZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryNodeCondition::RotationalStiffnessX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcBoundaryNodeCondition::setRotationalStiffnessX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcBoundaryNodeCondition::setRotationalStiffnessX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryNodeCondition::RotationalStiffnessY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcBoundaryNodeCondition::setRotationalStiffnessY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcBoundaryNodeCondition::setRotationalStiffnessY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcBoundaryNodeCondition::RotationalStiffnessZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcBoundaryNodeCondition::setRotationalStiffnessZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcBoundaryNodeCondition::setRotationalStiffnessZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc2x3::IfcBoundaryNodeCondition::declaration() const { return *IFC2X3_IfcBoundaryNodeCondition_type; } @@ -9580,7 +9580,7 @@ Ifc2x3::IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(boost::optional< std: // Function implementations for IfcBoundaryNodeConditionWarping boost::optional< double > Ifc2x3::IfcBoundaryNodeConditionWarping::WarpingStiffness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcBoundaryNodeConditionWarping::setWarpingStiffness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcBoundaryNodeConditionWarping::setWarpingStiffness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcBoundaryNodeConditionWarping::declaration() const { return *IFC2X3_IfcBoundaryNodeConditionWarping_type; } @@ -9632,9 +9632,9 @@ Ifc2x3::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc2x3::IfcSurface* v1_BaseSurfac // Function implementations for IfcBuilding boost::optional< double > Ifc2x3::IfcBuilding::ElevationOfRefHeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcBuilding::ElevationOfTerrain() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc2x3::IfcPostalAddress* Ifc2x3::IfcBuilding::BuildingAddress() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc2x3::IfcPostalAddress>(true); } void Ifc2x3::IfcBuilding::setBuildingAddress(::Ifc2x3::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } @@ -9670,7 +9670,7 @@ Ifc2x3::IfcBuildingElementPart::IfcBuildingElementPart(std::string v1_GlobalId, // Function implementations for IfcBuildingElementProxy boost::optional< ::Ifc2x3::IfcElementCompositionEnum::Value > Ifc2x3::IfcBuildingElementProxy::CompositionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc2x3::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); } -void Ifc2x3::IfcBuildingElementProxy::setCompositionType(boost::optional< ::Ifc2x3::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcElementCompositionEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc2x3::IfcBuildingElementProxy::setCompositionType(boost::optional< ::Ifc2x3::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcElementCompositionEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcBuildingElementProxy::declaration() const { return *IFC2X3_IfcBuildingElementProxy_type; } @@ -9698,7 +9698,7 @@ Ifc2x3::IfcBuildingElementType::IfcBuildingElementType(std::string v1_GlobalId, // Function implementations for IfcBuildingStorey boost::optional< double > Ifc2x3::IfcBuildingStorey::Elevation() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcBuildingStorey::declaration() const { return *IFC2X3_IfcBuildingStorey_type; } @@ -9716,9 +9716,9 @@ void Ifc2x3::IfcCShapeProfileDef::setWallThickness(double v) { {IfcWrite::IfcWri double Ifc2x3::IfcCShapeProfileDef::Girth() const { double v = *data_->getArgument(6); return v; } void Ifc2x3::IfcCShapeProfileDef::setGirth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcCShapeProfileDef::InternalFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcCShapeProfileDef::CentreOfGravityInX() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcCShapeProfileDef::setCentreOfGravityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcCShapeProfileDef::setCentreOfGravityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcCShapeProfileDef::declaration() const { return *IFC2X3_IfcCShapeProfileDef_type; } @@ -9788,7 +9788,7 @@ void Ifc2x3::IfcCartesianTransformationOperator::setAxis2(::Ifc2x3::IfcDirection ::Ifc2x3::IfcCartesianPoint* Ifc2x3::IfcCartesianTransformationOperator::LocalOrigin() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc2x3::IfcCartesianPoint>(true); } void Ifc2x3::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc2x3::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcCartesianTransformationOperator::Scale() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcCartesianTransformationOperator::declaration() const { return *IFC2X3_IfcCartesianTransformationOperator_type; } @@ -9806,7 +9806,7 @@ Ifc2x3::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator // Function implementations for IfcCartesianTransformationOperator2DnonUniform boost::optional< double > Ifc2x3::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IFC2X3_IfcCartesianTransformationOperator2DnonUniform_type; } @@ -9826,9 +9826,9 @@ Ifc2x3::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator // Function implementations for IfcCartesianTransformationOperator3DnonUniform boost::optional< double > Ifc2x3::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc2x3::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IFC2X3_IfcCartesianTransformationOperator3DnonUniform_type; } @@ -9848,9 +9848,9 @@ Ifc2x3::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc2x3::IfcProfileTyp // Function implementations for IfcChamferEdgeFeature boost::optional< double > Ifc2x3::IfcChamferEdgeFeature::Width() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcChamferEdgeFeature::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcChamferEdgeFeature::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcChamferEdgeFeature::Height() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcChamferEdgeFeature::setHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcChamferEdgeFeature::setHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc2x3::IfcChamferEdgeFeature::declaration() const { return *IFC2X3_IfcChamferEdgeFeature_type; } @@ -10007,7 +10007,7 @@ Ifc2x3::IfcColourRgb::IfcColourRgb(boost::optional< std::string > v1_Name, doubl // Function implementations for IfcColourSpecification boost::optional< std::string > Ifc2x3::IfcColourSpecification::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc2x3::IfcColourSpecification::declaration() const { return *IFC2X3_IfcColourSpecification_type; } @@ -10076,7 +10076,7 @@ Ifc2x3::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc2x3::IfcTransiti aggregate_of< ::Ifc2x3::IfcProfileDef >::ptr Ifc2x3::IfcCompositeProfileDef::Profiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc2x3::IfcProfileDef >(); } void Ifc2x3::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc2x3::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::string > Ifc2x3::IfcCompositeProfileDef::Label() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcCompositeProfileDef::declaration() const { return *IFC2X3_IfcCompositeProfileDef_type; } @@ -10166,11 +10166,11 @@ Ifc2x3::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEntity( // Function implementations for IfcConnectionPointEccentricity boost::optional< double > Ifc2x3::IfcConnectionPointEccentricity::EccentricityInX() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcConnectionPointEccentricity::EccentricityInY() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcConnectionPointEccentricity::EccentricityInZ() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcConnectionPointEccentricity::declaration() const { return *IFC2X3_IfcConnectionPointEccentricity_type; } @@ -10220,17 +10220,17 @@ Ifc2x3::IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(::Ifc2x3::Ifc std::string Ifc2x3::IfcConstraint::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc2x3::IfcConstraint::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcConstraint::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcConstraintEnum::Value Ifc2x3::IfcConstraint::ConstraintGrade() const { return ::Ifc2x3::IfcConstraintEnum::FromString(*data_->getArgument(2)); } void Ifc2x3::IfcConstraint::setConstraintGrade(::Ifc2x3::IfcConstraintEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcConstraintEnum::ToString(v)));data_->setArgument(2,attr);} } boost::optional< std::string > Ifc2x3::IfcConstraint::ConstraintSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc2x3::IfcActorSelect* Ifc2x3::IfcConstraint::CreatingActor() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc2x3::IfcActorSelect>(true); } void Ifc2x3::IfcConstraint::setCreatingActor(::Ifc2x3::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcConstraint::CreationTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } void Ifc2x3::IfcConstraint::setCreationTime(::Ifc2x3::IfcDateTimeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< std::string > Ifc2x3::IfcConstraint::UserDefinedGrade() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc2x3::IfcConstraintClassificationRelationship::list::ptr Ifc2x3::IfcConstraint::ClassifiedAs() const { return data_->getInverse(IFC2X3_IfcConstraintClassificationRelationship_type, 0)->as(); } ::Ifc2x3::IfcConstraintRelationship::list::ptr Ifc2x3::IfcConstraint::RelatesConstraints() const { return data_->getInverse(IFC2X3_IfcConstraintRelationship_type, 2)->as(); } @@ -10246,9 +10246,9 @@ Ifc2x3::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< std:: // Function implementations for IfcConstraintAggregationRelationship boost::optional< std::string > Ifc2x3::IfcConstraintAggregationRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcConstraintAggregationRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcConstraintAggregationRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcConstraintAggregationRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcConstraintAggregationRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcConstraintAggregationRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcConstraint* Ifc2x3::IfcConstraintAggregationRelationship::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc2x3::IfcConstraint>(true); } void Ifc2x3::IfcConstraintAggregationRelationship::setRelatingConstraint(::Ifc2x3::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } aggregate_of< ::Ifc2x3::IfcConstraint >::ptr Ifc2x3::IfcConstraintAggregationRelationship::RelatedConstraints() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc2x3::IfcConstraint >(); } @@ -10276,9 +10276,9 @@ Ifc2x3::IfcConstraintClassificationRelationship::IfcConstraintClassificationRela // Function implementations for IfcConstraintRelationship boost::optional< std::string > Ifc2x3::IfcConstraintRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcConstraintRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcConstraintRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcConstraintRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcConstraintRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcConstraintRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcConstraint* Ifc2x3::IfcConstraintRelationship::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc2x3::IfcConstraint>(true); } void Ifc2x3::IfcConstraintRelationship::setRelatingConstraint(::Ifc2x3::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } aggregate_of< ::Ifc2x3::IfcConstraint >::ptr Ifc2x3::IfcConstraintRelationship::RelatedConstraints() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc2x3::IfcConstraint >(); } @@ -10300,9 +10300,9 @@ Ifc2x3::IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(std:: // Function implementations for IfcConstructionMaterialResource boost::optional< aggregate_of_instance::ptr > Ifc2x3::IfcConstructionMaterialResource::Suppliers() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcConstructionMaterialResource::setSuppliers(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcConstructionMaterialResource::setSuppliers(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcConstructionMaterialResource::UsageRatio() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcConstructionMaterialResource::setUsageRatio(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcConstructionMaterialResource::setUsageRatio(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc2x3::IfcConstructionMaterialResource::declaration() const { return *IFC2X3_IfcConstructionMaterialResource_type; } @@ -10320,11 +10320,11 @@ Ifc2x3::IfcConstructionProductResource::IfcConstructionProductResource(std::stri // Function implementations for IfcConstructionResource boost::optional< std::string > Ifc2x3::IfcConstructionResource::ResourceIdentifier() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcConstructionResource::setResourceIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcConstructionResource::setResourceIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc2x3::IfcConstructionResource::ResourceGroup() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcConstructionResource::setResourceGroup(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcConstructionResource::setResourceGroup(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< ::Ifc2x3::IfcResourceConsumptionEnum::Value > Ifc2x3::IfcConstructionResource::ResourceConsumption() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc2x3::IfcResourceConsumptionEnum::FromString(*data_->getArgument(7)); } -void Ifc2x3::IfcConstructionResource::setResourceConsumption(boost::optional< ::Ifc2x3::IfcResourceConsumptionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcResourceConsumptionEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc2x3::IfcConstructionResource::setResourceConsumption(boost::optional< ::Ifc2x3::IfcResourceConsumptionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcResourceConsumptionEnum::ToString(*v)));}data_->setArgument(7,attr);} } ::Ifc2x3::IfcMeasureWithUnit* Ifc2x3::IfcConstructionResource::BaseQuantity() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc2x3::IfcMeasureWithUnit>(true); } void Ifc2x3::IfcConstructionResource::setBaseQuantity(::Ifc2x3::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -10399,7 +10399,7 @@ Ifc2x3::IfcCoolingTowerType::IfcCoolingTowerType(std::string v1_GlobalId, ::Ifc2 int Ifc2x3::IfcCoordinatedUniversalTimeOffset::HourOffset() const { int v = *data_->getArgument(0); return v; } void Ifc2x3::IfcCoordinatedUniversalTimeOffset::setHourOffset(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< int > Ifc2x3::IfcCoordinatedUniversalTimeOffset::MinuteOffset() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcCoordinatedUniversalTimeOffset::setMinuteOffset(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcCoordinatedUniversalTimeOffset::setMinuteOffset(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcAheadOrBehind::Value Ifc2x3::IfcCoordinatedUniversalTimeOffset::Sense() const { return ::Ifc2x3::IfcAheadOrBehind::FromString(*data_->getArgument(2)); } void Ifc2x3::IfcCoordinatedUniversalTimeOffset::setSense(::Ifc2x3::IfcAheadOrBehind::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcAheadOrBehind::ToString(v)));data_->setArgument(2,attr);} } @@ -10425,9 +10425,9 @@ void Ifc2x3::IfcCostSchedule::setPreparedBy(::Ifc2x3::IfcActorSelect* v) { {IfcW ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcCostSchedule::SubmittedOn() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } void Ifc2x3::IfcCostSchedule::setSubmittedOn(::Ifc2x3::IfcDateTimeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< std::string > Ifc2x3::IfcCostSchedule::Status() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc2x3::IfcCostSchedule::TargetUsers() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcCostSchedule::setTargetUsers(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcCostSchedule::setTargetUsers(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcCostSchedule::UpdateDate() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } void Ifc2x3::IfcCostSchedule::setUpdateDate(::Ifc2x3::IfcDateTimeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } std::string Ifc2x3::IfcCostSchedule::ID() const { std::string v = *data_->getArgument(11); return v; } @@ -10445,7 +10445,7 @@ Ifc2x3::IfcCostSchedule::IfcCostSchedule(std::string v1_GlobalId, ::Ifc2x3::IfcO std::string Ifc2x3::IfcCostValue::CostType() const { std::string v = *data_->getArgument(6); return v; } void Ifc2x3::IfcCostValue::setCostType(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< std::string > Ifc2x3::IfcCostValue::Condition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcCostValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcCostValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcCostValue::declaration() const { return *IFC2X3_IfcCostValue_type; } @@ -10455,7 +10455,7 @@ Ifc2x3::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, boost // Function implementations for IfcCovering boost::optional< ::Ifc2x3::IfcCoveringTypeEnum::Value > Ifc2x3::IfcCovering::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc2x3::IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc2x3::IfcCovering::setPredefinedType(boost::optional< ::Ifc2x3::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcCoveringTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc2x3::IfcCovering::setPredefinedType(boost::optional< ::Ifc2x3::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcCoveringTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc2x3::IfcRelCoversSpaces::list::ptr Ifc2x3::IfcCovering::CoversSpaces() const { return data_->getInverse(IFC2X3_IfcRelCoversSpaces_type, 5)->as(); } ::Ifc2x3::IfcRelCoversBldgElements::list::ptr Ifc2x3::IfcCovering::Covers() const { return data_->getInverse(IFC2X3_IfcRelCoversBldgElements_type, 5)->as(); } @@ -10481,7 +10481,7 @@ void Ifc2x3::IfcCraneRailAShapeProfileDef::setOverallHeight(double v) { {IfcWrit double Ifc2x3::IfcCraneRailAShapeProfileDef::BaseWidth2() const { double v = *data_->getArgument(4); return v; } void Ifc2x3::IfcCraneRailAShapeProfileDef::setBaseWidth2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcCraneRailAShapeProfileDef::Radius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcCraneRailAShapeProfileDef::setRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcCraneRailAShapeProfileDef::setRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } double Ifc2x3::IfcCraneRailAShapeProfileDef::HeadWidth() const { double v = *data_->getArgument(6); return v; } void Ifc2x3::IfcCraneRailAShapeProfileDef::setHeadWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } double Ifc2x3::IfcCraneRailAShapeProfileDef::HeadDepth2() const { double v = *data_->getArgument(7); return v; } @@ -10499,7 +10499,7 @@ void Ifc2x3::IfcCraneRailAShapeProfileDef::setBaseDepth2(double v) { {IfcWrite:: double Ifc2x3::IfcCraneRailAShapeProfileDef::BaseDepth3() const { double v = *data_->getArgument(13); return v; } void Ifc2x3::IfcCraneRailAShapeProfileDef::setBaseDepth3(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } boost::optional< double > Ifc2x3::IfcCraneRailAShapeProfileDef::CentreOfGravityInY() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc2x3::IfcCraneRailAShapeProfileDef::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc2x3::IfcCraneRailAShapeProfileDef::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } const IfcParse::entity& Ifc2x3::IfcCraneRailAShapeProfileDef::declaration() const { return *IFC2X3_IfcCraneRailAShapeProfileDef_type; } @@ -10513,7 +10513,7 @@ void Ifc2x3::IfcCraneRailFShapeProfileDef::setOverallHeight(double v) { {IfcWrit double Ifc2x3::IfcCraneRailFShapeProfileDef::HeadWidth() const { double v = *data_->getArgument(4); return v; } void Ifc2x3::IfcCraneRailFShapeProfileDef::setHeadWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcCraneRailFShapeProfileDef::Radius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcCraneRailFShapeProfileDef::setRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcCraneRailFShapeProfileDef::setRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } double Ifc2x3::IfcCraneRailFShapeProfileDef::HeadDepth2() const { double v = *data_->getArgument(6); return v; } void Ifc2x3::IfcCraneRailFShapeProfileDef::setHeadDepth2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } double Ifc2x3::IfcCraneRailFShapeProfileDef::HeadDepth3() const { double v = *data_->getArgument(7); return v; } @@ -10525,7 +10525,7 @@ void Ifc2x3::IfcCraneRailFShapeProfileDef::setBaseDepth1(double v) { {IfcWrite:: double Ifc2x3::IfcCraneRailFShapeProfileDef::BaseDepth2() const { double v = *data_->getArgument(10); return v; } void Ifc2x3::IfcCraneRailFShapeProfileDef::setBaseDepth2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcCraneRailFShapeProfileDef::CentreOfGravityInY() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcCraneRailFShapeProfileDef::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcCraneRailFShapeProfileDef::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc2x3::IfcCraneRailFShapeProfileDef::declaration() const { return *IFC2X3_IfcCraneRailFShapeProfileDef_type; } @@ -10635,7 +10635,7 @@ Ifc2x3::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, ::I // Function implementations for IfcCurveStyleFont boost::optional< std::string > Ifc2x3::IfcCurveStyleFont::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc2x3::IfcCurveStyleFontPattern >::ptr Ifc2x3::IfcCurveStyleFont::PatternList() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc2x3::IfcCurveStyleFontPattern >(); } void Ifc2x3::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc2x3::IfcCurveStyleFontPattern >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -10647,7 +10647,7 @@ Ifc2x3::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > v1_N // Function implementations for IfcCurveStyleFontAndScaling boost::optional< std::string > Ifc2x3::IfcCurveStyleFontAndScaling::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc2x3::IfcCurveStyleFontSelect* Ifc2x3::IfcCurveStyleFontAndScaling::CurveFont() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc2x3::IfcCurveStyleFontSelect>(true); } void Ifc2x3::IfcCurveStyleFontAndScaling::setCurveFont(::Ifc2x3::IfcCurveStyleFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } double Ifc2x3::IfcCurveStyleFontAndScaling::CurveFontScaling() const { double v = *data_->getArgument(2); return v; } @@ -10711,7 +10711,7 @@ void Ifc2x3::IfcDerivedProfileDef::setParentProfile(::Ifc2x3::IfcProfileDef* v) ::Ifc2x3::IfcCartesianTransformationOperator2D* Ifc2x3::IfcDerivedProfileDef::Operator() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc2x3::IfcCartesianTransformationOperator2D>(true); } void Ifc2x3::IfcDerivedProfileDef::setOperator(::Ifc2x3::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc2x3::IfcDerivedProfileDef::Label() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcDerivedProfileDef::declaration() const { return *IFC2X3_IfcDerivedProfileDef_type; } @@ -10725,7 +10725,7 @@ void Ifc2x3::IfcDerivedUnit::setElements(aggregate_of< ::Ifc2x3::IfcDerivedUnitE ::Ifc2x3::IfcDerivedUnitEnum::Value Ifc2x3::IfcDerivedUnit::UnitType() const { return ::Ifc2x3::IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); } void Ifc2x3::IfcDerivedUnit::setUnitType(::Ifc2x3::IfcDerivedUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcDerivedUnitEnum::ToString(v)));data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcDerivedUnit::UserDefinedType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc2x3::IfcDerivedUnit::declaration() const { return *IFC2X3_IfcDerivedUnit_type; } @@ -10864,7 +10864,7 @@ Ifc2x3::IfcDistributionChamberElementType::IfcDistributionChamberElementType(std // Function implementations for IfcDistributionControlElement boost::optional< std::string > Ifc2x3::IfcDistributionControlElement::ControlElementId() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcDistributionControlElement::setControlElementId(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcDistributionControlElement::setControlElementId(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc2x3::IfcRelFlowControlElements::list::ptr Ifc2x3::IfcDistributionControlElement::AssignedToFlowElement() const { return data_->getInverse(IFC2X3_IfcRelFlowControlElements_type, 4)->as(); } @@ -10916,7 +10916,7 @@ Ifc2x3::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std::stri // Function implementations for IfcDistributionPort boost::optional< ::Ifc2x3::IfcFlowDirectionEnum::Value > Ifc2x3::IfcDistributionPort::FlowDirection() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc2x3::IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); } -void Ifc2x3::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc2x3::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcFlowDirectionEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc2x3::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc2x3::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcFlowDirectionEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcDistributionPort::declaration() const { return *IFC2X3_IfcDistributionPort_type; } @@ -10926,11 +10926,11 @@ Ifc2x3::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, ::Ifc2 // Function implementations for IfcDocumentElectronicFormat boost::optional< std::string > Ifc2x3::IfcDocumentElectronicFormat::FileExtension() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcDocumentElectronicFormat::setFileExtension(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcDocumentElectronicFormat::setFileExtension(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcDocumentElectronicFormat::MimeContentType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcDocumentElectronicFormat::setMimeContentType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcDocumentElectronicFormat::setMimeContentType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcDocumentElectronicFormat::MimeSubtype() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcDocumentElectronicFormat::setMimeSubtype(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcDocumentElectronicFormat::setMimeSubtype(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc2x3::IfcDocumentElectronicFormat::declaration() const { return *IFC2X3_IfcDocumentElectronicFormat_type; } @@ -10944,21 +10944,21 @@ void Ifc2x3::IfcDocumentInformation::setDocumentId(std::string v) { {IfcWrite::I std::string Ifc2x3::IfcDocumentInformation::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc2x3::IfcDocumentInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcDocumentInformation::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcDocumentReference >::ptr > Ifc2x3::IfcDocumentInformation::DocumentReferences() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc2x3::IfcDocumentReference >(); } -void Ifc2x3::IfcDocumentInformation::setDocumentReferences(boost::optional< aggregate_of< ::Ifc2x3::IfcDocumentReference >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(3,attr);} } +void Ifc2x3::IfcDocumentInformation::setDocumentReferences(boost::optional< aggregate_of< ::Ifc2x3::IfcDocumentReference >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc2x3::IfcDocumentInformation::Purpose() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc2x3::IfcDocumentInformation::IntendedUse() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc2x3::IfcDocumentInformation::Scope() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc2x3::IfcDocumentInformation::Revision() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc2x3::IfcActorSelect* Ifc2x3::IfcDocumentInformation::DocumentOwner() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc2x3::IfcActorSelect>(true); } void Ifc2x3::IfcDocumentInformation::setDocumentOwner(::Ifc2x3::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc2x3::IfcDocumentInformation::Editors() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc2x3::IfcDateAndTime* Ifc2x3::IfcDocumentInformation::CreationTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc2x3::IfcDateAndTime>(true); } void Ifc2x3::IfcDocumentInformation::setCreationTime(::Ifc2x3::IfcDateAndTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } ::Ifc2x3::IfcDateAndTime* Ifc2x3::IfcDocumentInformation::LastRevisionTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc2x3::IfcDateAndTime>(true); } @@ -10970,9 +10970,9 @@ void Ifc2x3::IfcDocumentInformation::setValidFrom(::Ifc2x3::IfcCalendarDate* v) ::Ifc2x3::IfcCalendarDate* Ifc2x3::IfcDocumentInformation::ValidUntil() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc2x3::IfcCalendarDate>(true); } void Ifc2x3::IfcDocumentInformation::setValidUntil(::Ifc2x3::IfcCalendarDate* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} } boost::optional< ::Ifc2x3::IfcDocumentConfidentialityEnum::Value > Ifc2x3::IfcDocumentInformation::Confidentiality() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } return ::Ifc2x3::IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); } -void Ifc2x3::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc2x3::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcDocumentConfidentialityEnum::ToString(*v)));data_->setArgument(15,attr);} } +void Ifc2x3::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc2x3::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcDocumentConfidentialityEnum::ToString(*v)));}data_->setArgument(15,attr);} } boost::optional< ::Ifc2x3::IfcDocumentStatusEnum::Value > Ifc2x3::IfcDocumentInformation::Status() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } return ::Ifc2x3::IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); } -void Ifc2x3::IfcDocumentInformation::setStatus(boost::optional< ::Ifc2x3::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcDocumentStatusEnum::ToString(*v)));data_->setArgument(16,attr);} } +void Ifc2x3::IfcDocumentInformation::setStatus(boost::optional< ::Ifc2x3::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcDocumentStatusEnum::ToString(*v)));}data_->setArgument(16,attr);} } ::Ifc2x3::IfcDocumentInformationRelationship::list::ptr Ifc2x3::IfcDocumentInformation::IsPointedTo() const { return data_->getInverse(IFC2X3_IfcDocumentInformationRelationship_type, 1)->as(); } ::Ifc2x3::IfcDocumentInformationRelationship::list::ptr Ifc2x3::IfcDocumentInformation::IsPointer() const { return data_->getInverse(IFC2X3_IfcDocumentInformationRelationship_type, 0)->as(); } @@ -10988,7 +10988,7 @@ void Ifc2x3::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc2x3::I aggregate_of< ::Ifc2x3::IfcDocumentInformation >::ptr Ifc2x3::IfcDocumentInformationRelationship::RelatedDocuments() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc2x3::IfcDocumentInformation >(); } void Ifc2x3::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc2x3::IfcDocumentInformation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcDocumentInformationRelationship::RelationshipType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc2x3::IfcDocumentInformationRelationship::declaration() const { return *IFC2X3_IfcDocumentInformationRelationship_type; } @@ -11007,9 +11007,9 @@ Ifc2x3::IfcDocumentReference::IfcDocumentReference(boost::optional< std::string // Function implementations for IfcDoor boost::optional< double > Ifc2x3::IfcDoor::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcDoor::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcDoor::declaration() const { return *IFC2X3_IfcDoor_type; } @@ -11019,25 +11019,25 @@ Ifc2x3::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_ // Function implementations for IfcDoorLiningProperties boost::optional< double > Ifc2x3::IfcDoorLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcDoorLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcDoorLiningProperties::ThresholdDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcDoorLiningProperties::ThresholdThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcDoorLiningProperties::TransomThickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcDoorLiningProperties::TransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcDoorLiningProperties::LiningOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcDoorLiningProperties::ThresholdOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc2x3::IfcDoorLiningProperties::CasingThickness() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc2x3::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc2x3::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc2x3::IfcDoorLiningProperties::CasingDepth() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc2x3::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc2x3::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } ::Ifc2x3::IfcShapeAspect* Ifc2x3::IfcDoorLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc2x3::IfcShapeAspect>(true); } void Ifc2x3::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc2x3::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} } @@ -11049,11 +11049,11 @@ Ifc2x3::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_GlobalId // Function implementations for IfcDoorPanelProperties boost::optional< double > Ifc2x3::IfcDoorPanelProperties::PanelDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc2x3::IfcDoorPanelOperationEnum::Value Ifc2x3::IfcDoorPanelProperties::PanelOperation() const { return ::Ifc2x3::IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); } void Ifc2x3::IfcDoorPanelProperties::setPanelOperation(::Ifc2x3::IfcDoorPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcDoorPanelOperationEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcDoorPanelProperties::PanelWidth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc2x3::IfcDoorPanelPositionEnum::Value Ifc2x3::IfcDoorPanelProperties::PanelPosition() const { return ::Ifc2x3::IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); } void Ifc2x3::IfcDoorPanelProperties::setPanelPosition(::Ifc2x3::IfcDoorPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcDoorPanelPositionEnum::ToString(v)));data_->setArgument(7,attr);} } ::Ifc2x3::IfcShapeAspect* Ifc2x3::IfcDoorPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc2x3::IfcShapeAspect>(true); } @@ -11095,9 +11095,9 @@ Ifc2x3::IfcDraughtingCallout::IfcDraughtingCallout(aggregate_of_instance::ptr v1 // Function implementations for IfcDraughtingCalloutRelationship boost::optional< std::string > Ifc2x3::IfcDraughtingCalloutRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcDraughtingCalloutRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcDraughtingCalloutRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcDraughtingCalloutRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcDraughtingCalloutRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcDraughtingCalloutRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcDraughtingCallout* Ifc2x3::IfcDraughtingCalloutRelationship::RelatingDraughtingCallout() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc2x3::IfcDraughtingCallout>(true); } void Ifc2x3::IfcDraughtingCalloutRelationship::setRelatingDraughtingCallout(::Ifc2x3::IfcDraughtingCallout* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc2x3::IfcDraughtingCallout* Ifc2x3::IfcDraughtingCalloutRelationship::RelatedDraughtingCallout() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc2x3::IfcDraughtingCallout>(true); } @@ -11189,7 +11189,7 @@ Ifc2x3::IfcEdgeCurve::IfcEdgeCurve(::Ifc2x3::IfcVertex* v1_EdgeStart, ::Ifc2x3:: // Function implementations for IfcEdgeFeature boost::optional< double > Ifc2x3::IfcEdgeFeature::FeatureLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcEdgeFeature::setFeatureLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcEdgeFeature::setFeatureLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcEdgeFeature::declaration() const { return *IFC2X3_IfcEdgeFeature_type; } @@ -11221,7 +11221,7 @@ Ifc2x3::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_Global ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::Value Ifc2x3::IfcElectricDistributionPoint::DistributionPointFunction() const { return ::Ifc2x3::IfcElectricDistributionPointFunctionEnum::FromString(*data_->getArgument(8)); } void Ifc2x3::IfcElectricDistributionPoint::setDistributionPointFunction(::Ifc2x3::IfcElectricDistributionPointFunctionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcElectricDistributionPointFunctionEnum::ToString(v)));data_->setArgument(8,attr);} } boost::optional< std::string > Ifc2x3::IfcElectricDistributionPoint::UserDefinedFunction() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcElectricDistributionPoint::setUserDefinedFunction(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcElectricDistributionPoint::setUserDefinedFunction(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcElectricDistributionPoint::declaration() const { return *IFC2X3_IfcElectricDistributionPoint_type; } @@ -11281,19 +11281,19 @@ Ifc2x3::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v1_Gl // Function implementations for IfcElectricalBaseProperties boost::optional< ::Ifc2x3::IfcElectricCurrentEnum::Value > Ifc2x3::IfcElectricalBaseProperties::ElectricCurrentType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc2x3::IfcElectricCurrentEnum::FromString(*data_->getArgument(6)); } -void Ifc2x3::IfcElectricalBaseProperties::setElectricCurrentType(boost::optional< ::Ifc2x3::IfcElectricCurrentEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcElectricCurrentEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc2x3::IfcElectricalBaseProperties::setElectricCurrentType(boost::optional< ::Ifc2x3::IfcElectricCurrentEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcElectricCurrentEnum::ToString(*v)));}data_->setArgument(6,attr);} } double Ifc2x3::IfcElectricalBaseProperties::InputVoltage() const { double v = *data_->getArgument(7); return v; } void Ifc2x3::IfcElectricalBaseProperties::setInputVoltage(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } double Ifc2x3::IfcElectricalBaseProperties::InputFrequency() const { double v = *data_->getArgument(8); return v; } void Ifc2x3::IfcElectricalBaseProperties::setInputFrequency(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcElectricalBaseProperties::FullLoadCurrent() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcElectricalBaseProperties::setFullLoadCurrent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcElectricalBaseProperties::setFullLoadCurrent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcElectricalBaseProperties::MinimumCircuitCurrent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcElectricalBaseProperties::setMinimumCircuitCurrent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcElectricalBaseProperties::setMinimumCircuitCurrent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcElectricalBaseProperties::MaximumPowerInput() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcElectricalBaseProperties::setMaximumPowerInput(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcElectricalBaseProperties::setMaximumPowerInput(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc2x3::IfcElectricalBaseProperties::RatedPowerInput() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc2x3::IfcElectricalBaseProperties::setRatedPowerInput(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc2x3::IfcElectricalBaseProperties::setRatedPowerInput(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } int Ifc2x3::IfcElectricalBaseProperties::InputPhase() const { int v = *data_->getArgument(13); return v; } void Ifc2x3::IfcElectricalBaseProperties::setInputPhase(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -11321,7 +11321,7 @@ Ifc2x3::IfcElectricalElement::IfcElectricalElement(std::string v1_GlobalId, ::If // Function implementations for IfcElement boost::optional< std::string > Ifc2x3::IfcElement::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc2x3::IfcRelConnectsStructuralElement::list::ptr Ifc2x3::IfcElement::HasStructuralMember() const { return data_->getInverse(IFC2X3_IfcRelConnectsStructuralElement_type, 4)->as(); } ::Ifc2x3::IfcRelFillsElement::list::ptr Ifc2x3::IfcElement::FillsVoids() const { return data_->getInverse(IFC2X3_IfcRelFillsElement_type, 5)->as(); } @@ -11343,7 +11343,7 @@ Ifc2x3::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistor // Function implementations for IfcElementAssembly boost::optional< ::Ifc2x3::IfcAssemblyPlaceEnum::Value > Ifc2x3::IfcElementAssembly::AssemblyPlace() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc2x3::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); } -void Ifc2x3::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc2x3::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcAssemblyPlaceEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc2x3::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc2x3::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcAssemblyPlaceEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc2x3::IfcElementAssemblyTypeEnum::Value Ifc2x3::IfcElementAssembly::PredefinedType() const { return ::Ifc2x3::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); } void Ifc2x3::IfcElementAssembly::setPredefinedType(::Ifc2x3::IfcElementAssemblyTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcElementAssemblyTypeEnum::ToString(v)));data_->setArgument(9,attr);} } @@ -11371,7 +11371,7 @@ Ifc2x3::IfcElementComponentType::IfcElementComponentType(std::string v1_GlobalId // Function implementations for IfcElementQuantity boost::optional< std::string > Ifc2x3::IfcElementQuantity::MethodOfMeasurement() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc2x3::IfcPhysicalQuantity >::ptr Ifc2x3::IfcElementQuantity::Quantities() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc2x3::IfcPhysicalQuantity >(); } void Ifc2x3::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc2x3::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -11383,7 +11383,7 @@ Ifc2x3::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::Ifc2x3 // Function implementations for IfcElementType boost::optional< std::string > Ifc2x3::IfcElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcElementType::declaration() const { return *IFC2X3_IfcElementType_type; } @@ -11443,9 +11443,9 @@ Ifc2x3::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::string // Function implementations for IfcEnergyProperties boost::optional< ::Ifc2x3::IfcEnergySequenceEnum::Value > Ifc2x3::IfcEnergyProperties::EnergySequence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc2x3::IfcEnergySequenceEnum::FromString(*data_->getArgument(4)); } -void Ifc2x3::IfcEnergyProperties::setEnergySequence(boost::optional< ::Ifc2x3::IfcEnergySequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcEnergySequenceEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc2x3::IfcEnergyProperties::setEnergySequence(boost::optional< ::Ifc2x3::IfcEnergySequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcEnergySequenceEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc2x3::IfcEnergyProperties::UserDefinedEnergySequence() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcEnergyProperties::setUserDefinedEnergySequence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcEnergyProperties::setUserDefinedEnergySequence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc2x3::IfcEnergyProperties::declaration() const { return *IFC2X3_IfcEnergyProperties_type; } @@ -11459,7 +11459,7 @@ void Ifc2x3::IfcEnvironmentalImpactValue::setImpactType(std::string v) { {IfcWri ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::Value Ifc2x3::IfcEnvironmentalImpactValue::Category() const { return ::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::FromString(*data_->getArgument(7)); } void Ifc2x3::IfcEnvironmentalImpactValue::setCategory(::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcEnvironmentalImpactCategoryEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc2x3::IfcEnvironmentalImpactValue::UserDefinedCategory() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcEnvironmentalImpactValue::setUserDefinedCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcEnvironmentalImpactValue::setUserDefinedCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcEnvironmentalImpactValue::declaration() const { return *IFC2X3_IfcEnvironmentalImpactValue_type; } @@ -11507,7 +11507,7 @@ Ifc2x3::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc2x3:: aggregate_of< ::Ifc2x3::IfcProperty >::ptr Ifc2x3::IfcExtendedMaterialProperties::ExtendedProperties() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc2x3::IfcProperty >(); } void Ifc2x3::IfcExtendedMaterialProperties::setExtendedProperties(aggregate_of< ::Ifc2x3::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcExtendedMaterialProperties::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcExtendedMaterialProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcExtendedMaterialProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::string Ifc2x3::IfcExtendedMaterialProperties::Name() const { std::string v = *data_->getArgument(3); return v; } void Ifc2x3::IfcExtendedMaterialProperties::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -11519,11 +11519,11 @@ Ifc2x3::IfcExtendedMaterialProperties::IfcExtendedMaterialProperties(::Ifc2x3::I // Function implementations for IfcExternalReference boost::optional< std::string > Ifc2x3::IfcExternalReference::Location() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcExternalReference::ItemReference() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcExternalReference::setItemReference(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcExternalReference::setItemReference(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcExternalReference::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc2x3::IfcExternalReference::declaration() const { return *IFC2X3_IfcExternalReference_type; } @@ -11647,17 +11647,17 @@ Ifc2x3::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(::Ifc2x3::IfcClosedShel // Function implementations for IfcFailureConnectionCondition boost::optional< double > Ifc2x3::IfcFailureConnectionCondition::TensionFailureX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcFailureConnectionCondition::TensionFailureY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcFailureConnectionCondition::TensionFailureZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcFailureConnectionCondition::CompressionFailureX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcFailureConnectionCondition::CompressionFailureY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcFailureConnectionCondition::CompressionFailureZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc2x3::IfcFailureConnectionCondition::declaration() const { return *IFC2X3_IfcFailureConnectionCondition_type; } @@ -11935,11 +11935,11 @@ void Ifc2x3::IfcFluidFlowProperties::setFluid(::Ifc2x3::IfcMaterial* v) { {IfcWr ::Ifc2x3::IfcTimeSeries* Ifc2x3::IfcFluidFlowProperties::PressureTimeSeries() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc2x3::IfcTimeSeries>(true); } void Ifc2x3::IfcFluidFlowProperties::setPressureTimeSeries(::Ifc2x3::IfcTimeSeries* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< std::string > Ifc2x3::IfcFluidFlowProperties::UserDefinedPropertySource() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcFluidFlowProperties::setUserDefinedPropertySource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcFluidFlowProperties::setUserDefinedPropertySource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcFluidFlowProperties::TemperatureSingleValue() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcFluidFlowProperties::setTemperatureSingleValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcFluidFlowProperties::setTemperatureSingleValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc2x3::IfcFluidFlowProperties::WetBulbTemperatureSingleValue() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc2x3::IfcFluidFlowProperties::setWetBulbTemperatureSingleValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc2x3::IfcFluidFlowProperties::setWetBulbTemperatureSingleValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc2x3::IfcTimeSeries* Ifc2x3::IfcFluidFlowProperties::WetBulbTemperatureTimeSeries() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc2x3::IfcTimeSeries>(true); } void Ifc2x3::IfcFluidFlowProperties::setWetBulbTemperatureTimeSeries(::Ifc2x3::IfcTimeSeries* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } ::Ifc2x3::IfcTimeSeries* Ifc2x3::IfcFluidFlowProperties::TemperatureTimeSeries() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc2x3::IfcTimeSeries>(true); } @@ -11947,11 +11947,11 @@ void Ifc2x3::IfcFluidFlowProperties::setTemperatureTimeSeries(::Ifc2x3::IfcTimeS ::Ifc2x3::IfcDerivedMeasureValue* Ifc2x3::IfcFluidFlowProperties::FlowrateSingleValue() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(15)))->as<::Ifc2x3::IfcDerivedMeasureValue>(true); } void Ifc2x3::IfcFluidFlowProperties::setFlowrateSingleValue(::Ifc2x3::IfcDerivedMeasureValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(15,attr);} } boost::optional< double > Ifc2x3::IfcFluidFlowProperties::FlowConditionSingleValue() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc2x3::IfcFluidFlowProperties::setFlowConditionSingleValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc2x3::IfcFluidFlowProperties::setFlowConditionSingleValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc2x3::IfcFluidFlowProperties::VelocitySingleValue() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc2x3::IfcFluidFlowProperties::setVelocitySingleValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc2x3::IfcFluidFlowProperties::setVelocitySingleValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< double > Ifc2x3::IfcFluidFlowProperties::PressureSingleValue() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } double v = *data_->getArgument(18); return v; } -void Ifc2x3::IfcFluidFlowProperties::setPressureSingleValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc2x3::IfcFluidFlowProperties::setPressureSingleValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } const IfcParse::entity& Ifc2x3::IfcFluidFlowProperties::declaration() const { return *IFC2X3_IfcFluidFlowProperties_type; } @@ -11971,13 +11971,13 @@ Ifc2x3::IfcFooting::IfcFooting(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistor // Function implementations for IfcFuelProperties boost::optional< double > Ifc2x3::IfcFuelProperties::CombustionTemperature() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcFuelProperties::setCombustionTemperature(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcFuelProperties::setCombustionTemperature(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcFuelProperties::CarbonContent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcFuelProperties::setCarbonContent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcFuelProperties::setCarbonContent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcFuelProperties::LowerHeatingValue() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcFuelProperties::setLowerHeatingValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcFuelProperties::setLowerHeatingValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcFuelProperties::HigherHeatingValue() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcFuelProperties::setHigherHeatingValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcFuelProperties::setHigherHeatingValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcFuelProperties::declaration() const { return *IFC2X3_IfcFuelProperties_type; } @@ -12031,11 +12031,11 @@ Ifc2x3::IfcGasTerminalType::IfcGasTerminalType(std::string v1_GlobalId, ::Ifc2x3 // Function implementations for IfcGeneralMaterialProperties boost::optional< double > Ifc2x3::IfcGeneralMaterialProperties::MolecularWeight() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcGeneralMaterialProperties::setMolecularWeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcGeneralMaterialProperties::setMolecularWeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcGeneralMaterialProperties::Porosity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcGeneralMaterialProperties::setPorosity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcGeneralMaterialProperties::setPorosity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcGeneralMaterialProperties::MassDensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcGeneralMaterialProperties::setMassDensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcGeneralMaterialProperties::setMassDensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcGeneralMaterialProperties::declaration() const { return *IFC2X3_IfcGeneralMaterialProperties_type; } @@ -12045,15 +12045,15 @@ Ifc2x3::IfcGeneralMaterialProperties::IfcGeneralMaterialProperties(::Ifc2x3::Ifc // Function implementations for IfcGeneralProfileProperties boost::optional< double > Ifc2x3::IfcGeneralProfileProperties::PhysicalWeight() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcGeneralProfileProperties::setPhysicalWeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcGeneralProfileProperties::setPhysicalWeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcGeneralProfileProperties::Perimeter() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcGeneralProfileProperties::setPerimeter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcGeneralProfileProperties::setPerimeter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcGeneralProfileProperties::MinimumPlateThickness() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcGeneralProfileProperties::setMinimumPlateThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcGeneralProfileProperties::setMinimumPlateThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcGeneralProfileProperties::MaximumPlateThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcGeneralProfileProperties::setMaximumPlateThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcGeneralProfileProperties::setMaximumPlateThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcGeneralProfileProperties::CrossSectionArea() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcGeneralProfileProperties::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcGeneralProfileProperties::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc2x3::IfcGeneralProfileProperties::declaration() const { return *IFC2X3_IfcGeneralProfileProperties_type; } @@ -12073,7 +12073,7 @@ Ifc2x3::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of_instance::ptr v1 int Ifc2x3::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { int v = *data_->getArgument(2); return v; } void Ifc2x3::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcGeometricRepresentationContext::Precision() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc2x3::IfcAxis2Placement* Ifc2x3::IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc2x3::IfcAxis2Placement>(true); } void Ifc2x3::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc2x3::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } ::Ifc2x3::IfcDirection* Ifc2x3::IfcGeometricRepresentationContext::TrueNorth() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc2x3::IfcDirection>(true); } @@ -12098,11 +12098,11 @@ Ifc2x3::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : IfcRe ::Ifc2x3::IfcGeometricRepresentationContext* Ifc2x3::IfcGeometricRepresentationSubContext::ParentContext() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc2x3::IfcGeometricRepresentationContext>(true); } void Ifc2x3::IfcGeometricRepresentationSubContext::setParentContext(::Ifc2x3::IfcGeometricRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcGeometricRepresentationSubContext::TargetScale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc2x3::IfcGeometricProjectionEnum::Value Ifc2x3::IfcGeometricRepresentationSubContext::TargetView() const { return ::Ifc2x3::IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); } void Ifc2x3::IfcGeometricRepresentationSubContext::setTargetView(::Ifc2x3::IfcGeometricProjectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcGeometricProjectionEnum::ToString(v)));data_->setArgument(8,attr);} } boost::optional< std::string > Ifc2x3::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcGeometricRepresentationSubContext::declaration() const { return *IFC2X3_IfcGeometricRepresentationSubContext_type; } @@ -12126,7 +12126,7 @@ void Ifc2x3::IfcGrid::setUAxes(aggregate_of< ::Ifc2x3::IfcGridAxis >::ptr v) { { aggregate_of< ::Ifc2x3::IfcGridAxis >::ptr Ifc2x3::IfcGrid::VAxes() const { aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc2x3::IfcGridAxis >(); } void Ifc2x3::IfcGrid::setVAxes(aggregate_of< ::Ifc2x3::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcGridAxis >::ptr > Ifc2x3::IfcGrid::WAxes() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc2x3::IfcGridAxis >(); } -void Ifc2x3::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc2x3::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc2x3::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc2x3::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc2x3::IfcRelContainedInSpatialStructure::list::ptr Ifc2x3::IfcGrid::ContainedInStructure() const { return data_->getInverse(IFC2X3_IfcRelContainedInSpatialStructure_type, 4)->as(); } @@ -12137,7 +12137,7 @@ Ifc2x3::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_ // Function implementations for IfcGridAxis boost::optional< std::string > Ifc2x3::IfcGridAxis::AxisTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc2x3::IfcCurve* Ifc2x3::IfcGridAxis::AxisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc2x3::IfcCurve>(true); } void Ifc2x3::IfcGridAxis::setAxisCurve(::Ifc2x3::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } bool Ifc2x3::IfcGridAxis::SameSense() const { bool v = *data_->getArgument(2); return v; } @@ -12208,15 +12208,15 @@ Ifc2x3::IfcHumidifierType::IfcHumidifierType(std::string v1_GlobalId, ::Ifc2x3:: // Function implementations for IfcHygroscopicMaterialProperties boost::optional< double > Ifc2x3::IfcHygroscopicMaterialProperties::UpperVaporResistanceFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcHygroscopicMaterialProperties::setUpperVaporResistanceFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcHygroscopicMaterialProperties::setUpperVaporResistanceFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcHygroscopicMaterialProperties::LowerVaporResistanceFactor() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcHygroscopicMaterialProperties::setLowerVaporResistanceFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcHygroscopicMaterialProperties::setLowerVaporResistanceFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcHygroscopicMaterialProperties::IsothermalMoistureCapacity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcHygroscopicMaterialProperties::setIsothermalMoistureCapacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcHygroscopicMaterialProperties::setIsothermalMoistureCapacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcHygroscopicMaterialProperties::VaporPermeability() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcHygroscopicMaterialProperties::setVaporPermeability(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcHygroscopicMaterialProperties::setVaporPermeability(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcHygroscopicMaterialProperties::MoistureDiffusivity() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcHygroscopicMaterialProperties::setMoistureDiffusivity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcHygroscopicMaterialProperties::setMoistureDiffusivity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc2x3::IfcHygroscopicMaterialProperties::declaration() const { return *IFC2X3_IfcHygroscopicMaterialProperties_type; } @@ -12234,7 +12234,7 @@ void Ifc2x3::IfcIShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc2x3::IfcIShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc2x3::IfcIShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcIShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcIShapeProfileDef::declaration() const { return *IFC2X3_IfcIShapeProfileDef_type; } @@ -12308,19 +12308,19 @@ Ifc2x3::IfcJunctionBoxType::IfcJunctionBoxType(std::string v1_GlobalId, ::Ifc2x3 double Ifc2x3::IfcLShapeProfileDef::Depth() const { double v = *data_->getArgument(3); return v; } void Ifc2x3::IfcLShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcLShapeProfileDef::Width() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } double Ifc2x3::IfcLShapeProfileDef::Thickness() const { double v = *data_->getArgument(5); return v; } void Ifc2x3::IfcLShapeProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcLShapeProfileDef::FilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcLShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcLShapeProfileDef::LegSlope() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcLShapeProfileDef::CentreOfGravityInX() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcLShapeProfileDef::setCentreOfGravityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcLShapeProfileDef::setCentreOfGravityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcLShapeProfileDef::CentreOfGravityInY() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcLShapeProfileDef::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcLShapeProfileDef::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc2x3::IfcLShapeProfileDef::declaration() const { return *IFC2X3_IfcLShapeProfileDef_type; } @@ -12330,7 +12330,7 @@ Ifc2x3::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc2x3::IfcProfileTypeEnum::V // Function implementations for IfcLaborResource boost::optional< std::string > Ifc2x3::IfcLaborResource::SkillSet() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcLaborResource::setSkillSet(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcLaborResource::setSkillSet(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcLaborResource::declaration() const { return *IFC2X3_IfcLaborResource_type; } @@ -12352,13 +12352,13 @@ Ifc2x3::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHist std::string Ifc2x3::IfcLibraryInformation::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc2x3::IfcLibraryInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcLibraryInformation::Version() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcOrganization* Ifc2x3::IfcLibraryInformation::Publisher() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc2x3::IfcOrganization>(true); } void Ifc2x3::IfcLibraryInformation::setPublisher(::Ifc2x3::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc2x3::IfcCalendarDate* Ifc2x3::IfcLibraryInformation::VersionDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc2x3::IfcCalendarDate>(true); } void Ifc2x3::IfcLibraryInformation::setVersionDate(::Ifc2x3::IfcCalendarDate* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcLibraryReference >::ptr > Ifc2x3::IfcLibraryInformation::LibraryReference() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc2x3::IfcLibraryReference >(); } -void Ifc2x3::IfcLibraryInformation::setLibraryReference(boost::optional< aggregate_of< ::Ifc2x3::IfcLibraryReference >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(4,attr);} } +void Ifc2x3::IfcLibraryInformation::setLibraryReference(boost::optional< aggregate_of< ::Ifc2x3::IfcLibraryReference >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcLibraryInformation::declaration() const { return *IFC2X3_IfcLibraryInformation_type; } @@ -12413,13 +12413,13 @@ Ifc2x3::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc2x3::I // Function implementations for IfcLightSource boost::optional< std::string > Ifc2x3::IfcLightSource::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc2x3::IfcColourRgb* Ifc2x3::IfcLightSource::LightColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc2x3::IfcColourRgb>(true); } void Ifc2x3::IfcLightSource::setLightColour(::Ifc2x3::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcLightSource::AmbientIntensity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcLightSource::Intensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcLightSource::declaration() const { return *IFC2X3_IfcLightSource_type; } @@ -12487,7 +12487,7 @@ Ifc2x3::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< std: ::Ifc2x3::IfcDirection* Ifc2x3::IfcLightSourceSpot::Orientation() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc2x3::IfcDirection>(true); } void Ifc2x3::IfcLightSourceSpot::setOrientation(::Ifc2x3::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcLightSourceSpot::ConcentrationExponent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } double Ifc2x3::IfcLightSourceSpot::SpreadAngle() const { double v = *data_->getArgument(11); return v; } void Ifc2x3::IfcLightSourceSpot::setSpreadAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } double Ifc2x3::IfcLightSourceSpot::BeamWidthAngle() const { double v = *data_->getArgument(12); return v; } @@ -12535,13 +12535,13 @@ Ifc2x3::IfcLocalPlacement::IfcLocalPlacement(::Ifc2x3::IfcObjectPlacement* v1_Pl int Ifc2x3::IfcLocalTime::HourComponent() const { int v = *data_->getArgument(0); return v; } void Ifc2x3::IfcLocalTime::setHourComponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< int > Ifc2x3::IfcLocalTime::MinuteComponent() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcLocalTime::setMinuteComponent(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcLocalTime::setMinuteComponent(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcLocalTime::SecondComponent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcLocalTime::setSecondComponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcLocalTime::setSecondComponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc2x3::IfcCoordinatedUniversalTimeOffset* Ifc2x3::IfcLocalTime::Zone() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc2x3::IfcCoordinatedUniversalTimeOffset>(true); } void Ifc2x3::IfcLocalTime::setZone(::Ifc2x3::IfcCoordinatedUniversalTimeOffset* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc2x3::IfcLocalTime::DaylightSavingOffset() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcLocalTime::setDaylightSavingOffset(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcLocalTime::setDaylightSavingOffset(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcLocalTime::declaration() const { return *IFC2X3_IfcLocalTime_type; } @@ -12619,7 +12619,7 @@ void Ifc2x3::IfcMaterialLayer::setMaterial(::Ifc2x3::IfcMaterial* v) { {IfcWrite double Ifc2x3::IfcMaterialLayer::LayerThickness() const { double v = *data_->getArgument(1); return v; } void Ifc2x3::IfcMaterialLayer::setLayerThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< boost::logic::tribool > Ifc2x3::IfcMaterialLayer::IsVentilated() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } boost::logic::tribool v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc2x3::IfcMaterialLayerSet::list::ptr Ifc2x3::IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(IFC2X3_IfcMaterialLayerSet_type, 0)->as(); } @@ -12632,7 +12632,7 @@ Ifc2x3::IfcMaterialLayer::IfcMaterialLayer(::Ifc2x3::IfcMaterial* v1_Material, d aggregate_of< ::Ifc2x3::IfcMaterialLayer >::ptr Ifc2x3::IfcMaterialLayerSet::MaterialLayers() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc2x3::IfcMaterialLayer >(); } void Ifc2x3::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc2x3::IfcMaterialLayer >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcMaterialLayerSet::LayerSetName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc2x3::IfcMaterialLayerSet::declaration() const { return *IFC2X3_IfcMaterialLayerSet_type; } @@ -12690,17 +12690,17 @@ Ifc2x3::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc2x3::IfcValue* v1_ValueCompo // Function implementations for IfcMechanicalConcreteMaterialProperties boost::optional< double > Ifc2x3::IfcMechanicalConcreteMaterialProperties::CompressiveStrength() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setCompressiveStrength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setCompressiveStrength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalConcreteMaterialProperties::MaxAggregateSize() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setMaxAggregateSize(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setMaxAggregateSize(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc2x3::IfcMechanicalConcreteMaterialProperties::AdmixturesDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setAdmixturesDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setAdmixturesDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc2x3::IfcMechanicalConcreteMaterialProperties::Workability() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setWorkability(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setWorkability(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalConcreteMaterialProperties::ProtectivePoreRatio() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setProtectivePoreRatio(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setProtectivePoreRatio(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc2x3::IfcMechanicalConcreteMaterialProperties::WaterImpermeability() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setWaterImpermeability(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcMechanicalConcreteMaterialProperties::setWaterImpermeability(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc2x3::IfcMechanicalConcreteMaterialProperties::declaration() const { return *IFC2X3_IfcMechanicalConcreteMaterialProperties_type; } @@ -12710,9 +12710,9 @@ Ifc2x3::IfcMechanicalConcreteMaterialProperties::IfcMechanicalConcreteMaterialPr // Function implementations for IfcMechanicalFastener boost::optional< double > Ifc2x3::IfcMechanicalFastener::NominalDiameter() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalFastener::NominalLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcMechanicalFastener::declaration() const { return *IFC2X3_IfcMechanicalFastener_type; } @@ -12730,15 +12730,15 @@ Ifc2x3::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_Glob // Function implementations for IfcMechanicalMaterialProperties boost::optional< double > Ifc2x3::IfcMechanicalMaterialProperties::DynamicViscosity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcMechanicalMaterialProperties::setDynamicViscosity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcMechanicalMaterialProperties::setDynamicViscosity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalMaterialProperties::YoungModulus() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcMechanicalMaterialProperties::setYoungModulus(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcMechanicalMaterialProperties::setYoungModulus(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalMaterialProperties::ShearModulus() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcMechanicalMaterialProperties::setShearModulus(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcMechanicalMaterialProperties::setShearModulus(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalMaterialProperties::PoissonRatio() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcMechanicalMaterialProperties::setPoissonRatio(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcMechanicalMaterialProperties::setPoissonRatio(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalMaterialProperties::ThermalExpansionCoefficient() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcMechanicalMaterialProperties::setThermalExpansionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcMechanicalMaterialProperties::setThermalExpansionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc2x3::IfcMechanicalMaterialProperties::declaration() const { return *IFC2X3_IfcMechanicalMaterialProperties_type; } @@ -12748,19 +12748,19 @@ Ifc2x3::IfcMechanicalMaterialProperties::IfcMechanicalMaterialProperties(::Ifc2x // Function implementations for IfcMechanicalSteelMaterialProperties boost::optional< double > Ifc2x3::IfcMechanicalSteelMaterialProperties::YieldStress() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcMechanicalSteelMaterialProperties::setYieldStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcMechanicalSteelMaterialProperties::setYieldStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalSteelMaterialProperties::UltimateStress() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcMechanicalSteelMaterialProperties::setUltimateStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcMechanicalSteelMaterialProperties::setUltimateStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalSteelMaterialProperties::UltimateStrain() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcMechanicalSteelMaterialProperties::setUltimateStrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcMechanicalSteelMaterialProperties::setUltimateStrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalSteelMaterialProperties::HardeningModule() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcMechanicalSteelMaterialProperties::setHardeningModule(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcMechanicalSteelMaterialProperties::setHardeningModule(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalSteelMaterialProperties::ProportionalStress() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcMechanicalSteelMaterialProperties::setProportionalStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcMechanicalSteelMaterialProperties::setProportionalStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcMechanicalSteelMaterialProperties::PlasticStrain() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcMechanicalSteelMaterialProperties::setPlasticStrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcMechanicalSteelMaterialProperties::setPlasticStrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcRelaxation >::ptr > Ifc2x3::IfcMechanicalSteelMaterialProperties::Relaxations() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(12); return es->as< ::Ifc2x3::IfcRelaxation >(); } -void Ifc2x3::IfcMechanicalSteelMaterialProperties::setRelaxations(boost::optional< aggregate_of< ::Ifc2x3::IfcRelaxation >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(12,attr);} } +void Ifc2x3::IfcMechanicalSteelMaterialProperties::setRelaxations(boost::optional< aggregate_of< ::Ifc2x3::IfcRelaxation >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc2x3::IfcMechanicalSteelMaterialProperties::declaration() const { return *IFC2X3_IfcMechanicalSteelMaterialProperties_type; } @@ -12790,7 +12790,7 @@ Ifc2x3::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc2x3::IfcOwner ::Ifc2x3::IfcBenchmarkEnum::Value Ifc2x3::IfcMetric::Benchmark() const { return ::Ifc2x3::IfcBenchmarkEnum::FromString(*data_->getArgument(7)); } void Ifc2x3::IfcMetric::setBenchmark(::Ifc2x3::IfcBenchmarkEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcBenchmarkEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc2x3::IfcMetric::ValueSource() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc2x3::IfcMetricValueSelect* Ifc2x3::IfcMetric::DataValue() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc2x3::IfcMetricValueSelect>(true); } void Ifc2x3::IfcMetric::setDataValue(::Ifc2x3::IfcMetricValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -12826,7 +12826,7 @@ void Ifc2x3::IfcMove::setMoveFrom(::Ifc2x3::IfcSpatialStructureElement* v) { {If ::Ifc2x3::IfcSpatialStructureElement* Ifc2x3::IfcMove::MoveTo() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc2x3::IfcSpatialStructureElement>(true); } void Ifc2x3::IfcMove::setMoveTo(::Ifc2x3::IfcSpatialStructureElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc2x3::IfcMove::PunchList() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(12); return v; } -void Ifc2x3::IfcMove::setPunchList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc2x3::IfcMove::setPunchList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc2x3::IfcMove::declaration() const { return *IFC2X3_IfcMove_type; } @@ -12848,7 +12848,7 @@ Ifc2x3::IfcNamedUnit::IfcNamedUnit(::Ifc2x3::IfcDimensionalExponents* v1_Dimensi // Function implementations for IfcObject boost::optional< std::string > Ifc2x3::IfcObject::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc2x3::IfcRelDefines::list::ptr Ifc2x3::IfcObject::IsDefinedBy() const { return data_->getInverse(IFC2X3_IfcRelDefines_type, 4)->as(); } @@ -12887,7 +12887,7 @@ void Ifc2x3::IfcObjective::setResultValues(::Ifc2x3::IfcMetric* v) { {IfcWrite:: ::Ifc2x3::IfcObjectiveEnum::Value Ifc2x3::IfcObjective::ObjectiveQualifier() const { return ::Ifc2x3::IfcObjectiveEnum::FromString(*data_->getArgument(9)); } void Ifc2x3::IfcObjective::setObjectiveQualifier(::Ifc2x3::IfcObjectiveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcObjectiveEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc2x3::IfcObjective::UserDefinedQualifier() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc2x3::IfcObjective::declaration() const { return *IFC2X3_IfcObjective_type; } @@ -12964,23 +12964,23 @@ Ifc2x3::IfcOpeningElement::IfcOpeningElement(std::string v1_GlobalId, ::Ifc2x3:: // Function implementations for IfcOpticalMaterialProperties boost::optional< double > Ifc2x3::IfcOpticalMaterialProperties::VisibleTransmittance() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcOpticalMaterialProperties::setVisibleTransmittance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcOpticalMaterialProperties::setVisibleTransmittance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcOpticalMaterialProperties::SolarTransmittance() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcOpticalMaterialProperties::setSolarTransmittance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcOpticalMaterialProperties::setSolarTransmittance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcOpticalMaterialProperties::ThermalIrTransmittance() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcOpticalMaterialProperties::setThermalIrTransmittance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcOpticalMaterialProperties::setThermalIrTransmittance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcOpticalMaterialProperties::ThermalIrEmissivityBack() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcOpticalMaterialProperties::setThermalIrEmissivityBack(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcOpticalMaterialProperties::setThermalIrEmissivityBack(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcOpticalMaterialProperties::ThermalIrEmissivityFront() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcOpticalMaterialProperties::setThermalIrEmissivityFront(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcOpticalMaterialProperties::setThermalIrEmissivityFront(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcOpticalMaterialProperties::VisibleReflectanceBack() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcOpticalMaterialProperties::setVisibleReflectanceBack(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcOpticalMaterialProperties::setVisibleReflectanceBack(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcOpticalMaterialProperties::VisibleReflectanceFront() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcOpticalMaterialProperties::setVisibleReflectanceFront(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcOpticalMaterialProperties::setVisibleReflectanceFront(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcOpticalMaterialProperties::SolarReflectanceFront() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcOpticalMaterialProperties::setSolarReflectanceFront(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcOpticalMaterialProperties::setSolarReflectanceFront(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcOpticalMaterialProperties::SolarReflectanceBack() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcOpticalMaterialProperties::setSolarReflectanceBack(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcOpticalMaterialProperties::setSolarReflectanceBack(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcOpticalMaterialProperties::declaration() const { return *IFC2X3_IfcOpticalMaterialProperties_type; } @@ -13000,15 +13000,15 @@ Ifc2x3::IfcOrderAction::IfcOrderAction(std::string v1_GlobalId, ::Ifc2x3::IfcOwn // Function implementations for IfcOrganization boost::optional< std::string > Ifc2x3::IfcOrganization::Id() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcOrganization::setId(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcOrganization::setId(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } std::string Ifc2x3::IfcOrganization::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc2x3::IfcOrganization::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcOrganization::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcActorRole >::ptr > Ifc2x3::IfcOrganization::Roles() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc2x3::IfcActorRole >(); } -void Ifc2x3::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc2x3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(3,attr);} } +void Ifc2x3::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc2x3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcAddress >::ptr > Ifc2x3::IfcOrganization::Addresses() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc2x3::IfcAddress >(); } -void Ifc2x3::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc2x3::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(4,attr);} } +void Ifc2x3::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc2x3::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(4,attr);} } ::Ifc2x3::IfcOrganizationRelationship::list::ptr Ifc2x3::IfcOrganization::IsRelatedBy() const { return data_->getInverse(IFC2X3_IfcOrganizationRelationship_type, 3)->as(); } ::Ifc2x3::IfcOrganizationRelationship::list::ptr Ifc2x3::IfcOrganization::Relates() const { return data_->getInverse(IFC2X3_IfcOrganizationRelationship_type, 2)->as(); } @@ -13023,7 +13023,7 @@ Ifc2x3::IfcOrganization::IfcOrganization(boost::optional< std::string > v1_Id, s std::string Ifc2x3::IfcOrganizationRelationship::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc2x3::IfcOrganizationRelationship::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcOrganizationRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcOrganizationRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcOrganizationRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcOrganization* Ifc2x3::IfcOrganizationRelationship::RelatingOrganization() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc2x3::IfcOrganization>(true); } void Ifc2x3::IfcOrganizationRelationship::setRelatingOrganization(::Ifc2x3::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } aggregate_of< ::Ifc2x3::IfcOrganization >::ptr Ifc2x3::IfcOrganizationRelationship::RelatedOrganizations() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc2x3::IfcOrganization >(); } @@ -13063,11 +13063,11 @@ void Ifc2x3::IfcOwnerHistory::setOwningUser(::Ifc2x3::IfcPersonAndOrganization* ::Ifc2x3::IfcApplication* Ifc2x3::IfcOwnerHistory::OwningApplication() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc2x3::IfcApplication>(true); } void Ifc2x3::IfcOwnerHistory::setOwningApplication(::Ifc2x3::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc2x3::IfcStateEnum::Value > Ifc2x3::IfcOwnerHistory::State() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc2x3::IfcStateEnum::FromString(*data_->getArgument(2)); } -void Ifc2x3::IfcOwnerHistory::setState(boost::optional< ::Ifc2x3::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcStateEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc2x3::IfcOwnerHistory::setState(boost::optional< ::Ifc2x3::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcStateEnum::ToString(*v)));}data_->setArgument(2,attr);} } ::Ifc2x3::IfcChangeActionEnum::Value Ifc2x3::IfcOwnerHistory::ChangeAction() const { return ::Ifc2x3::IfcChangeActionEnum::FromString(*data_->getArgument(3)); } void Ifc2x3::IfcOwnerHistory::setChangeAction(::Ifc2x3::IfcChangeActionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcChangeActionEnum::ToString(v)));data_->setArgument(3,attr);} } boost::optional< int > Ifc2x3::IfcOwnerHistory::LastModifiedDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc2x3::IfcPersonAndOrganization* Ifc2x3::IfcOwnerHistory::LastModifyingUser() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc2x3::IfcPersonAndOrganization>(true); } void Ifc2x3::IfcOwnerHistory::setLastModifyingUser(::Ifc2x3::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc2x3::IfcApplication* Ifc2x3::IfcOwnerHistory::LastModifyingApplication() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc2x3::IfcApplication>(true); } @@ -13117,9 +13117,9 @@ void Ifc2x3::IfcPermeableCoveringProperties::setOperationType(::Ifc2x3::IfcPerme ::Ifc2x3::IfcWindowPanelPositionEnum::Value Ifc2x3::IfcPermeableCoveringProperties::PanelPosition() const { return ::Ifc2x3::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc2x3::IfcPermeableCoveringProperties::setPanelPosition(::Ifc2x3::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcPermeableCoveringProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcPermeableCoveringProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc2x3::IfcShapeAspect* Ifc2x3::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc2x3::IfcShapeAspect>(true); } void Ifc2x3::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc2x3::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -13141,21 +13141,21 @@ Ifc2x3::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* // Function implementations for IfcPerson boost::optional< std::string > Ifc2x3::IfcPerson::Id() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcPerson::setId(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcPerson::setId(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcPerson::FamilyName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcPerson::GivenName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc2x3::IfcPerson::MiddleNames() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc2x3::IfcPerson::PrefixTitles() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc2x3::IfcPerson::SuffixTitles() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcActorRole >::ptr > Ifc2x3::IfcPerson::Roles() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc2x3::IfcActorRole >(); } -void Ifc2x3::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc2x3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc2x3::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc2x3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcAddress >::ptr > Ifc2x3::IfcPerson::Addresses() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc2x3::IfcAddress >(); } -void Ifc2x3::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc2x3::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc2x3::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc2x3::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc2x3::IfcPersonAndOrganization::list::ptr Ifc2x3::IfcPerson::EngagedIn() const { return data_->getInverse(IFC2X3_IfcPersonAndOrganization_type, 0)->as(); } @@ -13170,7 +13170,7 @@ void Ifc2x3::IfcPersonAndOrganization::setThePerson(::Ifc2x3::IfcPerson* v) { {I ::Ifc2x3::IfcOrganization* Ifc2x3::IfcPersonAndOrganization::TheOrganization() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc2x3::IfcOrganization>(true); } void Ifc2x3::IfcPersonAndOrganization::setTheOrganization(::Ifc2x3::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcActorRole >::ptr > Ifc2x3::IfcPersonAndOrganization::Roles() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc2x3::IfcActorRole >(); } -void Ifc2x3::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc2x3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc2x3::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc2x3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc2x3::IfcPersonAndOrganization::declaration() const { return *IFC2X3_IfcPersonAndOrganization_type; } @@ -13184,9 +13184,9 @@ void Ifc2x3::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::Ifc2x3 std::string Ifc2x3::IfcPhysicalComplexQuantity::Discrimination() const { std::string v = *data_->getArgument(3); return v; } void Ifc2x3::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc2x3::IfcPhysicalComplexQuantity::Quality() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc2x3::IfcPhysicalComplexQuantity::Usage() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc2x3::IfcPhysicalComplexQuantity::declaration() const { return *IFC2X3_IfcPhysicalComplexQuantity_type; } @@ -13198,7 +13198,7 @@ Ifc2x3::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v1_Na std::string Ifc2x3::IfcPhysicalQuantity::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc2x3::IfcPhysicalQuantity::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcPhysicalQuantity::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcPhysicalComplexQuantity::list::ptr Ifc2x3::IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(IFC2X3_IfcPhysicalComplexQuantity_type, 2)->as(); } @@ -13221,7 +13221,7 @@ Ifc2x3::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_Name ::Ifc2x3::IfcPileTypeEnum::Value Ifc2x3::IfcPile::PredefinedType() const { return ::Ifc2x3::IfcPileTypeEnum::FromString(*data_->getArgument(8)); } void Ifc2x3::IfcPile::setPredefinedType(::Ifc2x3::IfcPileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcPileTypeEnum::ToString(v)));data_->setArgument(8,attr);} } boost::optional< ::Ifc2x3::IfcPileConstructionEnum::Value > Ifc2x3::IfcPile::ConstructionType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc2x3::IfcPileConstructionEnum::FromString(*data_->getArgument(9)); } -void Ifc2x3::IfcPile::setConstructionType(boost::optional< ::Ifc2x3::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcPileConstructionEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc2x3::IfcPile::setConstructionType(boost::optional< ::Ifc2x3::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcPileConstructionEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcPile::declaration() const { return *IFC2X3_IfcPile_type; } @@ -13402,19 +13402,19 @@ Ifc2x3::IfcPort::IfcPort(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_ // Function implementations for IfcPostalAddress boost::optional< std::string > Ifc2x3::IfcPostalAddress::InternalLocation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc2x3::IfcPostalAddress::AddressLines() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc2x3::IfcPostalAddress::PostalBox() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc2x3::IfcPostalAddress::Town() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc2x3::IfcPostalAddress::Region() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc2x3::IfcPostalAddress::PostalCode() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc2x3::IfcPostalAddress::Country() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcPostalAddress::declaration() const { return *IFC2X3_IfcPostalAddress_type; } @@ -13492,11 +13492,11 @@ Ifc2x3::IfcPreDefinedTextFont::IfcPreDefinedTextFont(std::string v1_Name) : IfcP std::string Ifc2x3::IfcPresentationLayerAssignment::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc2x3::IfcPresentationLayerAssignment::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcPresentationLayerAssignment::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of_instance::ptr Ifc2x3::IfcPresentationLayerAssignment::AssignedItems() const { aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } void Ifc2x3::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc2x3::IfcPresentationLayerAssignment::Identifier() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcPresentationLayerAssignment::declaration() const { return *IFC2X3_IfcPresentationLayerAssignment_type; } @@ -13522,7 +13522,7 @@ Ifc2x3::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::string // Function implementations for IfcPresentationStyle boost::optional< std::string > Ifc2x3::IfcPresentationStyle::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc2x3::IfcPresentationStyle::declaration() const { return *IFC2X3_IfcPresentationStyle_type; } @@ -13546,7 +13546,7 @@ void Ifc2x3::IfcProcedure::setProcedureID(std::string v) { {IfcWrite::IfcWriteAr ::Ifc2x3::IfcProcedureTypeEnum::Value Ifc2x3::IfcProcedure::ProcedureType() const { return ::Ifc2x3::IfcProcedureTypeEnum::FromString(*data_->getArgument(6)); } void Ifc2x3::IfcProcedure::setProcedureType(::Ifc2x3::IfcProcedureTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcProcedureTypeEnum::ToString(v)));data_->setArgument(6,attr);} } boost::optional< std::string > Ifc2x3::IfcProcedure::UserDefinedProcedureType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcProcedure::setUserDefinedProcedureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcProcedure::setUserDefinedProcedureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcProcedure::declaration() const { return *IFC2X3_IfcProcedure_type; } @@ -13590,9 +13590,9 @@ Ifc2x3::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional< st // Function implementations for IfcProductRepresentation boost::optional< std::string > Ifc2x3::IfcProductRepresentation::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcProductRepresentation::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc2x3::IfcRepresentation >::ptr Ifc2x3::IfcProductRepresentation::Representations() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc2x3::IfcRepresentation >(); } void Ifc2x3::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc2x3::IfcRepresentation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -13604,13 +13604,13 @@ Ifc2x3::IfcProductRepresentation::IfcProductRepresentation(boost::optional< std: // Function implementations for IfcProductsOfCombustionProperties boost::optional< double > Ifc2x3::IfcProductsOfCombustionProperties::SpecificHeatCapacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcProductsOfCombustionProperties::setSpecificHeatCapacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcProductsOfCombustionProperties::setSpecificHeatCapacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcProductsOfCombustionProperties::N20Content() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcProductsOfCombustionProperties::setN20Content(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcProductsOfCombustionProperties::setN20Content(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcProductsOfCombustionProperties::COContent() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcProductsOfCombustionProperties::setCOContent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcProductsOfCombustionProperties::setCOContent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcProductsOfCombustionProperties::CO2Content() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcProductsOfCombustionProperties::setCO2Content(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcProductsOfCombustionProperties::setCO2Content(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcProductsOfCombustionProperties::declaration() const { return *IFC2X3_IfcProductsOfCombustionProperties_type; } @@ -13622,7 +13622,7 @@ Ifc2x3::IfcProductsOfCombustionProperties::IfcProductsOfCombustionProperties(::I ::Ifc2x3::IfcProfileTypeEnum::Value Ifc2x3::IfcProfileDef::ProfileType() const { return ::Ifc2x3::IfcProfileTypeEnum::FromString(*data_->getArgument(0)); } void Ifc2x3::IfcProfileDef::setProfileType(::Ifc2x3::IfcProfileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcProfileTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcProfileDef::ProfileName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc2x3::IfcProfileDef::declaration() const { return *IFC2X3_IfcProfileDef_type; } @@ -13632,7 +13632,7 @@ Ifc2x3::IfcProfileDef::IfcProfileDef(::Ifc2x3::IfcProfileTypeEnum::Value v1_Prof // Function implementations for IfcProfileProperties boost::optional< std::string > Ifc2x3::IfcProfileProperties::ProfileName() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcProfileProperties::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcProfileProperties::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc2x3::IfcProfileDef* Ifc2x3::IfcProfileProperties::ProfileDefinition() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc2x3::IfcProfileDef>(true); } void Ifc2x3::IfcProfileProperties::setProfileDefinition(::Ifc2x3::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } @@ -13644,9 +13644,9 @@ Ifc2x3::IfcProfileProperties::IfcProfileProperties(boost::optional< std::string // Function implementations for IfcProject boost::optional< std::string > Ifc2x3::IfcProject::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcProject::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcProject::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc2x3::IfcProject::Phase() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcProject::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcProject::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } aggregate_of< ::Ifc2x3::IfcRepresentationContext >::ptr Ifc2x3::IfcProject::RepresentationContexts() const { aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc2x3::IfcRepresentationContext >(); } void Ifc2x3::IfcProject::setRepresentationContexts(aggregate_of< ::Ifc2x3::IfcRepresentationContext >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} } ::Ifc2x3::IfcUnitAssignment* Ifc2x3::IfcProject::UnitsInContext() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc2x3::IfcUnitAssignment>(true); } @@ -13664,7 +13664,7 @@ void Ifc2x3::IfcProjectOrder::setID(std::string v) { {IfcWrite::IfcWriteArgument ::Ifc2x3::IfcProjectOrderTypeEnum::Value Ifc2x3::IfcProjectOrder::PredefinedType() const { return ::Ifc2x3::IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); } void Ifc2x3::IfcProjectOrder::setPredefinedType(::Ifc2x3::IfcProjectOrderTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcProjectOrderTypeEnum::ToString(v)));data_->setArgument(6,attr);} } boost::optional< std::string > Ifc2x3::IfcProjectOrder::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcProjectOrder::declaration() const { return *IFC2X3_IfcProjectOrder_type; } @@ -13704,7 +13704,7 @@ Ifc2x3::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, ::If std::string Ifc2x3::IfcProperty::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc2x3::IfcProperty::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcProperty::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcPropertyDependencyRelationship::list::ptr Ifc2x3::IfcProperty::PropertyForDependance() const { return data_->getInverse(IFC2X3_IfcPropertyDependencyRelationship_type, 0)->as(); } ::Ifc2x3::IfcPropertyDependencyRelationship::list::ptr Ifc2x3::IfcProperty::PropertyDependsOn() const { return data_->getInverse(IFC2X3_IfcPropertyDependencyRelationship_type, 1)->as(); } @@ -13735,9 +13735,9 @@ void Ifc2x3::IfcPropertyConstraintRelationship::setRelatingConstraint(::Ifc2x3:: aggregate_of< ::Ifc2x3::IfcProperty >::ptr Ifc2x3::IfcPropertyConstraintRelationship::RelatedProperties() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc2x3::IfcProperty >(); } void Ifc2x3::IfcPropertyConstraintRelationship::setRelatedProperties(aggregate_of< ::Ifc2x3::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcPropertyConstraintRelationship::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcPropertyConstraintRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcPropertyConstraintRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc2x3::IfcPropertyConstraintRelationship::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcPropertyConstraintRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcPropertyConstraintRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcPropertyConstraintRelationship::declaration() const { return *IFC2X3_IfcPropertyConstraintRelationship_type; } @@ -13760,11 +13760,11 @@ void Ifc2x3::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc2x3::I ::Ifc2x3::IfcProperty* Ifc2x3::IfcPropertyDependencyRelationship::DependantProperty() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc2x3::IfcProperty>(true); } void Ifc2x3::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc2x3::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcPropertyDependencyRelationship::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcPropertyDependencyRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcPropertyDependencyRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc2x3::IfcPropertyDependencyRelationship::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcPropertyDependencyRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcPropertyDependencyRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc2x3::IfcPropertyDependencyRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcPropertyDependencyRelationship::declaration() const { return *IFC2X3_IfcPropertyDependencyRelationship_type; } @@ -13812,7 +13812,7 @@ Ifc2x3::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boost::o // Function implementations for IfcPropertyReferenceValue boost::optional< std::string > Ifc2x3::IfcPropertyReferenceValue::UsageName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc2x3::IfcObjectReferenceSelect* Ifc2x3::IfcPropertyReferenceValue::PropertyReference() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc2x3::IfcObjectReferenceSelect>(true); } void Ifc2x3::IfcPropertyReferenceValue::setPropertyReference(::Ifc2x3::IfcObjectReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -13860,7 +13860,7 @@ void Ifc2x3::IfcPropertyTableValue::setDefiningValues(aggregate_of_instance::ptr aggregate_of_instance::ptr Ifc2x3::IfcPropertyTableValue::DefinedValues() const { aggregate_of_instance::ptr v = *data_->getArgument(3); return v; } void Ifc2x3::IfcPropertyTableValue::setDefinedValues(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc2x3::IfcPropertyTableValue::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc2x3::IfcUnit* Ifc2x3::IfcPropertyTableValue::DefiningUnit() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc2x3::IfcUnit>(true); } void Ifc2x3::IfcPropertyTableValue::setDefiningUnit(::Ifc2x3::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc2x3::IfcUnit* Ifc2x3::IfcPropertyTableValue::DefinedUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc2x3::IfcUnit>(true); } @@ -13886,7 +13886,7 @@ Ifc2x3::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_GlobalId ::Ifc2x3::IfcObjectTypeEnum::Value Ifc2x3::IfcProxy::ProxyType() const { return ::Ifc2x3::IfcObjectTypeEnum::FromString(*data_->getArgument(7)); } void Ifc2x3::IfcProxy::setProxyType(::Ifc2x3::IfcObjectTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcObjectTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc2x3::IfcProxy::Tag() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcProxy::declaration() const { return *IFC2X3_IfcProxy_type; } @@ -13974,7 +13974,7 @@ Ifc2x3::IfcRadiusDimension::IfcRadiusDimension(aggregate_of_instance::ptr v1_Con // Function implementations for IfcRailing boost::optional< ::Ifc2x3::IfcRailingTypeEnum::Value > Ifc2x3::IfcRailing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc2x3::IfcRailingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc2x3::IfcRailing::setPredefinedType(boost::optional< ::Ifc2x3::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcRailingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc2x3::IfcRailing::setPredefinedType(boost::optional< ::Ifc2x3::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcRailingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcRailing::declaration() const { return *IFC2X3_IfcRailing_type; } @@ -14034,9 +14034,9 @@ Ifc2x3::IfcRationalBezierCurve::IfcRationalBezierCurve(int v1_Degree, aggregate_ double Ifc2x3::IfcRectangleHollowProfileDef::WallThickness() const { double v = *data_->getArgument(5); return v; } void Ifc2x3::IfcRectangleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcRectangleHollowProfileDef::declaration() const { return *IFC2X3_IfcRectangleHollowProfileDef_type; } @@ -14098,9 +14098,9 @@ void Ifc2x3::IfcReferencesValueDocument::setReferencedDocument(::Ifc2x3::IfcDocu aggregate_of< ::Ifc2x3::IfcAppliedValue >::ptr Ifc2x3::IfcReferencesValueDocument::ReferencingValues() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc2x3::IfcAppliedValue >(); } void Ifc2x3::IfcReferencesValueDocument::setReferencingValues(aggregate_of< ::Ifc2x3::IfcAppliedValue >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcReferencesValueDocument::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcReferencesValueDocument::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcReferencesValueDocument::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc2x3::IfcReferencesValueDocument::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcReferencesValueDocument::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcReferencesValueDocument::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcReferencesValueDocument::declaration() const { return *IFC2X3_IfcReferencesValueDocument_type; } @@ -14126,13 +14126,13 @@ void Ifc2x3::IfcReinforcementBarProperties::setTotalCrossSectionArea(double v) { std::string Ifc2x3::IfcReinforcementBarProperties::SteelGrade() const { std::string v = *data_->getArgument(1); return v; } void Ifc2x3::IfcReinforcementBarProperties::setSteelGrade(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value > Ifc2x3::IfcReinforcementBarProperties::BarSurface() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc2x3::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); } -void Ifc2x3::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc2x3::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcReinforcementBarProperties::EffectiveDepth() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcReinforcementBarProperties::NominalBarDiameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcReinforcementBarProperties::BarCount() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc2x3::IfcReinforcementBarProperties::declaration() const { return *IFC2X3_IfcReinforcementBarProperties_type; } @@ -14142,7 +14142,7 @@ Ifc2x3::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double v1_T // Function implementations for IfcReinforcementDefinitionProperties boost::optional< std::string > Ifc2x3::IfcReinforcementDefinitionProperties::DefinitionType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc2x3::IfcSectionReinforcementProperties >::ptr Ifc2x3::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc2x3::IfcSectionReinforcementProperties >(); } void Ifc2x3::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc2x3::IfcSectionReinforcementProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -14158,11 +14158,11 @@ void Ifc2x3::IfcReinforcingBar::setNominalDiameter(double v) { {IfcWrite::IfcWri double Ifc2x3::IfcReinforcingBar::CrossSectionArea() const { double v = *data_->getArgument(10); return v; } void Ifc2x3::IfcReinforcingBar::setCrossSectionArea(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcReinforcingBar::BarLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } ::Ifc2x3::IfcReinforcingBarRoleEnum::Value Ifc2x3::IfcReinforcingBar::BarRole() const { return ::Ifc2x3::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(12)); } void Ifc2x3::IfcReinforcingBar::setBarRole(::Ifc2x3::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(12,attr);} } boost::optional< ::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value > Ifc2x3::IfcReinforcingBar::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc2x3::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc2x3::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc2x3::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc2x3::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc2x3::IfcReinforcingBar::declaration() const { return *IFC2X3_IfcReinforcingBar_type; } @@ -14172,7 +14172,7 @@ Ifc2x3::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc2x3:: // Function implementations for IfcReinforcingElement boost::optional< std::string > Ifc2x3::IfcReinforcingElement::SteelGrade() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcReinforcingElement::declaration() const { return *IFC2X3_IfcReinforcingElement_type; } @@ -14182,9 +14182,9 @@ Ifc2x3::IfcReinforcingElement::IfcReinforcingElement(std::string v1_GlobalId, :: // Function implementations for IfcReinforcingMesh boost::optional< double > Ifc2x3::IfcReinforcingMesh::MeshLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcReinforcingMesh::MeshWidth() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } double Ifc2x3::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { double v = *data_->getArgument(11); return v; } void Ifc2x3::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } double Ifc2x3::IfcReinforcingMesh::TransverseBarNominalDiameter() const { double v = *data_->getArgument(12); return v; } @@ -14216,7 +14216,7 @@ Ifc2x3::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc2x3::If aggregate_of< ::Ifc2x3::IfcObjectDefinition >::ptr Ifc2x3::IfcRelAssigns::RelatedObjects() const { aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc2x3::IfcObjectDefinition >(); } void Ifc2x3::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc2x3::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} } boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > Ifc2x3::IfcRelAssigns::RelatedObjectsType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc2x3::IfcObjectTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc2x3::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcObjectTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc2x3::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc2x3::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcObjectTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc2x3::IfcRelAssigns::declaration() const { return *IFC2X3_IfcRelAssigns_type; } @@ -14500,7 +14500,7 @@ void Ifc2x3::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc2x3::IfcBo ::Ifc2x3::IfcStructuralConnectionCondition* Ifc2x3::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc2x3::IfcStructuralConnectionCondition>(true); } void Ifc2x3::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc2x3::IfcStructuralConnectionCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcRelConnectsStructuralMember::SupportedLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc2x3::IfcAxis2Placement3D* Ifc2x3::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc2x3::IfcAxis2Placement3D>(true); } void Ifc2x3::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc2x3::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -14524,7 +14524,7 @@ Ifc2x3::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std::stri aggregate_of< ::Ifc2x3::IfcElement >::ptr Ifc2x3::IfcRelConnectsWithRealizingElements::RealizingElements() const { aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc2x3::IfcElement >(); } void Ifc2x3::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc2x3::IfcElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} } boost::optional< std::string > Ifc2x3::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcRelConnectsWithRealizingElements::declaration() const { return *IFC2X3_IfcRelConnectsWithRealizingElements_type; } @@ -14636,9 +14636,9 @@ Ifc2x3::IfcRelFlowControlElements::IfcRelFlowControlElements(std::string v1_Glob // Function implementations for IfcRelInteractionRequirements boost::optional< double > Ifc2x3::IfcRelInteractionRequirements::DailyInteraction() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcRelInteractionRequirements::setDailyInteraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcRelInteractionRequirements::setDailyInteraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcRelInteractionRequirements::ImportanceRating() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcRelInteractionRequirements::setImportanceRating(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcRelInteractionRequirements::setImportanceRating(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc2x3::IfcSpatialStructureElement* Ifc2x3::IfcRelInteractionRequirements::LocationOfInteraction() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc2x3::IfcSpatialStructureElement>(true); } void Ifc2x3::IfcRelInteractionRequirements::setLocationOfInteraction(::Ifc2x3::IfcSpatialStructureElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } ::Ifc2x3::IfcSpaceProgram* Ifc2x3::IfcRelInteractionRequirements::RelatedSpaceProgram() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc2x3::IfcSpaceProgram>(true); } @@ -14792,9 +14792,9 @@ Ifc2x3::IfcRelaxation::IfcRelaxation(double v1_RelaxationValue, double v2_Initia ::Ifc2x3::IfcRepresentationContext* Ifc2x3::IfcRepresentation::ContextOfItems() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc2x3::IfcRepresentationContext>(true); } void Ifc2x3::IfcRepresentation::setContextOfItems(::Ifc2x3::IfcRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcRepresentation::RepresentationIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcRepresentation::RepresentationType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } aggregate_of< ::Ifc2x3::IfcRepresentationItem >::ptr Ifc2x3::IfcRepresentation::Items() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc2x3::IfcRepresentationItem >(); } void Ifc2x3::IfcRepresentation::setItems(aggregate_of< ::Ifc2x3::IfcRepresentationItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } @@ -14809,9 +14809,9 @@ Ifc2x3::IfcRepresentation::IfcRepresentation(::Ifc2x3::IfcRepresentationContext* // Function implementations for IfcRepresentationContext boost::optional< std::string > Ifc2x3::IfcRepresentationContext::ContextIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcRepresentationContext::ContextType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcRepresentation::list::ptr Ifc2x3::IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(IFC2X3_IfcRepresentation_type, 0)->as(); } @@ -14866,13 +14866,13 @@ Ifc2x3::IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(::Ifc2x3::IfcProfileDef* v1_S // Function implementations for IfcRibPlateProfileProperties boost::optional< double > Ifc2x3::IfcRibPlateProfileProperties::Thickness() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcRibPlateProfileProperties::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcRibPlateProfileProperties::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcRibPlateProfileProperties::RibHeight() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcRibPlateProfileProperties::setRibHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcRibPlateProfileProperties::setRibHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcRibPlateProfileProperties::RibWidth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcRibPlateProfileProperties::setRibWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcRibPlateProfileProperties::setRibWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcRibPlateProfileProperties::RibSpacing() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcRibPlateProfileProperties::setRibSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcRibPlateProfileProperties::setRibSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc2x3::IfcRibPlateDirectionEnum::Value Ifc2x3::IfcRibPlateProfileProperties::Direction() const { return ::Ifc2x3::IfcRibPlateDirectionEnum::FromString(*data_->getArgument(6)); } void Ifc2x3::IfcRibPlateProfileProperties::setDirection(::Ifc2x3::IfcRibPlateDirectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcRibPlateDirectionEnum::ToString(v)));data_->setArgument(6,attr);} } @@ -14922,9 +14922,9 @@ void Ifc2x3::IfcRoot::setGlobalId(std::string v) { {IfcWrite::IfcWriteArgument* ::Ifc2x3::IfcOwnerHistory* Ifc2x3::IfcRoot::OwnerHistory() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc2x3::IfcOwnerHistory>(true); } void Ifc2x3::IfcRoot::setOwnerHistory(::Ifc2x3::IfcOwnerHistory* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcRoot::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc2x3::IfcRoot::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcRoot::declaration() const { return *IFC2X3_IfcRoot_type; } @@ -14934,7 +14934,7 @@ Ifc2x3::IfcRoot::IfcRoot(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_ // Function implementations for IfcRoundedEdgeFeature boost::optional< double > Ifc2x3::IfcRoundedEdgeFeature::Radius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcRoundedEdgeFeature::setRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcRoundedEdgeFeature::setRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcRoundedEdgeFeature::declaration() const { return *IFC2X3_IfcRoundedEdgeFeature_type; } @@ -14954,7 +14954,7 @@ Ifc2x3::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc2x3::I // Function implementations for IfcSIUnit boost::optional< ::Ifc2x3::IfcSIPrefix::Value > Ifc2x3::IfcSIUnit::Prefix() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc2x3::IfcSIPrefix::FromString(*data_->getArgument(2)); } -void Ifc2x3::IfcSIUnit::setPrefix(boost::optional< ::Ifc2x3::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcSIPrefix::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc2x3::IfcSIUnit::setPrefix(boost::optional< ::Ifc2x3::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcSIPrefix::ToString(*v)));}data_->setArgument(2,attr);} } ::Ifc2x3::IfcSIUnitName::Value Ifc2x3::IfcSIUnit::Name() const { return ::Ifc2x3::IfcSIUnitName::FromString(*data_->getArgument(3)); } void Ifc2x3::IfcSIUnit::setName(::Ifc2x3::IfcSIUnitName::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcSIUnitName::ToString(v)));data_->setArgument(3,attr);} } @@ -14992,25 +14992,25 @@ void Ifc2x3::IfcScheduleTimeControl::setLateFinish(::Ifc2x3::IfcDateTimeSelect* ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcScheduleTimeControl::ScheduleFinish() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } void Ifc2x3::IfcScheduleTimeControl::setScheduleFinish(::Ifc2x3::IfcDateTimeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} } boost::optional< double > Ifc2x3::IfcScheduleTimeControl::ScheduleDuration() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc2x3::IfcScheduleTimeControl::setScheduleDuration(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc2x3::IfcScheduleTimeControl::setScheduleDuration(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc2x3::IfcScheduleTimeControl::ActualDuration() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc2x3::IfcScheduleTimeControl::setActualDuration(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc2x3::IfcScheduleTimeControl::setActualDuration(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc2x3::IfcScheduleTimeControl::RemainingTime() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc2x3::IfcScheduleTimeControl::setRemainingTime(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc2x3::IfcScheduleTimeControl::setRemainingTime(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc2x3::IfcScheduleTimeControl::FreeFloat() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc2x3::IfcScheduleTimeControl::setFreeFloat(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc2x3::IfcScheduleTimeControl::setFreeFloat(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc2x3::IfcScheduleTimeControl::TotalFloat() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc2x3::IfcScheduleTimeControl::setTotalFloat(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc2x3::IfcScheduleTimeControl::setTotalFloat(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< bool > Ifc2x3::IfcScheduleTimeControl::IsCritical() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } bool v = *data_->getArgument(18); return v; } -void Ifc2x3::IfcScheduleTimeControl::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc2x3::IfcScheduleTimeControl::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcScheduleTimeControl::StatusTime() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(19)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } void Ifc2x3::IfcScheduleTimeControl::setStatusTime(::Ifc2x3::IfcDateTimeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(19,attr);} } boost::optional< double > Ifc2x3::IfcScheduleTimeControl::StartFloat() const { if(!data_->getArgument(20) || data_->getArgument(20)->isNull()) { return boost::none; } double v = *data_->getArgument(20); return v; } -void Ifc2x3::IfcScheduleTimeControl::setStartFloat(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(20,attr);} } +void Ifc2x3::IfcScheduleTimeControl::setStartFloat(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(20,attr);} } boost::optional< double > Ifc2x3::IfcScheduleTimeControl::FinishFloat() const { if(!data_->getArgument(21) || data_->getArgument(21)->isNull()) { return boost::none; } double v = *data_->getArgument(21); return v; } -void Ifc2x3::IfcScheduleTimeControl::setFinishFloat(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(21,attr);} } +void Ifc2x3::IfcScheduleTimeControl::setFinishFloat(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(21,attr);} } boost::optional< double > Ifc2x3::IfcScheduleTimeControl::Completion() const { if(!data_->getArgument(22) || data_->getArgument(22)->isNull()) { return boost::none; } double v = *data_->getArgument(22); return v; } -void Ifc2x3::IfcScheduleTimeControl::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(22,attr);} } +void Ifc2x3::IfcScheduleTimeControl::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(22,attr);} } ::Ifc2x3::IfcRelAssignsTasks::list::ptr Ifc2x3::IfcScheduleTimeControl::ScheduleTimeControlAssigned() const { return data_->getInverse(IFC2X3_IfcRelAssignsTasks_type, 7)->as(); } @@ -15039,7 +15039,7 @@ void Ifc2x3::IfcSectionReinforcementProperties::setLongitudinalStartPosition(dou double Ifc2x3::IfcSectionReinforcementProperties::LongitudinalEndPosition() const { double v = *data_->getArgument(1); return v; } void Ifc2x3::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcSectionReinforcementProperties::TransversePosition() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc2x3::IfcReinforcingBarRoleEnum::Value Ifc2x3::IfcSectionReinforcementProperties::ReinforcementRole() const { return ::Ifc2x3::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); } void Ifc2x3::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc2x3::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(3,attr);} } ::Ifc2x3::IfcSectionProperties* Ifc2x3::IfcSectionReinforcementProperties::SectionDefinition() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc2x3::IfcSectionProperties>(true); } @@ -15109,9 +15109,9 @@ Ifc2x3::IfcServiceLifeFactor::IfcServiceLifeFactor(std::string v1_GlobalId, ::If aggregate_of< ::Ifc2x3::IfcShapeModel >::ptr Ifc2x3::IfcShapeAspect::ShapeRepresentations() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc2x3::IfcShapeModel >(); } void Ifc2x3::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc2x3::IfcShapeModel >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcShapeAspect::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcShapeAspect::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::logic::tribool Ifc2x3::IfcShapeAspect::ProductDefinitional() const { boost::logic::tribool v = *data_->getArgument(3); return v; } void Ifc2x3::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc2x3::IfcProductDefinitionShape* Ifc2x3::IfcShapeAspect::PartOfProductDefinitionShape() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc2x3::IfcProductDefinitionShape>(true); } @@ -15160,13 +15160,13 @@ Ifc2x3::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::optiona // Function implementations for IfcSite boost::optional< std::vector< int > /*[3:4]*/ > Ifc2x3::IfcSite::RefLatitude() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::vector< int > /*[3:4]*/ > Ifc2x3::IfcSite::RefLongitude() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcSite::RefElevation() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc2x3::IfcSite::LandTitleNumber() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc2x3::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc2x3::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc2x3::IfcPostalAddress* Ifc2x3::IfcSite::SiteAddress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc2x3::IfcPostalAddress>(true); } void Ifc2x3::IfcSite::setSiteAddress(::Ifc2x3::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -15178,7 +15178,7 @@ Ifc2x3::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_ // Function implementations for IfcSlab boost::optional< ::Ifc2x3::IfcSlabTypeEnum::Value > Ifc2x3::IfcSlab::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc2x3::IfcSlabTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc2x3::IfcSlab::setPredefinedType(boost::optional< ::Ifc2x3::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcSlabTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc2x3::IfcSlab::setPredefinedType(boost::optional< ::Ifc2x3::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcSlabTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcSlab::declaration() const { return *IFC2X3_IfcSlab_type; } @@ -15198,11 +15198,11 @@ Ifc2x3::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHist // Function implementations for IfcSlippageConnectionCondition boost::optional< double > Ifc2x3::IfcSlippageConnectionCondition::SlippageX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcSlippageConnectionCondition::SlippageY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcSlippageConnectionCondition::SlippageZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcSlippageConnectionCondition::declaration() const { return *IFC2X3_IfcSlippageConnectionCondition_type; } @@ -15222,7 +15222,7 @@ Ifc2x3::IfcSolidModel::IfcSolidModel() : IfcGeometricRepresentationItem((IfcEnti bool Ifc2x3::IfcSoundProperties::IsAttenuating() const { bool v = *data_->getArgument(4); return v; } void Ifc2x3::IfcSoundProperties::setIsAttenuating(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< ::Ifc2x3::IfcSoundScaleEnum::Value > Ifc2x3::IfcSoundProperties::SoundScale() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc2x3::IfcSoundScaleEnum::FromString(*data_->getArgument(5)); } -void Ifc2x3::IfcSoundProperties::setSoundScale(boost::optional< ::Ifc2x3::IfcSoundScaleEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcSoundScaleEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc2x3::IfcSoundProperties::setSoundScale(boost::optional< ::Ifc2x3::IfcSoundScaleEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcSoundScaleEnum::ToString(*v)));}data_->setArgument(5,attr);} } aggregate_of< ::Ifc2x3::IfcSoundValue >::ptr Ifc2x3::IfcSoundProperties::SoundValues() const { aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc2x3::IfcSoundValue >(); } void Ifc2x3::IfcSoundProperties::setSoundValues(aggregate_of< ::Ifc2x3::IfcSoundValue >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(6,attr);} } @@ -15250,7 +15250,7 @@ Ifc2x3::IfcSoundValue::IfcSoundValue(std::string v1_GlobalId, ::Ifc2x3::IfcOwner ::Ifc2x3::IfcInternalOrExternalEnum::Value Ifc2x3::IfcSpace::InteriorOrExteriorSpace() const { return ::Ifc2x3::IfcInternalOrExternalEnum::FromString(*data_->getArgument(9)); } void Ifc2x3::IfcSpace::setInteriorOrExteriorSpace(::Ifc2x3::IfcInternalOrExternalEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcInternalOrExternalEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcSpace::ElevationWithFlooring() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc2x3::IfcRelCoversSpaces::list::ptr Ifc2x3::IfcSpace::HasCoverings() const { return data_->getInverse(IFC2X3_IfcRelCoversSpaces_type, 4)->as(); } ::Ifc2x3::IfcRelSpaceBoundary::list::ptr Ifc2x3::IfcSpace::BoundedBy() const { return data_->getInverse(IFC2X3_IfcRelSpaceBoundary_type, 4)->as(); } @@ -15274,9 +15274,9 @@ Ifc2x3::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::Ifc2x3 std::string Ifc2x3::IfcSpaceProgram::SpaceProgramIdentifier() const { std::string v = *data_->getArgument(5); return v; } void Ifc2x3::IfcSpaceProgram::setSpaceProgramIdentifier(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcSpaceProgram::MaxRequiredArea() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcSpaceProgram::setMaxRequiredArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcSpaceProgram::setMaxRequiredArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcSpaceProgram::MinRequiredArea() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcSpaceProgram::setMinRequiredArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcSpaceProgram::setMinRequiredArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc2x3::IfcSpatialStructureElement* Ifc2x3::IfcSpaceProgram::RequestedLocation() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc2x3::IfcSpatialStructureElement>(true); } void Ifc2x3::IfcSpaceProgram::setRequestedLocation(::Ifc2x3::IfcSpatialStructureElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } double Ifc2x3::IfcSpaceProgram::StandardRequiredArea() const { double v = *data_->getArgument(9); return v; } @@ -15292,23 +15292,23 @@ Ifc2x3::IfcSpaceProgram::IfcSpaceProgram(std::string v1_GlobalId, ::Ifc2x3::IfcO // Function implementations for IfcSpaceThermalLoadProperties boost::optional< double > Ifc2x3::IfcSpaceThermalLoadProperties::ApplicableValueRatio() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcSpaceThermalLoadProperties::setApplicableValueRatio(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcSpaceThermalLoadProperties::setApplicableValueRatio(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc2x3::IfcThermalLoadSourceEnum::Value Ifc2x3::IfcSpaceThermalLoadProperties::ThermalLoadSource() const { return ::Ifc2x3::IfcThermalLoadSourceEnum::FromString(*data_->getArgument(5)); } void Ifc2x3::IfcSpaceThermalLoadProperties::setThermalLoadSource(::Ifc2x3::IfcThermalLoadSourceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcThermalLoadSourceEnum::ToString(v)));data_->setArgument(5,attr);} } ::Ifc2x3::IfcPropertySourceEnum::Value Ifc2x3::IfcSpaceThermalLoadProperties::PropertySource() const { return ::Ifc2x3::IfcPropertySourceEnum::FromString(*data_->getArgument(6)); } void Ifc2x3::IfcSpaceThermalLoadProperties::setPropertySource(::Ifc2x3::IfcPropertySourceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcPropertySourceEnum::ToString(v)));data_->setArgument(6,attr);} } boost::optional< std::string > Ifc2x3::IfcSpaceThermalLoadProperties::SourceDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcSpaceThermalLoadProperties::setSourceDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcSpaceThermalLoadProperties::setSourceDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } double Ifc2x3::IfcSpaceThermalLoadProperties::MaximumValue() const { double v = *data_->getArgument(8); return v; } void Ifc2x3::IfcSpaceThermalLoadProperties::setMaximumValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcSpaceThermalLoadProperties::MinimumValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcSpaceThermalLoadProperties::setMinimumValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcSpaceThermalLoadProperties::setMinimumValue(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc2x3::IfcTimeSeries* Ifc2x3::IfcSpaceThermalLoadProperties::ThermalLoadTimeSeriesValues() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc2x3::IfcTimeSeries>(true); } void Ifc2x3::IfcSpaceThermalLoadProperties::setThermalLoadTimeSeriesValues(::Ifc2x3::IfcTimeSeries* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } boost::optional< std::string > Ifc2x3::IfcSpaceThermalLoadProperties::UserDefinedThermalLoadSource() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcSpaceThermalLoadProperties::setUserDefinedThermalLoadSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcSpaceThermalLoadProperties::setUserDefinedThermalLoadSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc2x3::IfcSpaceThermalLoadProperties::UserDefinedPropertySource() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc2x3::IfcSpaceThermalLoadProperties::setUserDefinedPropertySource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc2x3::IfcSpaceThermalLoadProperties::setUserDefinedPropertySource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc2x3::IfcThermalLoadTypeEnum::Value Ifc2x3::IfcSpaceThermalLoadProperties::ThermalLoadType() const { return ::Ifc2x3::IfcThermalLoadTypeEnum::FromString(*data_->getArgument(13)); } void Ifc2x3::IfcSpaceThermalLoadProperties::setThermalLoadType(::Ifc2x3::IfcThermalLoadTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcThermalLoadTypeEnum::ToString(v)));data_->setArgument(13,attr);} } @@ -15330,7 +15330,7 @@ Ifc2x3::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHi // Function implementations for IfcSpatialStructureElement boost::optional< std::string > Ifc2x3::IfcSpatialStructureElement::LongName() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcSpatialStructureElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcSpatialStructureElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc2x3::IfcElementCompositionEnum::Value Ifc2x3::IfcSpatialStructureElement::CompositionType() const { return ::Ifc2x3::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); } void Ifc2x3::IfcSpatialStructureElement::setCompositionType(::Ifc2x3::IfcElementCompositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcElementCompositionEnum::ToString(v)));data_->setArgument(8,attr);} } @@ -15383,13 +15383,13 @@ Ifc2x3::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v // Function implementations for IfcStairFlight boost::optional< int > Ifc2x3::IfcStairFlight::NumberOfRiser() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } int v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcStairFlight::setNumberOfRiser(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcStairFlight::setNumberOfRiser(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< int > Ifc2x3::IfcStairFlight::NumberOfTreads() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcStairFlight::RiserHeight() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcStairFlight::TreadLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc2x3::IfcStairFlight::declaration() const { return *IFC2X3_IfcStairFlight_type; } @@ -15438,9 +15438,9 @@ void Ifc2x3::IfcStructuralAnalysisModel::setPredefinedType(::Ifc2x3::IfcAnalysis ::Ifc2x3::IfcAxis2Placement3D* Ifc2x3::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc2x3::IfcAxis2Placement3D>(true); } void Ifc2x3::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc2x3::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcStructuralLoadGroup >::ptr > Ifc2x3::IfcStructuralAnalysisModel::LoadedBy() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc2x3::IfcStructuralLoadGroup >(); } -void Ifc2x3::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc2x3::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc2x3::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc2x3::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcStructuralResultGroup >::ptr > Ifc2x3::IfcStructuralAnalysisModel::HasResults() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc2x3::IfcStructuralResultGroup >(); } -void Ifc2x3::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc2x3::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc2x3::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc2x3::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralAnalysisModel::declaration() const { return *IFC2X3_IfcStructuralAnalysisModel_type; } @@ -15461,7 +15461,7 @@ Ifc2x3::IfcStructuralConnection::IfcStructuralConnection(std::string v1_GlobalId // Function implementations for IfcStructuralConnectionCondition boost::optional< std::string > Ifc2x3::IfcStructuralConnectionCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralConnectionCondition::declaration() const { return *IFC2X3_IfcStructuralConnectionCondition_type; } @@ -15528,7 +15528,7 @@ Ifc2x3::IfcStructuralLinearActionVarying::IfcStructuralLinearActionVarying(std:: // Function implementations for IfcStructuralLoad boost::optional< std::string > Ifc2x3::IfcStructuralLoad::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralLoad::declaration() const { return *IFC2X3_IfcStructuralLoad_type; } @@ -15544,9 +15544,9 @@ void Ifc2x3::IfcStructuralLoadGroup::setActionType(::Ifc2x3::IfcActionTypeEnum:: ::Ifc2x3::IfcActionSourceTypeEnum::Value Ifc2x3::IfcStructuralLoadGroup::ActionSource() const { return ::Ifc2x3::IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); } void Ifc2x3::IfcStructuralLoadGroup::setActionSource(::Ifc2x3::IfcActionSourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcActionSourceTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadGroup::Coefficient() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc2x3::IfcStructuralLoadGroup::Purpose() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc2x3::IfcStructuralResultGroup::list::ptr Ifc2x3::IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(IFC2X3_IfcStructuralResultGroup_type, 6)->as(); } ::Ifc2x3::IfcStructuralAnalysisModel::list::ptr Ifc2x3::IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(IFC2X3_IfcStructuralAnalysisModel_type, 7)->as(); } @@ -15558,17 +15558,17 @@ Ifc2x3::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_GlobalId, // Function implementations for IfcStructuralLoadLinearForce boost::optional< double > Ifc2x3::IfcStructuralLoadLinearForce::LinearForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadLinearForce::LinearForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadLinearForce::LinearForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadLinearForce::LinearMomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadLinearForce::LinearMomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralLoadLinearForce::declaration() const { return *IFC2X3_IfcStructuralLoadLinearForce_type; } @@ -15578,11 +15578,11 @@ Ifc2x3::IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(boost::option // Function implementations for IfcStructuralLoadPlanarForce boost::optional< double > Ifc2x3::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralLoadPlanarForce::declaration() const { return *IFC2X3_IfcStructuralLoadPlanarForce_type; } @@ -15592,17 +15592,17 @@ Ifc2x3::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::option // Function implementations for IfcStructuralLoadSingleDisplacement boost::optional< double > Ifc2x3::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralLoadSingleDisplacement::declaration() const { return *IFC2X3_IfcStructuralLoadSingleDisplacement_type; } @@ -15612,7 +15612,7 @@ Ifc2x3::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement // Function implementations for IfcStructuralLoadSingleDisplacementDistortion boost::optional< double > Ifc2x3::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IFC2X3_IfcStructuralLoadSingleDisplacementDistortion_type; } @@ -15622,17 +15622,17 @@ Ifc2x3::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDi // Function implementations for IfcStructuralLoadSingleForce boost::optional< double > Ifc2x3::IfcStructuralLoadSingleForce::ForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadSingleForce::ForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadSingleForce::ForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadSingleForce::MomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadSingleForce::MomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadSingleForce::MomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralLoadSingleForce::declaration() const { return *IFC2X3_IfcStructuralLoadSingleForce_type; } @@ -15642,7 +15642,7 @@ Ifc2x3::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::option // Function implementations for IfcStructuralLoadSingleForceWarping boost::optional< double > Ifc2x3::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralLoadSingleForceWarping::declaration() const { return *IFC2X3_IfcStructuralLoadSingleForceWarping_type; } @@ -15660,11 +15660,11 @@ Ifc2x3::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< std::s // Function implementations for IfcStructuralLoadTemperature boost::optional< double > Ifc2x3::IfcStructuralLoadTemperature::DeltaT_Constant() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcStructuralLoadTemperature::setDeltaT_Constant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcStructuralLoadTemperature::setDeltaT_Constant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadTemperature::DeltaT_Y() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcStructuralLoadTemperature::setDeltaT_Y(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcStructuralLoadTemperature::setDeltaT_Y(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcStructuralLoadTemperature::DeltaT_Z() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcStructuralLoadTemperature::setDeltaT_Z(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcStructuralLoadTemperature::setDeltaT_Z(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralLoadTemperature::declaration() const { return *IFC2X3_IfcStructuralLoadTemperature_type; } @@ -15730,37 +15730,37 @@ Ifc2x3::IfcStructuralPointReaction::IfcStructuralPointReaction(std::string v1_Gl // Function implementations for IfcStructuralProfileProperties boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::TorsionalConstantX() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setTorsionalConstantX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setTorsionalConstantX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::MomentOfInertiaYZ() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setMomentOfInertiaYZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setMomentOfInertiaYZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::MomentOfInertiaY() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setMomentOfInertiaY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setMomentOfInertiaY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::MomentOfInertiaZ() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setMomentOfInertiaZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setMomentOfInertiaZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::WarpingConstant() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setWarpingConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setWarpingConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::ShearCentreZ() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setShearCentreZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setShearCentreZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::ShearCentreY() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setShearCentreY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setShearCentreY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::ShearDeformationAreaZ() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setShearDeformationAreaZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setShearDeformationAreaZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::ShearDeformationAreaY() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setShearDeformationAreaY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setShearDeformationAreaY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::MaximumSectionModulusY() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setMaximumSectionModulusY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setMaximumSectionModulusY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::MinimumSectionModulusY() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setMinimumSectionModulusY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setMinimumSectionModulusY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::MaximumSectionModulusZ() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } double v = *data_->getArgument(18); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setMaximumSectionModulusZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setMaximumSectionModulusZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::MinimumSectionModulusZ() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } double v = *data_->getArgument(19); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setMinimumSectionModulusZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setMinimumSectionModulusZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::TorsionalSectionModulus() const { if(!data_->getArgument(20) || data_->getArgument(20)->isNull()) { return boost::none; } double v = *data_->getArgument(20); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setTorsionalSectionModulus(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(20,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setTorsionalSectionModulus(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(20,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::CentreOfGravityInX() const { if(!data_->getArgument(21) || data_->getArgument(21)->isNull()) { return boost::none; } double v = *data_->getArgument(21); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setCentreOfGravityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(21,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setCentreOfGravityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(21,attr);} } boost::optional< double > Ifc2x3::IfcStructuralProfileProperties::CentreOfGravityInY() const { if(!data_->getArgument(22) || data_->getArgument(22)->isNull()) { return boost::none; } double v = *data_->getArgument(22); return v; } -void Ifc2x3::IfcStructuralProfileProperties::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(22,attr);} } +void Ifc2x3::IfcStructuralProfileProperties::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(22,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralProfileProperties::declaration() const { return *IFC2X3_IfcStructuralProfileProperties_type; } @@ -15794,13 +15794,13 @@ Ifc2x3::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_Global // Function implementations for IfcStructuralSteelProfileProperties boost::optional< double > Ifc2x3::IfcStructuralSteelProfileProperties::ShearAreaZ() const { if(!data_->getArgument(23) || data_->getArgument(23)->isNull()) { return boost::none; } double v = *data_->getArgument(23); return v; } -void Ifc2x3::IfcStructuralSteelProfileProperties::setShearAreaZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(23,attr);} } +void Ifc2x3::IfcStructuralSteelProfileProperties::setShearAreaZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(23,attr);} } boost::optional< double > Ifc2x3::IfcStructuralSteelProfileProperties::ShearAreaY() const { if(!data_->getArgument(24) || data_->getArgument(24)->isNull()) { return boost::none; } double v = *data_->getArgument(24); return v; } -void Ifc2x3::IfcStructuralSteelProfileProperties::setShearAreaY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(24,attr);} } +void Ifc2x3::IfcStructuralSteelProfileProperties::setShearAreaY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(24,attr);} } boost::optional< double > Ifc2x3::IfcStructuralSteelProfileProperties::PlasticShapeFactorY() const { if(!data_->getArgument(25) || data_->getArgument(25)->isNull()) { return boost::none; } double v = *data_->getArgument(25); return v; } -void Ifc2x3::IfcStructuralSteelProfileProperties::setPlasticShapeFactorY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(25,attr);} } +void Ifc2x3::IfcStructuralSteelProfileProperties::setPlasticShapeFactorY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(25,attr);} } boost::optional< double > Ifc2x3::IfcStructuralSteelProfileProperties::PlasticShapeFactorZ() const { if(!data_->getArgument(26) || data_->getArgument(26)->isNull()) { return boost::none; } double v = *data_->getArgument(26); return v; } -void Ifc2x3::IfcStructuralSteelProfileProperties::setPlasticShapeFactorZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(26,attr);} } +void Ifc2x3::IfcStructuralSteelProfileProperties::setPlasticShapeFactorZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(26,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralSteelProfileProperties::declaration() const { return *IFC2X3_IfcStructuralSteelProfileProperties_type; } @@ -15820,7 +15820,7 @@ Ifc2x3::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std::stri ::Ifc2x3::IfcStructuralSurfaceTypeEnum::Value Ifc2x3::IfcStructuralSurfaceMember::PredefinedType() const { return ::Ifc2x3::IfcStructuralSurfaceTypeEnum::FromString(*data_->getArgument(7)); } void Ifc2x3::IfcStructuralSurfaceMember::setPredefinedType(::Ifc2x3::IfcStructuralSurfaceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcStructuralSurfaceTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcStructuralSurfaceMember::Thickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcStructuralSurfaceMember::declaration() const { return *IFC2X3_IfcStructuralSurfaceMember_type; } @@ -15862,7 +15862,7 @@ void Ifc2x3::IfcStyledItem::setItem(::Ifc2x3::IfcRepresentationItem* v) { {IfcWr aggregate_of< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr Ifc2x3::IfcStyledItem::Styles() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc2x3::IfcPresentationStyleAssignment >(); } void Ifc2x3::IfcStyledItem::setStyles(aggregate_of< ::Ifc2x3::IfcPresentationStyleAssignment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcStyledItem::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc2x3::IfcStyledItem::declaration() const { return *IFC2X3_IfcStyledItem_type; } @@ -15882,7 +15882,7 @@ Ifc2x3::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc2x3::IfcRepresenta ::Ifc2x3::IfcActorSelect* Ifc2x3::IfcSubContractResource::SubContractor() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc2x3::IfcActorSelect>(true); } void Ifc2x3::IfcSubContractResource::setSubContractor(::Ifc2x3::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< std::string > Ifc2x3::IfcSubContractResource::JobDescription() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcSubContractResource::setJobDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcSubContractResource::setJobDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc2x3::IfcSubContractResource::declaration() const { return *IFC2X3_IfcSubContractResource_type; } @@ -15976,9 +15976,9 @@ Ifc2x3::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc2x3::IfcColourRgb* // Function implementations for IfcSurfaceStyleRefraction boost::optional< double > Ifc2x3::IfcSurfaceStyleRefraction::RefractionIndex() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< double > Ifc2x3::IfcSurfaceStyleRefraction::DispersionFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc2x3::IfcSurfaceStyleRefraction::declaration() const { return *IFC2X3_IfcSurfaceStyleRefraction_type; } @@ -15988,7 +15988,7 @@ Ifc2x3::IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(boost::optional< do // Function implementations for IfcSurfaceStyleRendering boost::optional< double > Ifc2x3::IfcSurfaceStyleRendering::Transparency() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcSurfaceStyleRendering::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcSurfaceStyleRendering::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcColourOrFactor* Ifc2x3::IfcSurfaceStyleRendering::DiffuseColour() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc2x3::IfcColourOrFactor>(true); } void Ifc2x3::IfcSurfaceStyleRendering::setDiffuseColour(::Ifc2x3::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc2x3::IfcColourOrFactor* Ifc2x3::IfcSurfaceStyleRendering::TransmissionColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc2x3::IfcColourOrFactor>(true); } @@ -16064,7 +16064,7 @@ void Ifc2x3::IfcSweptDiskSolid::setDirectrix(::Ifc2x3::IfcCurve* v) { {IfcWrite: double Ifc2x3::IfcSweptDiskSolid::Radius() const { double v = *data_->getArgument(1); return v; } void Ifc2x3::IfcSweptDiskSolid::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcSweptDiskSolid::InnerRadius() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } double Ifc2x3::IfcSweptDiskSolid::StartParam() const { double v = *data_->getArgument(3); return v; } void Ifc2x3::IfcSweptDiskSolid::setStartParam(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } double Ifc2x3::IfcSweptDiskSolid::EndParam() const { double v = *data_->getArgument(4); return v; } @@ -16135,17 +16135,17 @@ void Ifc2x3::IfcTShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc2x3::IfcTShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc2x3::IfcTShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcTShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcTShapeProfileDef::WebEdgeRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcTShapeProfileDef::WebSlope() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcTShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc2x3::IfcTShapeProfileDef::CentreOfGravityInY() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc2x3::IfcTShapeProfileDef::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc2x3::IfcTShapeProfileDef::setCentreOfGravityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc2x3::IfcTShapeProfileDef::declaration() const { return *IFC2X3_IfcTShapeProfileDef_type; } @@ -16192,13 +16192,13 @@ Ifc2x3::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHist std::string Ifc2x3::IfcTask::TaskId() const { std::string v = *data_->getArgument(5); return v; } void Ifc2x3::IfcTask::setTaskId(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< std::string > Ifc2x3::IfcTask::Status() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc2x3::IfcTask::WorkMethod() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } bool Ifc2x3::IfcTask::IsMilestone() const { bool v = *data_->getArgument(8); return v; } void Ifc2x3::IfcTask::setIsMilestone(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< int > Ifc2x3::IfcTask::Priority() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcTask::declaration() const { return *IFC2X3_IfcTask_type; } @@ -16208,15 +16208,15 @@ Ifc2x3::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* v2_ // Function implementations for IfcTelecomAddress boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc2x3::IfcTelecomAddress::TelephoneNumbers() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc2x3::IfcTelecomAddress::FacsimileNumbers() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc2x3::IfcTelecomAddress::PagerNumber() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc2x3::IfcTelecomAddress::ElectronicMailAddresses() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc2x3::IfcTelecomAddress::WWWHomePageURL() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcTelecomAddress::declaration() const { return *IFC2X3_IfcTelecomAddress_type; } @@ -16232,15 +16232,15 @@ void Ifc2x3::IfcTendon::setNominalDiameter(double v) { {IfcWrite::IfcWriteArgume double Ifc2x3::IfcTendon::CrossSectionArea() const { double v = *data_->getArgument(11); return v; } void Ifc2x3::IfcTendon::setCrossSectionArea(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< double > Ifc2x3::IfcTendon::TensionForce() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc2x3::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc2x3::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc2x3::IfcTendon::PreStress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc2x3::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc2x3::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc2x3::IfcTendon::FrictionCoefficient() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc2x3::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc2x3::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc2x3::IfcTendon::AnchorageSlip() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc2x3::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc2x3::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc2x3::IfcTendon::MinCurvatureRadius() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc2x3::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc2x3::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc2x3::IfcTendon::declaration() const { return *IFC2X3_IfcTendon_type; } @@ -16308,13 +16308,13 @@ Ifc2x3::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, ::Ifc // Function implementations for IfcTextStyleFontModel boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc2x3::IfcTextStyleFontModel::FontFamily() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcTextStyleFontModel::setFontFamily(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcTextStyleFontModel::setFontFamily(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcTextStyleFontModel::FontStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc2x3::IfcTextStyleFontModel::FontVariant() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc2x3::IfcTextStyleFontModel::FontWeight() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc2x3::IfcSizeSelect* Ifc2x3::IfcTextStyleFontModel::FontSize() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc2x3::IfcSizeSelect>(true); } void Ifc2x3::IfcTextStyleFontModel::setFontSize(::Ifc2x3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -16340,15 +16340,15 @@ Ifc2x3::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc2x3::IfcColo ::Ifc2x3::IfcSizeSelect* Ifc2x3::IfcTextStyleTextModel::TextIndent() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc2x3::IfcSizeSelect>(true); } void Ifc2x3::IfcTextStyleTextModel::setTextIndent(::Ifc2x3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcTextStyleTextModel::TextAlign() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc2x3::IfcTextStyleTextModel::TextDecoration() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc2x3::IfcSizeSelect* Ifc2x3::IfcTextStyleTextModel::LetterSpacing() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc2x3::IfcSizeSelect>(true); } void Ifc2x3::IfcTextStyleTextModel::setLetterSpacing(::Ifc2x3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc2x3::IfcSizeSelect* Ifc2x3::IfcTextStyleTextModel::WordSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc2x3::IfcSizeSelect>(true); } void Ifc2x3::IfcTextStyleTextModel::setWordSpacing(::Ifc2x3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc2x3::IfcTextStyleTextModel::TextTransform() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc2x3::IfcSizeSelect* Ifc2x3::IfcTextStyleTextModel::LineHeight() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc2x3::IfcSizeSelect>(true); } void Ifc2x3::IfcTextStyleTextModel::setLineHeight(::Ifc2x3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -16360,13 +16360,13 @@ Ifc2x3::IfcTextStyleTextModel::IfcTextStyleTextModel(::Ifc2x3::IfcSizeSelect* v1 // Function implementations for IfcTextStyleWithBoxCharacteristics boost::optional< double > Ifc2x3::IfcTextStyleWithBoxCharacteristics::BoxHeight() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc2x3::IfcTextStyleWithBoxCharacteristics::setBoxHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc2x3::IfcTextStyleWithBoxCharacteristics::setBoxHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< double > Ifc2x3::IfcTextStyleWithBoxCharacteristics::BoxWidth() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcTextStyleWithBoxCharacteristics::setBoxWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcTextStyleWithBoxCharacteristics::setBoxWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcTextStyleWithBoxCharacteristics::BoxSlantAngle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcTextStyleWithBoxCharacteristics::setBoxSlantAngle(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcTextStyleWithBoxCharacteristics::setBoxSlantAngle(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcTextStyleWithBoxCharacteristics::BoxRotateAngle() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcTextStyleWithBoxCharacteristics::setBoxRotateAngle(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcTextStyleWithBoxCharacteristics::setBoxRotateAngle(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc2x3::IfcSizeSelect* Ifc2x3::IfcTextStyleWithBoxCharacteristics::CharacterSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc2x3::IfcSizeSelect>(true); } void Ifc2x3::IfcTextStyleWithBoxCharacteristics::setCharacterSpacing(::Ifc2x3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -16419,13 +16419,13 @@ Ifc2x3::IfcTextureVertex::IfcTextureVertex(std::vector< double > /*[2:2]*/ v1_Co // Function implementations for IfcThermalMaterialProperties boost::optional< double > Ifc2x3::IfcThermalMaterialProperties::SpecificHeatCapacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcThermalMaterialProperties::setSpecificHeatCapacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcThermalMaterialProperties::setSpecificHeatCapacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcThermalMaterialProperties::BoilingPoint() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcThermalMaterialProperties::setBoilingPoint(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcThermalMaterialProperties::setBoilingPoint(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcThermalMaterialProperties::FreezingPoint() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcThermalMaterialProperties::setFreezingPoint(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcThermalMaterialProperties::setFreezingPoint(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcThermalMaterialProperties::ThermalConductivity() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcThermalMaterialProperties::setThermalConductivity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcThermalMaterialProperties::setThermalConductivity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc2x3::IfcThermalMaterialProperties::declaration() const { return *IFC2X3_IfcThermalMaterialProperties_type; } @@ -16437,7 +16437,7 @@ Ifc2x3::IfcThermalMaterialProperties::IfcThermalMaterialProperties(::Ifc2x3::Ifc std::string Ifc2x3::IfcTimeSeries::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc2x3::IfcTimeSeries::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc2x3::IfcTimeSeries::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcTimeSeries::StartTime() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } void Ifc2x3::IfcTimeSeries::setStartTime(::Ifc2x3::IfcDateTimeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcTimeSeries::EndTime() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } @@ -16447,7 +16447,7 @@ void Ifc2x3::IfcTimeSeries::setTimeSeriesDataType(::Ifc2x3::IfcTimeSeriesDataTyp ::Ifc2x3::IfcDataOriginEnum::Value Ifc2x3::IfcTimeSeries::DataOrigin() const { return ::Ifc2x3::IfcDataOriginEnum::FromString(*data_->getArgument(5)); } void Ifc2x3::IfcTimeSeries::setDataOrigin(::Ifc2x3::IfcDataOriginEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcDataOriginEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< std::string > Ifc2x3::IfcTimeSeries::UserDefinedDataOrigin() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc2x3::IfcUnit* Ifc2x3::IfcTimeSeries::Unit() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc2x3::IfcUnit>(true); } void Ifc2x3::IfcTimeSeries::setUnit(::Ifc2x3::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } @@ -16472,7 +16472,7 @@ Ifc2x3::IfcTimeSeriesReferenceRelationship::IfcTimeSeriesReferenceRelationship(: // Function implementations for IfcTimeSeriesSchedule boost::optional< aggregate_of_instance::ptr > Ifc2x3::IfcTimeSeriesSchedule::ApplicableDates() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcTimeSeriesSchedule::setApplicableDates(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcTimeSeriesSchedule::setApplicableDates(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::Value Ifc2x3::IfcTimeSeriesSchedule::TimeSeriesScheduleType() const { return ::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::FromString(*data_->getArgument(6)); } void Ifc2x3::IfcTimeSeriesSchedule::setTimeSeriesScheduleType(::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcTimeSeriesScheduleTypeEnum::ToString(v)));data_->setArgument(6,attr);} } ::Ifc2x3::IfcTimeSeries* Ifc2x3::IfcTimeSeriesSchedule::TimeSeries() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc2x3::IfcTimeSeries>(true); } @@ -16522,11 +16522,11 @@ Ifc2x3::IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, ::Ifc2x3 // Function implementations for IfcTransportElement boost::optional< ::Ifc2x3::IfcTransportElementTypeEnum::Value > Ifc2x3::IfcTransportElement::OperationType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc2x3::IfcTransportElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc2x3::IfcTransportElement::setOperationType(boost::optional< ::Ifc2x3::IfcTransportElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcTransportElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc2x3::IfcTransportElement::setOperationType(boost::optional< ::Ifc2x3::IfcTransportElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcTransportElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcTransportElement::CapacityByWeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcTransportElement::setCapacityByWeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcTransportElement::setCapacityByWeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcTransportElement::CapacityByNumber() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcTransportElement::setCapacityByNumber(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcTransportElement::setCapacityByNumber(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc2x3::IfcTransportElement::declaration() const { return *IFC2X3_IfcTransportElement_type; } @@ -16600,9 +16600,9 @@ Ifc2x3::IfcTwoDirectionRepeatFactor::IfcTwoDirectionRepeatFactor(::Ifc2x3::IfcVe // Function implementations for IfcTypeObject boost::optional< std::string > Ifc2x3::IfcTypeObject::ApplicableOccurrence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcPropertySetDefinition >::ptr > Ifc2x3::IfcTypeObject::HasPropertySets() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc2x3::IfcPropertySetDefinition >(); } -void Ifc2x3::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(5,attr);} } +void Ifc2x3::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc2x3::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(5,attr);} } ::Ifc2x3::IfcRelDefinesByType::list::ptr Ifc2x3::IfcTypeObject::ObjectTypeOf() const { return data_->getInverse(IFC2X3_IfcRelDefinesByType_type, 5)->as(); } @@ -16613,9 +16613,9 @@ Ifc2x3::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc2x3::IfcOwner // Function implementations for IfcTypeProduct boost::optional< aggregate_of< ::Ifc2x3::IfcRepresentationMap >::ptr > Ifc2x3::IfcTypeProduct::RepresentationMaps() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc2x3::IfcRepresentationMap >(); } -void Ifc2x3::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc2x3::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc2x3::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc2x3::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc2x3::IfcTypeProduct::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcTypeProduct::declaration() const { return *IFC2X3_IfcTypeProduct_type; } @@ -16633,13 +16633,13 @@ void Ifc2x3::IfcUShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc2x3::IfcUShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc2x3::IfcUShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcUShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcUShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcUShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcUShapeProfileDef::CentreOfGravityInX() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcUShapeProfileDef::setCentreOfGravityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcUShapeProfileDef::setCentreOfGravityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc2x3::IfcUShapeProfileDef::declaration() const { return *IFC2X3_IfcUShapeProfileDef_type; } @@ -16797,19 +16797,19 @@ Ifc2x3::IfcWasteTerminalType::IfcWasteTerminalType(std::string v1_GlobalId, ::If // Function implementations for IfcWaterProperties boost::optional< bool > Ifc2x3::IfcWaterProperties::IsPotable() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc2x3::IfcWaterProperties::setIsPotable(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc2x3::IfcWaterProperties::setIsPotable(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc2x3::IfcWaterProperties::Hardness() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc2x3::IfcWaterProperties::setHardness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc2x3::IfcWaterProperties::setHardness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc2x3::IfcWaterProperties::AlkalinityConcentration() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc2x3::IfcWaterProperties::setAlkalinityConcentration(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc2x3::IfcWaterProperties::setAlkalinityConcentration(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc2x3::IfcWaterProperties::AcidityConcentration() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcWaterProperties::setAcidityConcentration(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcWaterProperties::setAcidityConcentration(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcWaterProperties::ImpuritiesContent() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcWaterProperties::setImpuritiesContent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcWaterProperties::setImpuritiesContent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcWaterProperties::PHLevel() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcWaterProperties::setPHLevel(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcWaterProperties::setPHLevel(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcWaterProperties::DissolvedSolidsContent() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcWaterProperties::setDissolvedSolidsContent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcWaterProperties::setDissolvedSolidsContent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc2x3::IfcWaterProperties::declaration() const { return *IFC2X3_IfcWaterProperties_type; } @@ -16819,9 +16819,9 @@ Ifc2x3::IfcWaterProperties::IfcWaterProperties(::Ifc2x3::IfcMaterial* v1_Materia // Function implementations for IfcWindow boost::optional< double > Ifc2x3::IfcWindow::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcWindow::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc2x3::IfcWindow::declaration() const { return *IFC2X3_IfcWindow_type; } @@ -16831,21 +16831,21 @@ Ifc2x3::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory* // Function implementations for IfcWindowLiningProperties boost::optional< double > Ifc2x3::IfcWindowLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc2x3::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc2x3::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc2x3::IfcWindowLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc2x3::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc2x3::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcWindowLiningProperties::TransomThickness() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcWindowLiningProperties::MullionThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcWindowLiningProperties::FirstTransomOffset() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcWindowLiningProperties::SecondTransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcWindowLiningProperties::FirstMullionOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc2x3::IfcWindowLiningProperties::SecondMullionOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc2x3::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc2x3::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } ::Ifc2x3::IfcShapeAspect* Ifc2x3::IfcWindowLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc2x3::IfcShapeAspect>(true); } void Ifc2x3::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc2x3::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} } @@ -16861,9 +16861,9 @@ void Ifc2x3::IfcWindowPanelProperties::setOperationType(::Ifc2x3::IfcWindowPanel ::Ifc2x3::IfcWindowPanelPositionEnum::Value Ifc2x3::IfcWindowPanelProperties::PanelPosition() const { return ::Ifc2x3::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc2x3::IfcWindowPanelProperties::setPanelPosition(::Ifc2x3::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc2x3::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc2x3::IfcWindowPanelProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc2x3::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc2x3::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcWindowPanelProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc2x3::IfcShapeAspect* Ifc2x3::IfcWindowPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc2x3::IfcShapeAspect>(true); } void Ifc2x3::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc2x3::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -16895,21 +16895,21 @@ void Ifc2x3::IfcWorkControl::setIdentifier(std::string v) { {IfcWrite::IfcWriteA ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcWorkControl::CreationDate() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } void Ifc2x3::IfcWorkControl::setCreationDate(::Ifc2x3::IfcDateTimeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc2x3::IfcPerson >::ptr > Ifc2x3::IfcWorkControl::Creators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc2x3::IfcPerson >(); } -void Ifc2x3::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc2x3::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc2x3::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc2x3::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc2x3::IfcWorkControl::Purpose() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc2x3::IfcWorkControl::Duration() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc2x3::IfcWorkControl::setDuration(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc2x3::IfcWorkControl::setDuration(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc2x3::IfcWorkControl::TotalFloat() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc2x3::IfcWorkControl::setTotalFloat(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc2x3::IfcWorkControl::setTotalFloat(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcWorkControl::StartTime() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } void Ifc2x3::IfcWorkControl::setStartTime(::Ifc2x3::IfcDateTimeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } ::Ifc2x3::IfcDateTimeSelect* Ifc2x3::IfcWorkControl::FinishTime() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc2x3::IfcDateTimeSelect>(true); } void Ifc2x3::IfcWorkControl::setFinishTime(::Ifc2x3::IfcDateTimeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} } boost::optional< ::Ifc2x3::IfcWorkControlTypeEnum::Value > Ifc2x3::IfcWorkControl::WorkControlType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc2x3::IfcWorkControlTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc2x3::IfcWorkControl::setWorkControlType(boost::optional< ::Ifc2x3::IfcWorkControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcWorkControlTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc2x3::IfcWorkControl::setWorkControlType(boost::optional< ::Ifc2x3::IfcWorkControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc2x3::IfcWorkControlTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc2x3::IfcWorkControl::UserDefinedControlType() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc2x3::IfcWorkControl::setUserDefinedControlType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc2x3::IfcWorkControl::setUserDefinedControlType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } const IfcParse::entity& Ifc2x3::IfcWorkControl::declaration() const { return *IFC2X3_IfcWorkControl_type; } @@ -16943,9 +16943,9 @@ void Ifc2x3::IfcZShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc2x3::IfcZShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc2x3::IfcZShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc2x3::IfcZShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc2x3::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc2x3::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc2x3::IfcZShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc2x3::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc2x3::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc2x3::IfcZShapeProfileDef::declaration() const { return *IFC2X3_IfcZShapeProfileDef_type; } diff --git a/src/ifcparse/Ifc2x3.h b/src/ifcparse/Ifc2x3.h index 8a64b9eafa..a9ff0fbf90 100644 --- a/src/ifcparse/Ifc2x3.h +++ b/src/ifcparse/Ifc2x3.h @@ -42,7 +42,9 @@ struct Ifc2x3 { -static const IfcParse::schema_definition& get_schema(); +IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); + +IFC_PARSE_API static void clear_schema(); static const char* const Identifier; diff --git a/src/ifcparse/Ifc4-schema.cpp b/src/ifcparse/Ifc4-schema.cpp index 9263819618..5e8d1add16 100644 --- a/src/ifcparse/Ifc4-schema.cpp +++ b/src/ifcparse/Ifc4-schema.cpp @@ -15071,9 +15071,16 @@ IfcParse::schema_definition* IFC4_populate_schema() { #pragma optimize("", on) #endif -const schema_definition& Ifc4::get_schema() { +static std::unique_ptr schema; - static const schema_definition* s = IFC4_populate_schema(); - return *s; +void Ifc4::clear_schema() { + schema.reset(); +} + +const schema_definition& Ifc4::get_schema() { + if (!schema) { + schema.reset(IFC4_populate_schema()); + } + return *schema; } diff --git a/src/ifcparse/Ifc4.cpp b/src/ifcparse/Ifc4.cpp index 32576d5748..3f0b878a59 100644 --- a/src/ifcparse/Ifc4.cpp +++ b/src/ifcparse/Ifc4.cpp @@ -11123,11 +11123,11 @@ Ifc4::IfcWarpingMomentMeasure::operator double() const { return *data_->getArgum // Function implementations for IfcActionRequest boost::optional< ::Ifc4::IfcActionRequestTypeEnum::Value > Ifc4::IfcActionRequest::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4::IfcActionRequestTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcActionRequestTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcActionRequestTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcActionRequest::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcActionRequest::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcActionRequest::declaration() const { return *IFC4_IfcActionRequest_type; } @@ -11150,9 +11150,9 @@ Ifc4::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Ow ::Ifc4::IfcRoleEnum::Value Ifc4::IfcActorRole::Role() const { return ::Ifc4::IfcRoleEnum::FromString(*data_->getArgument(0)); } void Ifc4::IfcActorRole::setRole(::Ifc4::IfcRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcRoleEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcActorRole::UserDefinedRole() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcActorRole::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcExternalReferenceRelationship::list::ptr Ifc4::IfcActorRole::HasExternalReference() const { return data_->getInverse(IFC4_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -11163,7 +11163,7 @@ Ifc4::IfcActorRole::IfcActorRole(::Ifc4::IfcRoleEnum::Value v1_Role, boost::opti // Function implementations for IfcActuator boost::optional< ::Ifc4::IfcActuatorTypeEnum::Value > Ifc4::IfcActuator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcActuatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcActuator::setPredefinedType(boost::optional< ::Ifc4::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcActuatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcActuator::setPredefinedType(boost::optional< ::Ifc4::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcActuatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcActuator::declaration() const { return *IFC4_IfcActuator_type; } @@ -11183,11 +11183,11 @@ Ifc4::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4::IfcOwner // Function implementations for IfcAddress boost::optional< ::Ifc4::IfcAddressTypeEnum::Value > Ifc4::IfcAddress::Purpose() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } return ::Ifc4::IfcAddressTypeEnum::FromString(*data_->getArgument(0)); } -void Ifc4::IfcAddress::setPurpose(boost::optional< ::Ifc4::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAddressTypeEnum::ToString(*v)));data_->setArgument(0,attr);} } +void Ifc4::IfcAddress::setPurpose(boost::optional< ::Ifc4::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAddressTypeEnum::ToString(*v)));}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcAddress::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcAddress::UserDefinedPurpose() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcPerson::list::ptr Ifc4::IfcAddress::OfPerson() const { return data_->getInverse(IFC4_IfcPerson_type, 7)->as(); } ::Ifc4::IfcOrganization::list::ptr Ifc4::IfcAddress::OfOrganization() const { return data_->getInverse(IFC4_IfcOrganization_type, 4)->as(); } @@ -11225,7 +11225,7 @@ Ifc4::IfcAdvancedFace::IfcAdvancedFace(aggregate_of< ::Ifc4::IfcFaceBound >::ptr // Function implementations for IfcAirTerminal boost::optional< ::Ifc4::IfcAirTerminalTypeEnum::Value > Ifc4::IfcAirTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAirTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAirTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcAirTerminal::declaration() const { return *IFC4_IfcAirTerminal_type; } @@ -11235,7 +11235,7 @@ Ifc4::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4::IfcOwnerHi // Function implementations for IfcAirTerminalBox boost::optional< ::Ifc4::IfcAirTerminalBoxTypeEnum::Value > Ifc4::IfcAirTerminalBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAirTerminalBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAirTerminalBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcAirTerminalBox::declaration() const { return *IFC4_IfcAirTerminalBox_type; } @@ -11265,7 +11265,7 @@ Ifc4::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::Ifc4::If // Function implementations for IfcAirToAirHeatRecovery boost::optional< ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4::IfcAirToAirHeatRecovery::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcAirToAirHeatRecovery::declaration() const { return *IFC4_IfcAirToAirHeatRecovery_type; } @@ -11285,7 +11285,7 @@ Ifc4::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string v1_Gl // Function implementations for IfcAlarm boost::optional< ::Ifc4::IfcAlarmTypeEnum::Value > Ifc4::IfcAlarm::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcAlarmTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAlarmTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAlarmTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcAlarm::declaration() const { return *IFC4_IfcAlarm_type; } @@ -11316,7 +11316,7 @@ Ifc4::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4::IfcOwnerHist ::Ifc4::IfcCurve* Ifc4::IfcAnnotationFillArea::OuterBoundary() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4::IfcCurve>(true); } void Ifc4::IfcAnnotationFillArea::setOuterBoundary(::Ifc4::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcCurve >::ptr > Ifc4::IfcAnnotationFillArea::InnerBoundaries() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4::IfcCurve >(); } -void Ifc4::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4::IfcAnnotationFillArea::declaration() const { return *IFC4_IfcAnnotationFillArea_type; } @@ -11342,25 +11342,25 @@ Ifc4::IfcApplication::IfcApplication(::Ifc4::IfcOrganization* v1_ApplicationDeve // Function implementations for IfcAppliedValue boost::optional< std::string > Ifc4::IfcAppliedValue::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcAppliedValue::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4::IfcAppliedValueSelect* Ifc4::IfcAppliedValue::AppliedValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4::IfcAppliedValueSelect>(true); } void Ifc4::IfcAppliedValue::setAppliedValue(::Ifc4::IfcAppliedValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4::IfcMeasureWithUnit* Ifc4::IfcAppliedValue::UnitBasis() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcMeasureWithUnit>(true); } void Ifc4::IfcAppliedValue::setUnitBasis(::Ifc4::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcAppliedValue::ApplicableDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcAppliedValue::FixedUntilDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcAppliedValue::Category() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcAppliedValue::Condition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< ::Ifc4::IfcArithmeticOperatorEnum::Value > Ifc4::IfcAppliedValue::ArithmeticOperator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcArithmeticOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcArithmeticOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcArithmeticOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcAppliedValue >::ptr > Ifc4::IfcAppliedValue::Components() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4::IfcAppliedValue >(); } -void Ifc4::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4::IfcExternalReferenceRelationship::list::ptr Ifc4::IfcAppliedValue::HasExternalReference() const { return data_->getInverse(IFC4_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -11371,19 +11371,19 @@ Ifc4::IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_Name, b // Function implementations for IfcApproval boost::optional< std::string > Ifc4::IfcApproval::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcApproval::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcApproval::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4::IfcApproval::TimeOfApproval() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcApproval::Status() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcApproval::Level() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcApproval::Qualifier() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4::IfcActorSelect* Ifc4::IfcApproval::RequestingApproval() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4::IfcActorSelect>(true); } void Ifc4::IfcApproval::setRequestingApproval(::Ifc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4::IfcActorSelect* Ifc4::IfcApproval::GivingApproval() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4::IfcActorSelect>(true); } @@ -11444,7 +11444,7 @@ Ifc4::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::Ifc4::I // Function implementations for IfcAsset boost::optional< std::string > Ifc4::IfcAsset::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4::IfcCostValue* Ifc4::IfcAsset::OriginalValue() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcCostValue>(true); } void Ifc4::IfcAsset::setOriginalValue(::Ifc4::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } ::Ifc4::IfcCostValue* Ifc4::IfcAsset::CurrentValue() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4::IfcCostValue>(true); } @@ -11458,7 +11458,7 @@ void Ifc4::IfcAsset::setUser(::Ifc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArg ::Ifc4::IfcPerson* Ifc4::IfcAsset::ResponsiblePerson() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4::IfcPerson>(true); } void Ifc4::IfcAsset::setResponsiblePerson(::Ifc4::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4::IfcAsset::IncorporationDate() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4::IfcCostValue* Ifc4::IfcAsset::DepreciatedValue() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4::IfcCostValue>(true); } void Ifc4::IfcAsset::setDepreciatedValue(::Ifc4::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -11478,21 +11478,21 @@ void Ifc4::IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { {IfcWrite: double Ifc4::IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } double Ifc4::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { double v = *data_->getArgument(8); return v; } void Ifc4::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< double > Ifc4::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } const IfcParse::entity& Ifc4::IfcAsymmetricIShapeProfileDef::declaration() const { return *IFC4_IfcAsymmetricIShapeProfileDef_type; } @@ -11502,7 +11502,7 @@ Ifc4::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4::IfcPr // Function implementations for IfcAudioVisualAppliance boost::optional< ::Ifc4::IfcAudioVisualApplianceTypeEnum::Value > Ifc4::IfcAudioVisualAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAudioVisualApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAudioVisualApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcAudioVisualAppliance::declaration() const { return *IFC4_IfcAudioVisualAppliance_type; } @@ -11626,7 +11626,7 @@ Ifc4::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegree, int // Function implementations for IfcBeam boost::optional< ::Ifc4::IfcBeamTypeEnum::Value > Ifc4::IfcBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcBeam::setPredefinedType(boost::optional< ::Ifc4::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcBeam::setPredefinedType(boost::optional< ::Ifc4::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcBeam::declaration() const { return *IFC4_IfcBeam_type; } @@ -11680,7 +11680,7 @@ Ifc4::IfcBlock::IfcBlock(::Ifc4::IfcAxis2Placement3D* v1_Position, double v2_XLe // Function implementations for IfcBoiler boost::optional< ::Ifc4::IfcBoilerTypeEnum::Value > Ifc4::IfcBoiler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcBoilerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBoilerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBoilerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcBoiler::declaration() const { return *IFC4_IfcBoiler_type; } @@ -11722,7 +11722,7 @@ Ifc4::IfcBooleanResult::IfcBooleanResult(::Ifc4::IfcBooleanOperator::Value v1_Op // Function implementations for IfcBoundaryCondition boost::optional< std::string > Ifc4::IfcBoundaryCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4::IfcBoundaryCondition::declaration() const { return *IFC4_IfcBoundaryCondition_type; } @@ -11846,9 +11846,9 @@ Ifc4::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4::IfcSurface* v1_BaseSurface, b // Function implementations for IfcBuilding boost::optional< double > Ifc4::IfcBuilding::ElevationOfRefHeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcBuilding::ElevationOfTerrain() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4::IfcPostalAddress* Ifc4::IfcBuilding::BuildingAddress() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4::IfcPostalAddress>(true); } void Ifc4::IfcBuilding::setBuildingAddress(::Ifc4::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } @@ -11868,7 +11868,7 @@ Ifc4::IfcBuildingElement::IfcBuildingElement(std::string v1_GlobalId, ::Ifc4::If // Function implementations for IfcBuildingElementPart boost::optional< ::Ifc4::IfcBuildingElementPartTypeEnum::Value > Ifc4::IfcBuildingElementPart::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBuildingElementPartTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBuildingElementPartTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcBuildingElementPart::declaration() const { return *IFC4_IfcBuildingElementPart_type; } @@ -11888,7 +11888,7 @@ Ifc4::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v1_Glob // Function implementations for IfcBuildingElementProxy boost::optional< ::Ifc4::IfcBuildingElementProxyTypeEnum::Value > Ifc4::IfcBuildingElementProxy::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBuildingElementProxyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBuildingElementProxyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcBuildingElementProxy::declaration() const { return *IFC4_IfcBuildingElementProxy_type; } @@ -11916,7 +11916,7 @@ Ifc4::IfcBuildingElementType::IfcBuildingElementType(std::string v1_GlobalId, :: // Function implementations for IfcBuildingStorey boost::optional< double > Ifc4::IfcBuildingStorey::Elevation() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcBuildingStorey::declaration() const { return *IFC4_IfcBuildingStorey_type; } @@ -11926,9 +11926,9 @@ Ifc4::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4::IfcO // Function implementations for IfcBuildingSystem boost::optional< ::Ifc4::IfcBuildingSystemTypeEnum::Value > Ifc4::IfcBuildingSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4::IfcBuildingSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBuildingSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBuildingSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcBuildingSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4::IfcBuildingSystem::declaration() const { return *IFC4_IfcBuildingSystem_type; } @@ -11938,7 +11938,7 @@ Ifc4::IfcBuildingSystem::IfcBuildingSystem(std::string v1_GlobalId, ::Ifc4::IfcO // Function implementations for IfcBurner boost::optional< ::Ifc4::IfcBurnerTypeEnum::Value > Ifc4::IfcBurner::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcBurnerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcBurner::setPredefinedType(boost::optional< ::Ifc4::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBurnerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcBurner::setPredefinedType(boost::optional< ::Ifc4::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcBurnerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcBurner::declaration() const { return *IFC4_IfcBurner_type; } @@ -11966,7 +11966,7 @@ void Ifc4::IfcCShapeProfileDef::setWallThickness(double v) { {IfcWrite::IfcWrite double Ifc4::IfcCShapeProfileDef::Girth() const { double v = *data_->getArgument(6); return v; } void Ifc4::IfcCShapeProfileDef::setGirth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcCShapeProfileDef::InternalFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4::IfcCShapeProfileDef::declaration() const { return *IFC4_IfcCShapeProfileDef_type; } @@ -11976,7 +11976,7 @@ Ifc4::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4::IfcProfileTypeEnum::Value // Function implementations for IfcCableCarrierFitting boost::optional< ::Ifc4::IfcCableCarrierFittingTypeEnum::Value > Ifc4::IfcCableCarrierFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCableCarrierFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCableCarrierFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCableCarrierFitting::declaration() const { return *IFC4_IfcCableCarrierFitting_type; } @@ -11996,7 +11996,7 @@ Ifc4::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v1_Glob // Function implementations for IfcCableCarrierSegment boost::optional< ::Ifc4::IfcCableCarrierSegmentTypeEnum::Value > Ifc4::IfcCableCarrierSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCableCarrierSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCableCarrierSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCableCarrierSegment::declaration() const { return *IFC4_IfcCableCarrierSegment_type; } @@ -12016,7 +12016,7 @@ Ifc4::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v1_Glob // Function implementations for IfcCableFitting boost::optional< ::Ifc4::IfcCableFittingTypeEnum::Value > Ifc4::IfcCableFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCableFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCableFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCableFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCableFitting::declaration() const { return *IFC4_IfcCableFitting_type; } @@ -12036,7 +12036,7 @@ Ifc4::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, ::Ifc4:: // Function implementations for IfcCableSegment boost::optional< ::Ifc4::IfcCableSegmentTypeEnum::Value > Ifc4::IfcCableSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCableSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCableSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCableSegment::declaration() const { return *IFC4_IfcCableSegment_type; } @@ -12100,7 +12100,7 @@ void Ifc4::IfcCartesianTransformationOperator::setAxis2(::Ifc4::IfcDirection* v) ::Ifc4::IfcCartesianPoint* Ifc4::IfcCartesianTransformationOperator::LocalOrigin() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4::IfcCartesianPoint>(true); } void Ifc4::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc4::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcCartesianTransformationOperator::Scale() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcCartesianTransformationOperator::declaration() const { return *IFC4_IfcCartesianTransformationOperator_type; } @@ -12118,7 +12118,7 @@ Ifc4::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D // Function implementations for IfcCartesianTransformationOperator2DnonUniform boost::optional< double > Ifc4::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IFC4_IfcCartesianTransformationOperator2DnonUniform_type; } @@ -12138,9 +12138,9 @@ Ifc4::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D // Function implementations for IfcCartesianTransformationOperator3DnonUniform boost::optional< double > Ifc4::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IFC4_IfcCartesianTransformationOperator3DnonUniform_type; } @@ -12160,7 +12160,7 @@ Ifc4::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4::IfcProfileTypeEnu // Function implementations for IfcChiller boost::optional< ::Ifc4::IfcChillerTypeEnum::Value > Ifc4::IfcChiller::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcChillerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcChiller::setPredefinedType(boost::optional< ::Ifc4::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcChillerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcChiller::setPredefinedType(boost::optional< ::Ifc4::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcChillerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcChiller::declaration() const { return *IFC4_IfcChiller_type; } @@ -12180,7 +12180,7 @@ Ifc4::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHi // Function implementations for IfcChimney boost::optional< ::Ifc4::IfcChimneyTypeEnum::Value > Ifc4::IfcChimney::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcChimneyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcChimney::setPredefinedType(boost::optional< ::Ifc4::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcChimneyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcChimney::setPredefinedType(boost::optional< ::Ifc4::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcChimneyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcChimney::declaration() const { return *IFC4_IfcChimney_type; } @@ -12246,19 +12246,19 @@ Ifc4::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, ::Ifc4:: // Function implementations for IfcClassification boost::optional< std::string > Ifc4::IfcClassification::Source() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcClassification::Edition() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcClassification::EditionDate() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::string Ifc4::IfcClassification::Name() const { std::string v = *data_->getArgument(3); return v; } void Ifc4::IfcClassification::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcClassification::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcClassification::Location() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4::IfcClassification::ReferenceTokens() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4::IfcRelAssociatesClassification::list::ptr Ifc4::IfcClassification::ClassificationForObjects() const { return data_->getInverse(IFC4_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4::IfcClassificationReference::list::ptr Ifc4::IfcClassification::HasReferences() const { return data_->getInverse(IFC4_IfcClassificationReference_type, 3)->as(); } @@ -12272,9 +12272,9 @@ Ifc4::IfcClassification::IfcClassification(boost::optional< std::string > v1_Sou ::Ifc4::IfcClassificationReferenceSelect* Ifc4::IfcClassificationReference::ReferencedSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcClassificationReferenceSelect>(true); } void Ifc4::IfcClassificationReference::setReferencedSource(::Ifc4::IfcClassificationReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcClassificationReference::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcClassificationReference::Sort() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4::IfcRelAssociatesClassification::list::ptr Ifc4::IfcClassificationReference::ClassificationRefForObjects() const { return data_->getInverse(IFC4_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4::IfcClassificationReference::list::ptr Ifc4::IfcClassificationReference::HasReferences() const { return data_->getInverse(IFC4_IfcClassificationReference_type, 3)->as(); } @@ -12294,7 +12294,7 @@ Ifc4::IfcClosedShell::IfcClosedShell(aggregate_of< ::Ifc4::IfcFace >::ptr v1_Cfs // Function implementations for IfcCoil boost::optional< ::Ifc4::IfcCoilTypeEnum::Value > Ifc4::IfcCoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCoil::setPredefinedType(boost::optional< ::Ifc4::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCoil::setPredefinedType(boost::optional< ::Ifc4::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCoil::declaration() const { return *IFC4_IfcCoil_type; } @@ -12338,7 +12338,7 @@ Ifc4::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double > > v1 // Function implementations for IfcColourSpecification boost::optional< std::string > Ifc4::IfcColourSpecification::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4::IfcColourSpecification::declaration() const { return *IFC4_IfcColourSpecification_type; } @@ -12348,7 +12348,7 @@ Ifc4::IfcColourSpecification::IfcColourSpecification(boost::optional< std::strin // Function implementations for IfcColumn boost::optional< ::Ifc4::IfcColumnTypeEnum::Value > Ifc4::IfcColumn::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcColumnTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcColumn::setPredefinedType(boost::optional< ::Ifc4::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcColumnTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcColumn::setPredefinedType(boost::optional< ::Ifc4::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcColumnTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcColumn::declaration() const { return *IFC4_IfcColumn_type; } @@ -12376,7 +12376,7 @@ Ifc4::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHist // Function implementations for IfcCommunicationsAppliance boost::optional< ::Ifc4::IfcCommunicationsApplianceTypeEnum::Value > Ifc4::IfcCommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCommunicationsAppliance::declaration() const { return *IFC4_IfcCommunicationsAppliance_type; } @@ -12408,11 +12408,11 @@ Ifc4::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::optiona // Function implementations for IfcComplexPropertyTemplate boost::optional< std::string > Ifc4::IfcComplexPropertyTemplate::UsageName() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< ::Ifc4::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4::IfcComplexPropertyTemplate::TemplateType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4::IfcComplexPropertyTemplateTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcPropertyTemplate >::ptr > Ifc4::IfcComplexPropertyTemplate::HasPropertyTemplates() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4::IfcPropertyTemplate >(); } -void Ifc4::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4::IfcComplexPropertyTemplate::declaration() const { return *IFC4_IfcComplexPropertyTemplate_type; } @@ -12459,7 +12459,7 @@ Ifc4::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4::IfcTransitionCo aggregate_of< ::Ifc4::IfcProfileDef >::ptr Ifc4::IfcCompositeProfileDef::Profiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4::IfcProfileDef >(); } void Ifc4::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc4::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4::IfcCompositeProfileDef::Label() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcCompositeProfileDef::declaration() const { return *IFC4_IfcCompositeProfileDef_type; } @@ -12469,7 +12469,7 @@ Ifc4::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4::IfcProfileTypeEnum: // Function implementations for IfcCompressor boost::optional< ::Ifc4::IfcCompressorTypeEnum::Value > Ifc4::IfcCompressor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCompressorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCompressorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCompressorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCompressor::declaration() const { return *IFC4_IfcCompressor_type; } @@ -12489,7 +12489,7 @@ Ifc4::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4::IfcO // Function implementations for IfcCondenser boost::optional< ::Ifc4::IfcCondenserTypeEnum::Value > Ifc4::IfcCondenser::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCondenserTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCondenserTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCondenserTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCondenser::declaration() const { return *IFC4_IfcCondenser_type; } @@ -12549,11 +12549,11 @@ Ifc4::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEntity() // Function implementations for IfcConnectionPointEccentricity boost::optional< double > Ifc4::IfcConnectionPointEccentricity::EccentricityInX() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcConnectionPointEccentricity::EccentricityInY() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcConnectionPointEccentricity::EccentricityInZ() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcConnectionPointEccentricity::declaration() const { return *IFC4_IfcConnectionPointEccentricity_type; } @@ -12601,17 +12601,17 @@ Ifc4::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4::IfcSolidO std::string Ifc4::IfcConstraint::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4::IfcConstraint::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcConstraint::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4::IfcConstraintEnum::Value Ifc4::IfcConstraint::ConstraintGrade() const { return ::Ifc4::IfcConstraintEnum::FromString(*data_->getArgument(2)); } void Ifc4::IfcConstraint::setConstraintGrade(::Ifc4::IfcConstraintEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcConstraintEnum::ToString(v)));data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4::IfcConstraint::ConstraintSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4::IfcActorSelect* Ifc4::IfcConstraint::CreatingActor() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4::IfcActorSelect>(true); } void Ifc4::IfcConstraint::setCreatingActor(::Ifc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcConstraint::CreationTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcConstraint::UserDefinedGrade() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4::IfcExternalReferenceRelationship::list::ptr Ifc4::IfcConstraint::HasExternalReferences() const { return data_->getInverse(IFC4_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4::IfcResourceConstraintRelationship::list::ptr Ifc4::IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(IFC4_IfcResourceConstraintRelationship_type, 2)->as(); } @@ -12623,7 +12623,7 @@ Ifc4::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< std::st // Function implementations for IfcConstructionEquipmentResource boost::optional< ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4::IfcConstructionEquipmentResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcConstructionEquipmentResource::declaration() const { return *IFC4_IfcConstructionEquipmentResource_type; } @@ -12643,7 +12643,7 @@ Ifc4::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType // Function implementations for IfcConstructionMaterialResource boost::optional< ::Ifc4::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4::IfcConstructionMaterialResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcConstructionMaterialResource::declaration() const { return *IFC4_IfcConstructionMaterialResource_type; } @@ -12663,7 +12663,7 @@ Ifc4::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(s // Function implementations for IfcConstructionProductResource boost::optional< ::Ifc4::IfcConstructionProductResourceTypeEnum::Value > Ifc4::IfcConstructionProductResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcConstructionProductResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcConstructionProductResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcConstructionProductResource::declaration() const { return *IFC4_IfcConstructionProductResource_type; } @@ -12685,7 +12685,7 @@ Ifc4::IfcConstructionProductResourceType::IfcConstructionProductResourceType(std ::Ifc4::IfcResourceTime* Ifc4::IfcConstructionResource::Usage() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4::IfcResourceTime>(true); } void Ifc4::IfcConstructionResource::setUsage(::Ifc4::IfcResourceTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcAppliedValue >::ptr > Ifc4::IfcConstructionResource::BaseCosts() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4::IfcAppliedValue >(); } -void Ifc4::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4::IfcPhysicalQuantity* Ifc4::IfcConstructionResource::BaseQuantity() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4::IfcPhysicalQuantity>(true); } void Ifc4::IfcConstructionResource::setBaseQuantity(::Ifc4::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -12697,7 +12697,7 @@ Ifc4::IfcConstructionResource::IfcConstructionResource(std::string v1_GlobalId, // Function implementations for IfcConstructionResourceType boost::optional< aggregate_of< ::Ifc4::IfcAppliedValue >::ptr > Ifc4::IfcConstructionResourceType::BaseCosts() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4::IfcAppliedValue >(); } -void Ifc4::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4::IfcPhysicalQuantity* Ifc4::IfcConstructionResourceType::BaseQuantity() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4::IfcPhysicalQuantity>(true); } void Ifc4::IfcConstructionResourceType::setBaseQuantity(::Ifc4::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -12709,13 +12709,13 @@ Ifc4::IfcConstructionResourceType::IfcConstructionResourceType(std::string v1_Gl // Function implementations for IfcContext boost::optional< std::string > Ifc4::IfcContext::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcContext::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcContext::Phase() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcRepresentationContext >::ptr > Ifc4::IfcContext::RepresentationContexts() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4::IfcRepresentationContext >(); } -void Ifc4::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4::IfcUnitAssignment* Ifc4::IfcContext::UnitsInContext() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4::IfcUnitAssignment>(true); } void Ifc4::IfcContext::setUnitsInContext(::Ifc4::IfcUnitAssignment* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -12740,7 +12740,7 @@ Ifc4::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4::IfcDimensionalExp // Function implementations for IfcControl boost::optional< std::string > Ifc4::IfcControl::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4::IfcRelAssignsToControl::list::ptr Ifc4::IfcControl::Controls() const { return data_->getInverse(IFC4_IfcRelAssignsToControl_type, 6)->as(); } @@ -12751,7 +12751,7 @@ Ifc4::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v // Function implementations for IfcController boost::optional< ::Ifc4::IfcControllerTypeEnum::Value > Ifc4::IfcController::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcControllerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcController::setPredefinedType(boost::optional< ::Ifc4::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcControllerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcController::setPredefinedType(boost::optional< ::Ifc4::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcControllerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcController::declaration() const { return *IFC4_IfcController_type; } @@ -12794,7 +12794,7 @@ Ifc4::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(::Ifc4: // Function implementations for IfcCooledBeam boost::optional< ::Ifc4::IfcCooledBeamTypeEnum::Value > Ifc4::IfcCooledBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCooledBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCooledBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCooledBeam::declaration() const { return *IFC4_IfcCooledBeam_type; } @@ -12814,7 +12814,7 @@ Ifc4::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4::IfcO // Function implementations for IfcCoolingTower boost::optional< ::Ifc4::IfcCoolingTowerTypeEnum::Value > Ifc4::IfcCoolingTower::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCoolingTowerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCoolingTowerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCoolingTower::declaration() const { return *IFC4_IfcCoolingTower_type; } @@ -12848,11 +12848,11 @@ Ifc4::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4::IfcCoordinateRefere std::string Ifc4::IfcCoordinateReferenceSystem::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4::IfcCoordinateReferenceSystem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcCoordinateReferenceSystem::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4::IfcCoordinateReferenceSystem::VerticalDatum() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4::IfcCoordinateOperation::list::ptr Ifc4::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return data_->getInverse(IFC4_IfcCoordinateOperation_type, 0)->as(); } @@ -12863,11 +12863,11 @@ Ifc4::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(std::string v1_ // Function implementations for IfcCostItem boost::optional< ::Ifc4::IfcCostItemTypeEnum::Value > Ifc4::IfcCostItem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4::IfcCostItemTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCostItemTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCostItemTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcCostValue >::ptr > Ifc4::IfcCostItem::CostValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4::IfcCostValue >(); } -void Ifc4::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcPhysicalQuantity >::ptr > Ifc4::IfcCostItem::CostQuantities() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4::IfcPhysicalQuantity >(); } -void Ifc4::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCostItem::declaration() const { return *IFC4_IfcCostItem_type; } @@ -12877,13 +12877,13 @@ Ifc4::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* // Function implementations for IfcCostSchedule boost::optional< ::Ifc4::IfcCostScheduleTypeEnum::Value > Ifc4::IfcCostSchedule::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4::IfcCostScheduleTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCostScheduleTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCostScheduleTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcCostSchedule::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcCostSchedule::SubmittedOn() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4::IfcCostSchedule::UpdateDate() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcCostSchedule::declaration() const { return *IFC4_IfcCostSchedule_type; } @@ -12901,7 +12901,7 @@ Ifc4::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, boost:: // Function implementations for IfcCovering boost::optional< ::Ifc4::IfcCoveringTypeEnum::Value > Ifc4::IfcCovering::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCovering::setPredefinedType(boost::optional< ::Ifc4::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCoveringTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCovering::setPredefinedType(boost::optional< ::Ifc4::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCoveringTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4::IfcRelCoversSpaces::list::ptr Ifc4::IfcCovering::CoversSpaces() const { return data_->getInverse(IFC4_IfcRelCoversSpaces_type, 5)->as(); } ::Ifc4::IfcRelCoversBldgElements::list::ptr Ifc4::IfcCovering::CoversElements() const { return data_->getInverse(IFC4_IfcRelCoversBldgElements_type, 5)->as(); } @@ -12923,7 +12923,7 @@ Ifc4::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4::IfcOwner // Function implementations for IfcCrewResource boost::optional< ::Ifc4::IfcCrewResourceTypeEnum::Value > Ifc4::IfcCrewResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCrewResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCrewResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcCrewResource::declaration() const { return *IFC4_IfcCrewResource_type; } @@ -12969,7 +12969,7 @@ void Ifc4::IfcCurrencyRelationship::setRelatedMonetaryUnit(::Ifc4::IfcMonetaryUn double Ifc4::IfcCurrencyRelationship::ExchangeRate() const { double v = *data_->getArgument(4); return v; } void Ifc4::IfcCurrencyRelationship::setExchangeRate(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcCurrencyRelationship::RateDateTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4::IfcLibraryInformation* Ifc4::IfcCurrencyRelationship::RateSource() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcLibraryInformation>(true); } void Ifc4::IfcCurrencyRelationship::setRateSource(::Ifc4::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -12981,7 +12981,7 @@ Ifc4::IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< std::str // Function implementations for IfcCurtainWall boost::optional< ::Ifc4::IfcCurtainWallTypeEnum::Value > Ifc4::IfcCurtainWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCurtainWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCurtainWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcCurtainWall::declaration() const { return *IFC4_IfcCurtainWall_type; } @@ -13043,7 +13043,7 @@ void Ifc4::IfcCurveStyle::setCurveWidth(::Ifc4::IfcSizeSelect* v) { {IfcWrite::I ::Ifc4::IfcColour* Ifc4::IfcCurveStyle::CurveColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcColour>(true); } void Ifc4::IfcCurveStyle::setCurveColour(::Ifc4::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4::IfcCurveStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcCurveStyle::declaration() const { return *IFC4_IfcCurveStyle_type; } @@ -13053,7 +13053,7 @@ Ifc4::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, ::Ifc // Function implementations for IfcCurveStyleFont boost::optional< std::string > Ifc4::IfcCurveStyleFont::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc4::IfcCurveStyleFontPattern >::ptr Ifc4::IfcCurveStyleFont::PatternList() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4::IfcCurveStyleFontPattern >(); } void Ifc4::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc4::IfcCurveStyleFontPattern >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -13065,7 +13065,7 @@ Ifc4::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > v1_Nam // Function implementations for IfcCurveStyleFontAndScaling boost::optional< std::string > Ifc4::IfcCurveStyleFontAndScaling::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4::IfcCurveStyleFontSelect* Ifc4::IfcCurveStyleFontAndScaling::CurveFont() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4::IfcCurveStyleFontSelect>(true); } void Ifc4::IfcCurveStyleFontAndScaling::setCurveFont(::Ifc4::IfcCurveStyleFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } double Ifc4::IfcCurveStyleFontAndScaling::CurveFontScaling() const { double v = *data_->getArgument(2); return v; } @@ -13101,7 +13101,7 @@ Ifc4::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4::IfcAxis2Placement3D* // Function implementations for IfcDamper boost::optional< ::Ifc4::IfcDamperTypeEnum::Value > Ifc4::IfcDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcDamper::setPredefinedType(boost::optional< ::Ifc4::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcDamper::setPredefinedType(boost::optional< ::Ifc4::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcDamper::declaration() const { return *IFC4_IfcDamper_type; } @@ -13125,7 +13125,7 @@ void Ifc4::IfcDerivedProfileDef::setParentProfile(::Ifc4::IfcProfileDef* v) { {I ::Ifc4::IfcCartesianTransformationOperator2D* Ifc4::IfcDerivedProfileDef::Operator() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcCartesianTransformationOperator2D>(true); } void Ifc4::IfcDerivedProfileDef::setOperator(::Ifc4::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcDerivedProfileDef::Label() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcDerivedProfileDef::declaration() const { return *IFC4_IfcDerivedProfileDef_type; } @@ -13139,7 +13139,7 @@ void Ifc4::IfcDerivedUnit::setElements(aggregate_of< ::Ifc4::IfcDerivedUnitEleme ::Ifc4::IfcDerivedUnitEnum::Value Ifc4::IfcDerivedUnit::UnitType() const { return ::Ifc4::IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); } void Ifc4::IfcDerivedUnit::setUnitType(::Ifc4::IfcDerivedUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcDerivedUnitEnum::ToString(v)));data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcDerivedUnit::UserDefinedType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcDerivedUnit::declaration() const { return *IFC4_IfcDerivedUnit_type; } @@ -13193,7 +13193,7 @@ Ifc4::IfcDirection::IfcDirection(std::vector< double > /*[2:3]*/ v1_DirectionRat // Function implementations for IfcDiscreteAccessory boost::optional< ::Ifc4::IfcDiscreteAccessoryTypeEnum::Value > Ifc4::IfcDiscreteAccessory::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDiscreteAccessoryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDiscreteAccessoryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcDiscreteAccessory::declaration() const { return *IFC4_IfcDiscreteAccessory_type; } @@ -13213,7 +13213,7 @@ Ifc4::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_GlobalId // Function implementations for IfcDistributionChamberElement boost::optional< ::Ifc4::IfcDistributionChamberElementTypeEnum::Value > Ifc4::IfcDistributionChamberElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDistributionChamberElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDistributionChamberElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcDistributionChamberElement::declaration() const { return *IFC4_IfcDistributionChamberElement_type; } @@ -13292,11 +13292,11 @@ Ifc4::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std::string // Function implementations for IfcDistributionPort boost::optional< ::Ifc4::IfcFlowDirectionEnum::Value > Ifc4::IfcDistributionPort::FlowDirection() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4::IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); } -void Ifc4::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFlowDirectionEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFlowDirectionEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4::IfcDistributionPortTypeEnum::Value > Ifc4::IfcDistributionPort::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcDistributionPortTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDistributionPortTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDistributionPortTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4::IfcDistributionSystemEnum::Value > Ifc4::IfcDistributionPort::SystemType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4::IfcDistributionSystemEnum::FromString(*data_->getArgument(9)); } -void Ifc4::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcDistributionPort::declaration() const { return *IFC4_IfcDistributionPort_type; } @@ -13306,9 +13306,9 @@ Ifc4::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, ::Ifc4:: // Function implementations for IfcDistributionSystem boost::optional< std::string > Ifc4::IfcDistributionSystem::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< ::Ifc4::IfcDistributionSystemEnum::Value > Ifc4::IfcDistributionSystem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4::IfcDistributionSystemEnum::FromString(*data_->getArgument(6)); } -void Ifc4::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4::IfcDistributionSystem::declaration() const { return *IFC4_IfcDistributionSystem_type; } @@ -13322,35 +13322,35 @@ void Ifc4::IfcDocumentInformation::setIdentification(std::string v) { {IfcWrite: std::string Ifc4::IfcDocumentInformation::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4::IfcDocumentInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::Location() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::Purpose() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::IntendedUse() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::Scope() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::Revision() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4::IfcActorSelect* Ifc4::IfcDocumentInformation::DocumentOwner() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4::IfcActorSelect>(true); } void Ifc4::IfcDocumentInformation::setDocumentOwner(::Ifc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4::IfcDocumentInformation::Editors() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; } -void Ifc4::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::CreationTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::LastRevisionTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::ElectronicFormat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::ValidFrom() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformation::ValidUntil() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< ::Ifc4::IfcDocumentConfidentialityEnum::Value > Ifc4::IfcDocumentInformation::Confidentiality() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } return ::Ifc4::IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); } -void Ifc4::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDocumentConfidentialityEnum::ToString(*v)));data_->setArgument(15,attr);} } +void Ifc4::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDocumentConfidentialityEnum::ToString(*v)));}data_->setArgument(15,attr);} } boost::optional< ::Ifc4::IfcDocumentStatusEnum::Value > Ifc4::IfcDocumentInformation::Status() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } return ::Ifc4::IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); } -void Ifc4::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDocumentStatusEnum::ToString(*v)));data_->setArgument(16,attr);} } +void Ifc4::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDocumentStatusEnum::ToString(*v)));}data_->setArgument(16,attr);} } ::Ifc4::IfcRelAssociatesDocument::list::ptr Ifc4::IfcDocumentInformation::DocumentInfoForObjects() const { return data_->getInverse(IFC4_IfcRelAssociatesDocument_type, 5)->as(); } ::Ifc4::IfcDocumentReference::list::ptr Ifc4::IfcDocumentInformation::HasDocumentReferences() const { return data_->getInverse(IFC4_IfcDocumentReference_type, 4)->as(); } @@ -13368,7 +13368,7 @@ void Ifc4::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc4::IfcDo aggregate_of< ::Ifc4::IfcDocumentInformation >::ptr Ifc4::IfcDocumentInformationRelationship::RelatedDocuments() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4::IfcDocumentInformation >(); } void Ifc4::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc4::IfcDocumentInformation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcDocumentInformationRelationship::RelationshipType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcDocumentInformationRelationship::declaration() const { return *IFC4_IfcDocumentInformationRelationship_type; } @@ -13378,7 +13378,7 @@ Ifc4::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(boo // Function implementations for IfcDocumentReference boost::optional< std::string > Ifc4::IfcDocumentReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4::IfcDocumentInformation* Ifc4::IfcDocumentReference::ReferencedDocument() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4::IfcDocumentInformation>(true); } void Ifc4::IfcDocumentReference::setReferencedDocument(::Ifc4::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -13391,15 +13391,15 @@ Ifc4::IfcDocumentReference::IfcDocumentReference(boost::optional< std::string > // Function implementations for IfcDoor boost::optional< double > Ifc4::IfcDoor::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4::IfcDoor::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4::IfcDoorTypeEnum::Value > Ifc4::IfcDoor::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcDoorTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcDoor::setPredefinedType(boost::optional< ::Ifc4::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDoorTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcDoor::setPredefinedType(boost::optional< ::Ifc4::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDoorTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4::IfcDoorTypeOperationEnum::Value > Ifc4::IfcDoor::OperationType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(11)); } -void Ifc4::IfcDoor::setOperationType(boost::optional< ::Ifc4::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDoorTypeOperationEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4::IfcDoor::setOperationType(boost::optional< ::Ifc4::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDoorTypeOperationEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4::IfcDoor::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4::IfcDoor::declaration() const { return *IFC4_IfcDoor_type; } @@ -13409,31 +13409,31 @@ Ifc4::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Owne // Function implementations for IfcDoorLiningProperties boost::optional< double > Ifc4::IfcDoorLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::ThresholdDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::ThresholdThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::TransomThickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::TransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::LiningOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::ThresholdOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::CasingThickness() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::CasingDepth() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } ::Ifc4::IfcShapeAspect* Ifc4::IfcDoorLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc4::IfcShapeAspect>(true); } void Ifc4::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc4::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4::IfcDoorLiningProperties::declaration() const { return *IFC4_IfcDoorLiningProperties_type; } @@ -13443,11 +13443,11 @@ Ifc4::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_GlobalId, // Function implementations for IfcDoorPanelProperties boost::optional< double > Ifc4::IfcDoorPanelProperties::PanelDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4::IfcDoorPanelOperationEnum::Value Ifc4::IfcDoorPanelProperties::PanelOperation() const { return ::Ifc4::IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); } void Ifc4::IfcDoorPanelProperties::setPanelOperation(::Ifc4::IfcDoorPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcDoorPanelOperationEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcDoorPanelProperties::PanelWidth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4::IfcDoorPanelPositionEnum::Value Ifc4::IfcDoorPanelProperties::PanelPosition() const { return ::Ifc4::IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); } void Ifc4::IfcDoorPanelProperties::setPanelPosition(::Ifc4::IfcDoorPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcDoorPanelPositionEnum::ToString(v)));data_->setArgument(7,attr);} } ::Ifc4::IfcShapeAspect* Ifc4::IfcDoorPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4::IfcShapeAspect>(true); } @@ -13489,9 +13489,9 @@ void Ifc4::IfcDoorType::setPredefinedType(::Ifc4::IfcDoorTypeEnum::Value v) { {I ::Ifc4::IfcDoorTypeOperationEnum::Value Ifc4::IfcDoorType::OperationType() const { return ::Ifc4::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(10)); } void Ifc4::IfcDoorType::setOperationType(::Ifc4::IfcDoorTypeOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcDoorTypeOperationEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4::IfcDoorType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4::IfcDoorType::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4::IfcDoorType::declaration() const { return *IFC4_IfcDoorType_type; } @@ -13517,7 +13517,7 @@ Ifc4::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(std::st // Function implementations for IfcDuctFitting boost::optional< ::Ifc4::IfcDuctFittingTypeEnum::Value > Ifc4::IfcDuctFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDuctFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDuctFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcDuctFitting::declaration() const { return *IFC4_IfcDuctFitting_type; } @@ -13537,7 +13537,7 @@ Ifc4::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::Ifc4::If // Function implementations for IfcDuctSegment boost::optional< ::Ifc4::IfcDuctSegmentTypeEnum::Value > Ifc4::IfcDuctSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDuctSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDuctSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcDuctSegment::declaration() const { return *IFC4_IfcDuctSegment_type; } @@ -13557,7 +13557,7 @@ Ifc4::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::Ifc4::If // Function implementations for IfcDuctSilencer boost::optional< ::Ifc4::IfcDuctSilencerTypeEnum::Value > Ifc4::IfcDuctSilencer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDuctSilencerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDuctSilencerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcDuctSilencer::declaration() const { return *IFC4_IfcDuctSilencer_type; } @@ -13611,7 +13611,7 @@ Ifc4::IfcEdgeLoop::IfcEdgeLoop(aggregate_of< ::Ifc4::IfcOrientedEdge >::ptr v1_E // Function implementations for IfcElectricAppliance boost::optional< ::Ifc4::IfcElectricApplianceTypeEnum::Value > Ifc4::IfcElectricAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcElectricAppliance::declaration() const { return *IFC4_IfcElectricAppliance_type; } @@ -13631,7 +13631,7 @@ Ifc4::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_GlobalId // Function implementations for IfcElectricDistributionBoard boost::optional< ::Ifc4::IfcElectricDistributionBoardTypeEnum::Value > Ifc4::IfcElectricDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcElectricDistributionBoard::declaration() const { return *IFC4_IfcElectricDistributionBoard_type; } @@ -13651,7 +13651,7 @@ Ifc4::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(std::st // Function implementations for IfcElectricFlowStorageDevice boost::optional< ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4::IfcElectricFlowStorageDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcElectricFlowStorageDevice::declaration() const { return *IFC4_IfcElectricFlowStorageDevice_type; } @@ -13671,7 +13671,7 @@ Ifc4::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(std::st // Function implementations for IfcElectricGenerator boost::optional< ::Ifc4::IfcElectricGeneratorTypeEnum::Value > Ifc4::IfcElectricGenerator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricGeneratorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricGeneratorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcElectricGenerator::declaration() const { return *IFC4_IfcElectricGenerator_type; } @@ -13691,7 +13691,7 @@ Ifc4::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_GlobalId // Function implementations for IfcElectricMotor boost::optional< ::Ifc4::IfcElectricMotorTypeEnum::Value > Ifc4::IfcElectricMotor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricMotorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricMotorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcElectricMotor::declaration() const { return *IFC4_IfcElectricMotor_type; } @@ -13711,7 +13711,7 @@ Ifc4::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcElectricTimeControl boost::optional< ::Ifc4::IfcElectricTimeControlTypeEnum::Value > Ifc4::IfcElectricTimeControl::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricTimeControlTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElectricTimeControlTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcElectricTimeControl::declaration() const { return *IFC4_IfcElectricTimeControl_type; } @@ -13731,7 +13731,7 @@ Ifc4::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v1_Glob // Function implementations for IfcElement boost::optional< std::string > Ifc4::IfcElement::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4::IfcRelFillsElement::list::ptr Ifc4::IfcElement::FillsVoids() const { return data_->getInverse(IFC4_IfcRelFillsElement_type, 5)->as(); } ::Ifc4::IfcRelConnectsElements::list::ptr Ifc4::IfcElement::ConnectedTo() const { return data_->getInverse(IFC4_IfcRelConnectsElements_type, 5)->as(); } @@ -13753,9 +13753,9 @@ Ifc4::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v // Function implementations for IfcElementAssembly boost::optional< ::Ifc4::IfcAssemblyPlaceEnum::Value > Ifc4::IfcElementAssembly::AssemblyPlace() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAssemblyPlaceEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcAssemblyPlaceEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4::IfcElementAssemblyTypeEnum::Value > Ifc4::IfcElementAssembly::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElementAssemblyTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElementAssemblyTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcElementAssembly::declaration() const { return *IFC4_IfcElementAssembly_type; } @@ -13791,7 +13791,7 @@ Ifc4::IfcElementComponentType::IfcElementComponentType(std::string v1_GlobalId, // Function implementations for IfcElementQuantity boost::optional< std::string > Ifc4::IfcElementQuantity::MethodOfMeasurement() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4::IfcPhysicalQuantity >::ptr Ifc4::IfcElementQuantity::Quantities() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4::IfcPhysicalQuantity >(); } void Ifc4::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc4::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -13803,7 +13803,7 @@ Ifc4::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::Ifc4::If // Function implementations for IfcElementType boost::optional< std::string > Ifc4::IfcElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcElementType::declaration() const { return *IFC4_IfcElementType_type; } @@ -13863,7 +13863,7 @@ Ifc4::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::string v // Function implementations for IfcEngine boost::optional< ::Ifc4::IfcEngineTypeEnum::Value > Ifc4::IfcEngine::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcEngineTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcEngine::setPredefinedType(boost::optional< ::Ifc4::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcEngineTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcEngine::setPredefinedType(boost::optional< ::Ifc4::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcEngineTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcEngine::declaration() const { return *IFC4_IfcEngine_type; } @@ -13883,7 +13883,7 @@ Ifc4::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHist // Function implementations for IfcEvaporativeCooler boost::optional< ::Ifc4::IfcEvaporativeCoolerTypeEnum::Value > Ifc4::IfcEvaporativeCooler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcEvaporativeCoolerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcEvaporativeCoolerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcEvaporativeCooler::declaration() const { return *IFC4_IfcEvaporativeCooler_type; } @@ -13903,7 +13903,7 @@ Ifc4::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_GlobalId // Function implementations for IfcEvaporator boost::optional< ::Ifc4::IfcEvaporatorTypeEnum::Value > Ifc4::IfcEvaporator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcEvaporatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcEvaporatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcEvaporator::declaration() const { return *IFC4_IfcEvaporator_type; } @@ -13923,11 +13923,11 @@ Ifc4::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4::IfcO // Function implementations for IfcEvent boost::optional< ::Ifc4::IfcEventTypeEnum::Value > Ifc4::IfcEvent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4::IfcEventTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4::IfcEvent::setPredefinedType(boost::optional< ::Ifc4::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcEventTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4::IfcEvent::setPredefinedType(boost::optional< ::Ifc4::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcEventTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4::IfcEventTriggerTypeEnum::Value > Ifc4::IfcEvent::EventTriggerType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcEventTriggerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcEventTriggerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4::IfcEvent::UserDefinedEventTriggerType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4::IfcEventTime* Ifc4::IfcEvent::EventOccurenceTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4::IfcEventTime>(true); } void Ifc4::IfcEvent::setEventOccurenceTime(::Ifc4::IfcEventTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -13939,13 +13939,13 @@ Ifc4::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Ow // Function implementations for IfcEventTime boost::optional< std::string > Ifc4::IfcEventTime::ActualDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcEventTime::EarlyDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcEventTime::LateDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcEventTime::ScheduleDate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4::IfcEventTime::declaration() const { return *IFC4_IfcEventTime_type; } @@ -13959,7 +13959,7 @@ void Ifc4::IfcEventType::setPredefinedType(::Ifc4::IfcEventTypeEnum::Value v) { ::Ifc4::IfcEventTriggerTypeEnum::Value Ifc4::IfcEventType::EventTriggerType() const { return ::Ifc4::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(10)); } void Ifc4::IfcEventType::setEventTriggerType(::Ifc4::IfcEventTriggerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcEventTriggerTypeEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4::IfcEventType::UserDefinedEventTriggerType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4::IfcEventType::declaration() const { return *IFC4_IfcEventType_type; } @@ -13969,9 +13969,9 @@ Ifc4::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistor // Function implementations for IfcExtendedProperties boost::optional< std::string > Ifc4::IfcExtendedProperties::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcExtendedProperties::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4::IfcProperty >::ptr Ifc4::IfcExtendedProperties::Properties() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4::IfcProperty >(); } void Ifc4::IfcExtendedProperties::setProperties(aggregate_of< ::Ifc4::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -13991,11 +13991,11 @@ Ifc4::IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseEntity( // Function implementations for IfcExternalReference boost::optional< std::string > Ifc4::IfcExternalReference::Location() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcExternalReference::Identification() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcExternalReference::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcExternalReferenceRelationship::list::ptr Ifc4::IfcExternalReference::ExternalReferenceForResources() const { return data_->getInverse(IFC4_IfcExternalReferenceRelationship_type, 2)->as(); } @@ -14018,7 +14018,7 @@ Ifc4::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(boost:: // Function implementations for IfcExternalSpatialElement boost::optional< ::Ifc4::IfcExternalSpatialElementTypeEnum::Value > Ifc4::IfcExternalSpatialElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcExternalSpatialElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcExternalSpatialElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcExternalSpatialElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4::IfcRelSpaceBoundary::list::ptr Ifc4::IfcExternalSpatialElement::BoundedBy() const { return data_->getInverse(IFC4_IfcRelSpaceBoundary_type, 4)->as(); } @@ -14154,17 +14154,17 @@ Ifc4::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(::Ifc4::IfcClosedShell* v // Function implementations for IfcFailureConnectionCondition boost::optional< double > Ifc4::IfcFailureConnectionCondition::TensionFailureX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcFailureConnectionCondition::TensionFailureY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcFailureConnectionCondition::TensionFailureZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcFailureConnectionCondition::CompressionFailureX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4::IfcFailureConnectionCondition::CompressionFailureY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcFailureConnectionCondition::CompressionFailureZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4::IfcFailureConnectionCondition::declaration() const { return *IFC4_IfcFailureConnectionCondition_type; } @@ -14174,7 +14174,7 @@ Ifc4::IfcFailureConnectionCondition::IfcFailureConnectionCondition(boost::option // Function implementations for IfcFan boost::optional< ::Ifc4::IfcFanTypeEnum::Value > Ifc4::IfcFan::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcFanTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcFan::setPredefinedType(boost::optional< ::Ifc4::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFanTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcFan::setPredefinedType(boost::optional< ::Ifc4::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFanTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcFan::declaration() const { return *IFC4_IfcFan_type; } @@ -14194,7 +14194,7 @@ Ifc4::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v // Function implementations for IfcFastener boost::optional< ::Ifc4::IfcFastenerTypeEnum::Value > Ifc4::IfcFastener::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcFastenerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcFastener::setPredefinedType(boost::optional< ::Ifc4::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFastenerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcFastener::setPredefinedType(boost::optional< ::Ifc4::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFastenerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcFastener::declaration() const { return *IFC4_IfcFastener_type; } @@ -14242,7 +14242,7 @@ Ifc4::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::string v1_ aggregate_of_instance::ptr Ifc4::IfcFillAreaStyle::FillStyles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4::IfcFillAreaStyle::setFillStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< bool > Ifc4::IfcFillAreaStyle::ModelorDraughting() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4::IfcFillAreaStyle::setModelorDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcFillAreaStyle::setModelorDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcFillAreaStyle::declaration() const { return *IFC4_IfcFillAreaStyle_type; } @@ -14284,7 +14284,7 @@ Ifc4::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(aggregate_of< ::Ifc4::IfcVect // Function implementations for IfcFilter boost::optional< ::Ifc4::IfcFilterTypeEnum::Value > Ifc4::IfcFilter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcFilterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcFilter::setPredefinedType(boost::optional< ::Ifc4::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFilterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcFilter::setPredefinedType(boost::optional< ::Ifc4::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFilterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcFilter::declaration() const { return *IFC4_IfcFilter_type; } @@ -14304,7 +14304,7 @@ Ifc4::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHist // Function implementations for IfcFireSuppressionTerminal boost::optional< ::Ifc4::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4::IfcFireSuppressionTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcFireSuppressionTerminal::declaration() const { return *IFC4_IfcFireSuppressionTerminal_type; } @@ -14326,9 +14326,9 @@ Ifc4::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(std::string ::Ifc4::IfcCurve* Ifc4::IfcFixedReferenceSweptAreaSolid::Directrix() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4::IfcCurve>(true); } void Ifc4::IfcFixedReferenceSweptAreaSolid::setDirectrix(::Ifc4::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcFixedReferenceSweptAreaSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcFixedReferenceSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcFixedReferenceSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcFixedReferenceSweptAreaSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcFixedReferenceSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcFixedReferenceSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4::IfcDirection* Ifc4::IfcFixedReferenceSweptAreaSolid::FixedReference() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4::IfcDirection>(true); } void Ifc4::IfcFixedReferenceSweptAreaSolid::setFixedReference(::Ifc4::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -14372,7 +14372,7 @@ Ifc4::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::Ifc4::If // Function implementations for IfcFlowInstrument boost::optional< ::Ifc4::IfcFlowInstrumentTypeEnum::Value > Ifc4::IfcFlowInstrument::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFlowInstrumentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFlowInstrumentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcFlowInstrument::declaration() const { return *IFC4_IfcFlowInstrument_type; } @@ -14392,7 +14392,7 @@ Ifc4::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId, ::If // Function implementations for IfcFlowMeter boost::optional< ::Ifc4::IfcFlowMeterTypeEnum::Value > Ifc4::IfcFlowMeter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFlowMeterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFlowMeterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcFlowMeter::declaration() const { return *IFC4_IfcFlowMeter_type; } @@ -14492,7 +14492,7 @@ Ifc4::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v1_Glob // Function implementations for IfcFooting boost::optional< ::Ifc4::IfcFootingTypeEnum::Value > Ifc4::IfcFooting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcFootingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcFooting::setPredefinedType(boost::optional< ::Ifc4::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFootingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcFooting::setPredefinedType(boost::optional< ::Ifc4::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFootingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcFooting::declaration() const { return *IFC4_IfcFooting_type; } @@ -14528,7 +14528,7 @@ Ifc4::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_GlobalId // Function implementations for IfcFurniture boost::optional< ::Ifc4::IfcFurnitureTypeEnum::Value > Ifc4::IfcFurniture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcFurnitureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcFurniture::declaration() const { return *IFC4_IfcFurniture_type; } @@ -14540,7 +14540,7 @@ Ifc4::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistor ::Ifc4::IfcAssemblyPlaceEnum::Value Ifc4::IfcFurnitureType::AssemblyPlace() const { return ::Ifc4::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); } void Ifc4::IfcFurnitureType::setAssemblyPlace(::Ifc4::IfcAssemblyPlaceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcAssemblyPlaceEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< ::Ifc4::IfcFurnitureTypeEnum::Value > Ifc4::IfcFurnitureType::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcFurnitureTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcFurnitureType::declaration() const { return *IFC4_IfcFurnitureType_type; } @@ -14550,7 +14550,7 @@ Ifc4::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4::IfcOwn // Function implementations for IfcGeographicElement boost::optional< ::Ifc4::IfcGeographicElementTypeEnum::Value > Ifc4::IfcGeographicElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcGeographicElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcGeographicElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcGeographicElement::declaration() const { return *IFC4_IfcGeographicElement_type; } @@ -14580,7 +14580,7 @@ Ifc4::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of_instance::ptr v1_E int Ifc4::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { int v = *data_->getArgument(2); return v; } void Ifc4::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcGeometricRepresentationContext::Precision() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4::IfcAxis2Placement* Ifc4::IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4::IfcAxis2Placement>(true); } void Ifc4::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc4::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } ::Ifc4::IfcDirection* Ifc4::IfcGeometricRepresentationContext::TrueNorth() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4::IfcDirection>(true); } @@ -14606,11 +14606,11 @@ Ifc4::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : IfcRepr ::Ifc4::IfcGeometricRepresentationContext* Ifc4::IfcGeometricRepresentationSubContext::ParentContext() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcGeometricRepresentationContext>(true); } void Ifc4::IfcGeometricRepresentationSubContext::setParentContext(::Ifc4::IfcGeometricRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcGeometricRepresentationSubContext::TargetScale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4::IfcGeometricProjectionEnum::Value Ifc4::IfcGeometricRepresentationSubContext::TargetView() const { return ::Ifc4::IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); } void Ifc4::IfcGeometricRepresentationSubContext::setTargetView(::Ifc4::IfcGeometricProjectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcGeometricProjectionEnum::ToString(v)));data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcGeometricRepresentationSubContext::declaration() const { return *IFC4_IfcGeometricRepresentationSubContext_type; } @@ -14634,9 +14634,9 @@ void Ifc4::IfcGrid::setUAxes(aggregate_of< ::Ifc4::IfcGridAxis >::ptr v) { {IfcW aggregate_of< ::Ifc4::IfcGridAxis >::ptr Ifc4::IfcGrid::VAxes() const { aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4::IfcGridAxis >(); } void Ifc4::IfcGrid::setVAxes(aggregate_of< ::Ifc4::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcGridAxis >::ptr > Ifc4::IfcGrid::WAxes() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4::IfcGridAxis >(); } -void Ifc4::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } boost::optional< ::Ifc4::IfcGridTypeEnum::Value > Ifc4::IfcGrid::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcGridTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcGrid::setPredefinedType(boost::optional< ::Ifc4::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcGridTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcGrid::setPredefinedType(boost::optional< ::Ifc4::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcGridTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4::IfcRelContainedInSpatialStructure::list::ptr Ifc4::IfcGrid::ContainedInStructure() const { return data_->getInverse(IFC4_IfcRelContainedInSpatialStructure_type, 4)->as(); } @@ -14647,7 +14647,7 @@ Ifc4::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Owne // Function implementations for IfcGridAxis boost::optional< std::string > Ifc4::IfcGridAxis::AxisTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4::IfcCurve* Ifc4::IfcGridAxis::AxisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4::IfcCurve>(true); } void Ifc4::IfcGridAxis::setAxisCurve(::Ifc4::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } bool Ifc4::IfcGridAxis::SameSense() const { bool v = *data_->getArgument(2); return v; } @@ -14698,7 +14698,7 @@ Ifc4::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4::IfcSurface* v1_BaseSurface, b // Function implementations for IfcHeatExchanger boost::optional< ::Ifc4::IfcHeatExchangerTypeEnum::Value > Ifc4::IfcHeatExchanger::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcHeatExchangerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcHeatExchangerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcHeatExchanger::declaration() const { return *IFC4_IfcHeatExchanger_type; } @@ -14718,7 +14718,7 @@ Ifc4::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcHumidifier boost::optional< ::Ifc4::IfcHumidifierTypeEnum::Value > Ifc4::IfcHumidifier::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcHumidifierTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcHumidifierTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcHumidifierTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcHumidifier::declaration() const { return *IFC4_IfcHumidifier_type; } @@ -14746,11 +14746,11 @@ void Ifc4::IfcIShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteA double Ifc4::IfcIShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4::IfcIShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcIShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4::IfcIShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcIShapeProfileDef::declaration() const { return *IFC4_IfcIShapeProfileDef_type; } @@ -14772,7 +14772,7 @@ Ifc4::IfcImageTexture::IfcImageTexture(bool v1_RepeatS, bool v2_RepeatT, boost:: ::Ifc4::IfcTessellatedFaceSet* Ifc4::IfcIndexedColourMap::MappedTo() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4::IfcTessellatedFaceSet>(true); } void Ifc4::IfcIndexedColourMap::setMappedTo(::Ifc4::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4::IfcIndexedColourMap::Opacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4::IfcColourRgbList* Ifc4::IfcIndexedColourMap::Colours() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4::IfcColourRgbList>(true); } void Ifc4::IfcIndexedColourMap::setColours(::Ifc4::IfcColourRgbList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::vector< int > /*[1:?]*/ Ifc4::IfcIndexedColourMap::ColourIndex() const { std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } @@ -14788,9 +14788,9 @@ Ifc4::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4::IfcTessellatedFaceSet* v1 ::Ifc4::IfcCartesianPointList* Ifc4::IfcIndexedPolyCurve::Points() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4::IfcCartesianPointList>(true); } void Ifc4::IfcIndexedPolyCurve::setPoints(::Ifc4::IfcCartesianPointList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4::IfcIndexedPolyCurve::Segments() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } -void Ifc4::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4::IfcIndexedPolyCurve::SelfIntersect() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcIndexedPolyCurve::declaration() const { return *IFC4_IfcIndexedPolyCurve_type; } @@ -14833,7 +14833,7 @@ Ifc4::IfcIndexedTextureMap::IfcIndexedTextureMap(aggregate_of< ::Ifc4::IfcSurfac // Function implementations for IfcIndexedTriangleTextureMap boost::optional< std::vector< std::vector< int > > > Ifc4::IfcIndexedTriangleTextureMap::TexCoordIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } -void Ifc4::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcIndexedTriangleTextureMap::declaration() const { return *IFC4_IfcIndexedTriangleTextureMap_type; } @@ -14843,7 +14843,7 @@ Ifc4::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(aggregate_of< : // Function implementations for IfcInterceptor boost::optional< ::Ifc4::IfcInterceptorTypeEnum::Value > Ifc4::IfcInterceptor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcInterceptorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcInterceptorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcInterceptorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcInterceptor::declaration() const { return *IFC4_IfcInterceptor_type; } @@ -14871,13 +14871,13 @@ Ifc4::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4::IfcCurve* v1_Curve3D, a // Function implementations for IfcInventory boost::optional< ::Ifc4::IfcInventoryTypeEnum::Value > Ifc4::IfcInventory::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4::IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4::IfcInventory::setPredefinedType(boost::optional< ::Ifc4::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcInventoryTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4::IfcInventory::setPredefinedType(boost::optional< ::Ifc4::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcInventoryTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } ::Ifc4::IfcActorSelect* Ifc4::IfcInventory::Jurisdiction() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcActorSelect>(true); } void Ifc4::IfcInventory::setJurisdiction(::Ifc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcPerson >::ptr > Ifc4::IfcInventory::ResponsiblePersons() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4::IfcPerson >(); } -void Ifc4::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcInventory::LastUpdateDate() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4::IfcCostValue* Ifc4::IfcInventory::CurrentValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4::IfcCostValue>(true); } void Ifc4::IfcInventory::setCurrentValue(::Ifc4::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4::IfcCostValue* Ifc4::IfcInventory::OriginalValue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4::IfcCostValue>(true); } @@ -14913,7 +14913,7 @@ Ifc4::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string v1_Ti // Function implementations for IfcJunctionBox boost::optional< ::Ifc4::IfcJunctionBoxTypeEnum::Value > Ifc4::IfcJunctionBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcJunctionBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcJunctionBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcJunctionBox::declaration() const { return *IFC4_IfcJunctionBox_type; } @@ -14935,15 +14935,15 @@ Ifc4::IfcJunctionBoxType::IfcJunctionBoxType(std::string v1_GlobalId, ::Ifc4::If double Ifc4::IfcLShapeProfileDef::Depth() const { double v = *data_->getArgument(3); return v; } void Ifc4::IfcLShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcLShapeProfileDef::Width() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } double Ifc4::IfcLShapeProfileDef::Thickness() const { double v = *data_->getArgument(5); return v; } void Ifc4::IfcLShapeProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcLShapeProfileDef::FilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcLShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4::IfcLShapeProfileDef::LegSlope() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcLShapeProfileDef::declaration() const { return *IFC4_IfcLShapeProfileDef_type; } @@ -14953,7 +14953,7 @@ Ifc4::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4::IfcProfileTypeEnum::Value // Function implementations for IfcLaborResource boost::optional< ::Ifc4::IfcLaborResourceTypeEnum::Value > Ifc4::IfcLaborResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcLaborResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcLaborResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcLaborResource::declaration() const { return *IFC4_IfcLaborResource_type; } @@ -14985,7 +14985,7 @@ Ifc4::IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost::opti // Function implementations for IfcLamp boost::optional< ::Ifc4::IfcLampTypeEnum::Value > Ifc4::IfcLamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcLampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcLamp::setPredefinedType(boost::optional< ::Ifc4::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcLampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcLamp::setPredefinedType(boost::optional< ::Ifc4::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcLampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcLamp::declaration() const { return *IFC4_IfcLamp_type; } @@ -15007,15 +15007,15 @@ Ifc4::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* std::string Ifc4::IfcLibraryInformation::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4::IfcLibraryInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcLibraryInformation::Version() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4::IfcActorSelect* Ifc4::IfcLibraryInformation::Publisher() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4::IfcActorSelect>(true); } void Ifc4::IfcLibraryInformation::setPublisher(::Ifc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4::IfcLibraryInformation::VersionDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcLibraryInformation::Location() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcLibraryInformation::Description() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4::IfcRelAssociatesLibrary::list::ptr Ifc4::IfcLibraryInformation::LibraryInfoForObjects() const { return data_->getInverse(IFC4_IfcRelAssociatesLibrary_type, 5)->as(); } ::Ifc4::IfcLibraryReference::list::ptr Ifc4::IfcLibraryInformation::HasLibraryReferences() const { return data_->getInverse(IFC4_IfcLibraryReference_type, 5)->as(); } @@ -15027,9 +15027,9 @@ Ifc4::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, boost::o // Function implementations for IfcLibraryReference boost::optional< std::string > Ifc4::IfcLibraryReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcLibraryReference::Language() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4::IfcLibraryInformation* Ifc4::IfcLibraryReference::ReferencedLibrary() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4::IfcLibraryInformation>(true); } void Ifc4::IfcLibraryReference::setReferencedLibrary(::Ifc4::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -15056,7 +15056,7 @@ Ifc4::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPlaneAngl // Function implementations for IfcLightFixture boost::optional< ::Ifc4::IfcLightFixtureTypeEnum::Value > Ifc4::IfcLightFixture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcLightFixtureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcLightFixtureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcLightFixture::declaration() const { return *IFC4_IfcLightFixture_type; } @@ -15088,13 +15088,13 @@ Ifc4::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4::IfcLi // Function implementations for IfcLightSource boost::optional< std::string > Ifc4::IfcLightSource::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4::IfcColourRgb* Ifc4::IfcLightSource::LightColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4::IfcColourRgb>(true); } void Ifc4::IfcLightSource::setLightColour(::Ifc4::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcLightSource::AmbientIntensity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcLightSource::Intensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcLightSource::declaration() const { return *IFC4_IfcLightSource_type; } @@ -15162,7 +15162,7 @@ Ifc4::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< std::s ::Ifc4::IfcDirection* Ifc4::IfcLightSourceSpot::Orientation() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4::IfcDirection>(true); } void Ifc4::IfcLightSourceSpot::setOrientation(::Ifc4::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcLightSourceSpot::ConcentrationExponent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } double Ifc4::IfcLightSourceSpot::SpreadAngle() const { double v = *data_->getArgument(11); return v; } void Ifc4::IfcLightSourceSpot::setSpreadAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } double Ifc4::IfcLightSourceSpot::BeamWidthAngle() const { double v = *data_->getArgument(12); return v; } @@ -15224,11 +15224,11 @@ void Ifc4::IfcMapConversion::setNorthings(double v) { {IfcWrite::IfcWriteArgumen double Ifc4::IfcMapConversion::OrthogonalHeight() const { double v = *data_->getArgument(4); return v; } void Ifc4::IfcMapConversion::setOrthogonalHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc4::IfcMapConversion::XAxisAbscissa() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcMapConversion::XAxisOrdinate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcMapConversion::Scale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4::IfcMapConversion::declaration() const { return *IFC4_IfcMapConversion_type; } @@ -15252,9 +15252,9 @@ Ifc4::IfcMappedItem::IfcMappedItem(::Ifc4::IfcRepresentationMap* v1_MappingSourc std::string Ifc4::IfcMaterial::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4::IfcMaterial::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcMaterial::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcMaterial::Category() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcMaterialDefinitionRepresentation::list::ptr Ifc4::IfcMaterial::HasRepresentation() const { return data_->getInverse(IFC4_IfcMaterialDefinitionRepresentation_type, 3)->as(); } ::Ifc4::IfcMaterialRelationship::list::ptr Ifc4::IfcMaterial::IsRelatedWith() const { return data_->getInverse(IFC4_IfcMaterialRelationship_type, 3)->as(); } @@ -15279,15 +15279,15 @@ Ifc4::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationsh // Function implementations for IfcMaterialConstituent boost::optional< std::string > Ifc4::IfcMaterialConstituent::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcMaterialConstituent::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4::IfcMaterial* Ifc4::IfcMaterialConstituent::Material() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4::IfcMaterial>(true); } void Ifc4::IfcMaterialConstituent::setMaterial(::Ifc4::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcMaterialConstituent::Fraction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcMaterialConstituent::Category() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4::IfcMaterialConstituentSet::list::ptr Ifc4::IfcMaterialConstituent::ToMaterialConstituentSet() const { return data_->getInverse(IFC4_IfcMaterialConstituentSet_type, 2)->as(); } @@ -15298,11 +15298,11 @@ Ifc4::IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std::strin // Function implementations for IfcMaterialConstituentSet boost::optional< std::string > Ifc4::IfcMaterialConstituentSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcMaterialConstituentSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcMaterialConstituent >::ptr > Ifc4::IfcMaterialConstituentSet::MaterialConstituents() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4::IfcMaterialConstituent >(); } -void Ifc4::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcMaterialConstituentSet::declaration() const { return *IFC4_IfcMaterialConstituentSet_type; } @@ -15337,15 +15337,15 @@ void Ifc4::IfcMaterialLayer::setMaterial(::Ifc4::IfcMaterial* v) { {IfcWrite::If double Ifc4::IfcMaterialLayer::LayerThickness() const { double v = *data_->getArgument(1); return v; } void Ifc4::IfcMaterialLayer::setLayerThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< boost::logic::tribool > Ifc4::IfcMaterialLayer::IsVentilated() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } boost::logic::tribool v = *data_->getArgument(2); return v; } -void Ifc4::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4::IfcMaterialLayer::Name() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcMaterialLayer::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcMaterialLayer::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4::IfcMaterialLayer::Priority() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4::IfcMaterialLayerSet::list::ptr Ifc4::IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(IFC4_IfcMaterialLayerSet_type, 0)->as(); } @@ -15358,9 +15358,9 @@ Ifc4::IfcMaterialLayer::IfcMaterialLayer(::Ifc4::IfcMaterial* v1_Material, doubl aggregate_of< ::Ifc4::IfcMaterialLayer >::ptr Ifc4::IfcMaterialLayerSet::MaterialLayers() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4::IfcMaterialLayer >(); } void Ifc4::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc4::IfcMaterialLayer >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcMaterialLayerSet::LayerSetName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcMaterialLayerSet::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcMaterialLayerSet::declaration() const { return *IFC4_IfcMaterialLayerSet_type; } @@ -15378,7 +15378,7 @@ void Ifc4::IfcMaterialLayerSetUsage::setDirectionSense(::Ifc4::IfcDirectionSense double Ifc4::IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const { double v = *data_->getArgument(3); return v; } void Ifc4::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcMaterialLayerSetUsage::declaration() const { return *IFC4_IfcMaterialLayerSetUsage_type; } @@ -15410,17 +15410,17 @@ Ifc4::IfcMaterialList::IfcMaterialList(aggregate_of< ::Ifc4::IfcMaterial >::ptr // Function implementations for IfcMaterialProfile boost::optional< std::string > Ifc4::IfcMaterialProfile::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcMaterialProfile::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4::IfcMaterial* Ifc4::IfcMaterialProfile::Material() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4::IfcMaterial>(true); } void Ifc4::IfcMaterialProfile::setMaterial(::Ifc4::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4::IfcProfileDef* Ifc4::IfcMaterialProfile::Profile() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcProfileDef>(true); } void Ifc4::IfcMaterialProfile::setProfile(::Ifc4::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4::IfcMaterialProfile::Priority() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcMaterialProfile::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4::IfcMaterialProfileSet::list::ptr Ifc4::IfcMaterialProfile::ToMaterialProfileSet() const { return data_->getInverse(IFC4_IfcMaterialProfileSet_type, 2)->as(); } @@ -15431,9 +15431,9 @@ Ifc4::IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string > v1_N // Function implementations for IfcMaterialProfileSet boost::optional< std::string > Ifc4::IfcMaterialProfileSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcMaterialProfileSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4::IfcMaterialProfile >::ptr Ifc4::IfcMaterialProfileSet::MaterialProfiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4::IfcMaterialProfile >(); } void Ifc4::IfcMaterialProfileSet::setMaterialProfiles(aggregate_of< ::Ifc4::IfcMaterialProfile >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } ::Ifc4::IfcCompositeProfileDef* Ifc4::IfcMaterialProfileSet::CompositeProfile() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcCompositeProfileDef>(true); } @@ -15449,9 +15449,9 @@ Ifc4::IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::string ::Ifc4::IfcMaterialProfileSet* Ifc4::IfcMaterialProfileSetUsage::ForProfileSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4::IfcMaterialProfileSet>(true); } void Ifc4::IfcMaterialProfileSetUsage::setForProfileSet(::Ifc4::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< int > Ifc4::IfcMaterialProfileSetUsage::CardinalPoint() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; } -void Ifc4::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcMaterialProfileSetUsage::declaration() const { return *IFC4_IfcMaterialProfileSetUsage_type; } @@ -15463,7 +15463,7 @@ Ifc4::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4::IfcMaterial ::Ifc4::IfcMaterialProfileSet* Ifc4::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcMaterialProfileSet>(true); } void Ifc4::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(::Ifc4::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcMaterialProfileSetUsageTapering::declaration() const { return *IFC4_IfcMaterialProfileSetUsageTapering_type; } @@ -15497,7 +15497,7 @@ void Ifc4::IfcMaterialRelationship::setRelatingMaterial(::Ifc4::IfcMaterial* v) aggregate_of< ::Ifc4::IfcMaterial >::ptr Ifc4::IfcMaterialRelationship::RelatedMaterials() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4::IfcMaterial >(); } void Ifc4::IfcMaterialRelationship::setRelatedMaterials(aggregate_of< ::Ifc4::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcMaterialRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcMaterialRelationship::declaration() const { return *IFC4_IfcMaterialRelationship_type; } @@ -15528,11 +15528,11 @@ Ifc4::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4::IfcValue* v1_ValueComponent // Function implementations for IfcMechanicalFastener boost::optional< double > Ifc4::IfcMechanicalFastener::NominalDiameter() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4::IfcMechanicalFastener::NominalLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4::IfcMechanicalFastenerTypeEnum::Value > Ifc4::IfcMechanicalFastener::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcMechanicalFastenerTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcMechanicalFastenerTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcMechanicalFastener::declaration() const { return *IFC4_IfcMechanicalFastener_type; } @@ -15544,9 +15544,9 @@ Ifc4::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId, ::If ::Ifc4::IfcMechanicalFastenerTypeEnum::Value Ifc4::IfcMechanicalFastenerType::PredefinedType() const { return ::Ifc4::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4::IfcMechanicalFastenerType::setPredefinedType(::Ifc4::IfcMechanicalFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcMechanicalFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcMechanicalFastenerType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcMechanicalFastenerType::NominalLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4::IfcMechanicalFastenerType::declaration() const { return *IFC4_IfcMechanicalFastenerType_type; } @@ -15556,7 +15556,7 @@ Ifc4::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_Global // Function implementations for IfcMedicalDevice boost::optional< ::Ifc4::IfcMedicalDeviceTypeEnum::Value > Ifc4::IfcMedicalDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcMedicalDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcMedicalDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcMedicalDevice::declaration() const { return *IFC4_IfcMedicalDevice_type; } @@ -15576,7 +15576,7 @@ Ifc4::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcMember boost::optional< ::Ifc4::IfcMemberTypeEnum::Value > Ifc4::IfcMember::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcMemberTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcMember::setPredefinedType(boost::optional< ::Ifc4::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcMemberTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcMember::setPredefinedType(boost::optional< ::Ifc4::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcMemberTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcMember::declaration() const { return *IFC4_IfcMember_type; } @@ -15606,7 +15606,7 @@ Ifc4::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHist ::Ifc4::IfcBenchmarkEnum::Value Ifc4::IfcMetric::Benchmark() const { return ::Ifc4::IfcBenchmarkEnum::FromString(*data_->getArgument(7)); } void Ifc4::IfcMetric::setBenchmark(::Ifc4::IfcBenchmarkEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcBenchmarkEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcMetric::ValueSource() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4::IfcMetricValueSelect* Ifc4::IfcMetric::DataValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4::IfcMetricValueSelect>(true); } void Ifc4::IfcMetric::setDataValue(::Ifc4::IfcMetricValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4::IfcReference* Ifc4::IfcMetric::ReferencePath() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4::IfcReference>(true); } @@ -15638,7 +15638,7 @@ Ifc4::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil::IfcBa // Function implementations for IfcMotorConnection boost::optional< ::Ifc4::IfcMotorConnectionTypeEnum::Value > Ifc4::IfcMotorConnection::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcMotorConnectionTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcMotorConnectionTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcMotorConnection::declaration() const { return *IFC4_IfcMotorConnection_type; } @@ -15670,7 +15670,7 @@ Ifc4::IfcNamedUnit::IfcNamedUnit(::Ifc4::IfcDimensionalExponents* v1_Dimensions, // Function implementations for IfcObject boost::optional< std::string > Ifc4::IfcObject::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4::IfcRelDefinesByObject::list::ptr Ifc4::IfcObject::IsDeclaredBy() const { return data_->getInverse(IFC4_IfcRelDefinesByObject_type, 4)->as(); } ::Ifc4::IfcRelDefinesByObject::list::ptr Ifc4::IfcObject::Declares() const { return data_->getInverse(IFC4_IfcRelDefinesByObject_type, 5)->as(); } @@ -15709,13 +15709,13 @@ Ifc4::IfcObjectPlacement::IfcObjectPlacement() : IfcUtil::IfcBaseEntity() {data_ // Function implementations for IfcObjective boost::optional< aggregate_of< ::Ifc4::IfcConstraint >::ptr > Ifc4::IfcObjective::BenchmarkValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4::IfcConstraint >(); } -void Ifc4::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4::IfcLogicalOperatorEnum::Value > Ifc4::IfcObjective::LogicalAggregator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcLogicalOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcLogicalOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcLogicalOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4::IfcObjectiveEnum::Value Ifc4::IfcObjective::ObjectiveQualifier() const { return ::Ifc4::IfcObjectiveEnum::FromString(*data_->getArgument(9)); } void Ifc4::IfcObjective::setObjectiveQualifier(::Ifc4::IfcObjectiveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcObjectiveEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4::IfcObjective::UserDefinedQualifier() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcObjective::declaration() const { return *IFC4_IfcObjective_type; } @@ -15725,7 +15725,7 @@ Ifc4::IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std::stri // Function implementations for IfcOccupant boost::optional< ::Ifc4::IfcOccupantTypeEnum::Value > Ifc4::IfcOccupant::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4::IfcOccupantTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcOccupantTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcOccupantTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4::IfcOccupant::declaration() const { return *IFC4_IfcOccupant_type; } @@ -15773,7 +15773,7 @@ Ifc4::IfcOpenShell::IfcOpenShell(aggregate_of< ::Ifc4::IfcFace >::ptr v1_CfsFace // Function implementations for IfcOpeningElement boost::optional< ::Ifc4::IfcOpeningElementTypeEnum::Value > Ifc4::IfcOpeningElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcOpeningElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcOpeningElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcOpeningElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4::IfcRelFillsElement::list::ptr Ifc4::IfcOpeningElement::HasFillings() const { return data_->getInverse(IFC4_IfcRelFillsElement_type, 4)->as(); } @@ -15792,15 +15792,15 @@ Ifc4::IfcOpeningStandardCase::IfcOpeningStandardCase(std::string v1_GlobalId, :: // Function implementations for IfcOrganization boost::optional< std::string > Ifc4::IfcOrganization::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } std::string Ifc4::IfcOrganization::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4::IfcOrganization::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcOrganization::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcActorRole >::ptr > Ifc4::IfcOrganization::Roles() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4::IfcActorRole >(); } -void Ifc4::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(3,attr);} } +void Ifc4::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcAddress >::ptr > Ifc4::IfcOrganization::Addresses() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4::IfcAddress >(); } -void Ifc4::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(4,attr);} } +void Ifc4::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(4,attr);} } ::Ifc4::IfcOrganizationRelationship::list::ptr Ifc4::IfcOrganization::IsRelatedBy() const { return data_->getInverse(IFC4_IfcOrganizationRelationship_type, 3)->as(); } ::Ifc4::IfcOrganizationRelationship::list::ptr Ifc4::IfcOrganization::Relates() const { return data_->getInverse(IFC4_IfcOrganizationRelationship_type, 2)->as(); } @@ -15845,7 +15845,7 @@ Ifc4::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(aggregate_of< ::Ifc4::IfcComp // Function implementations for IfcOutlet boost::optional< ::Ifc4::IfcOutletTypeEnum::Value > Ifc4::IfcOutlet::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcOutletTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcOutletTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcOutletTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcOutlet::declaration() const { return *IFC4_IfcOutlet_type; } @@ -15869,11 +15869,11 @@ void Ifc4::IfcOwnerHistory::setOwningUser(::Ifc4::IfcPersonAndOrganization* v) { ::Ifc4::IfcApplication* Ifc4::IfcOwnerHistory::OwningApplication() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4::IfcApplication>(true); } void Ifc4::IfcOwnerHistory::setOwningApplication(::Ifc4::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4::IfcStateEnum::Value > Ifc4::IfcOwnerHistory::State() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4::IfcStateEnum::FromString(*data_->getArgument(2)); } -void Ifc4::IfcOwnerHistory::setState(boost::optional< ::Ifc4::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcStateEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4::IfcOwnerHistory::setState(boost::optional< ::Ifc4::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcStateEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< ::Ifc4::IfcChangeActionEnum::Value > Ifc4::IfcOwnerHistory::ChangeAction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4::IfcChangeActionEnum::FromString(*data_->getArgument(3)); } -void Ifc4::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcChangeActionEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcChangeActionEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< int > Ifc4::IfcOwnerHistory::LastModifiedDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4::IfcPersonAndOrganization* Ifc4::IfcOwnerHistory::LastModifyingUser() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4::IfcPersonAndOrganization>(true); } void Ifc4::IfcOwnerHistory::setLastModifyingUser(::Ifc4::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4::IfcApplication* Ifc4::IfcOwnerHistory::LastModifyingApplication() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcApplication>(true); } @@ -15923,7 +15923,7 @@ Ifc4::IfcPcurve::IfcPcurve(::Ifc4::IfcSurface* v1_BasisSurface, ::Ifc4::IfcCurve std::string Ifc4::IfcPerformanceHistory::LifeCyclePhase() const { std::string v = *data_->getArgument(6); return v; } void Ifc4::IfcPerformanceHistory::setLifeCyclePhase(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4::IfcPerformanceHistoryTypeEnum::Value > Ifc4::IfcPerformanceHistory::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4::IfcPerformanceHistoryTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPerformanceHistoryTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPerformanceHistoryTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4::IfcPerformanceHistory::declaration() const { return *IFC4_IfcPerformanceHistory_type; } @@ -15937,9 +15937,9 @@ void Ifc4::IfcPermeableCoveringProperties::setOperationType(::Ifc4::IfcPermeable ::Ifc4::IfcWindowPanelPositionEnum::Value Ifc4::IfcPermeableCoveringProperties::PanelPosition() const { return ::Ifc4::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4::IfcPermeableCoveringProperties::setPanelPosition(::Ifc4::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcPermeableCoveringProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcPermeableCoveringProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4::IfcShapeAspect* Ifc4::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4::IfcShapeAspect>(true); } void Ifc4::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc4::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -15951,11 +15951,11 @@ Ifc4::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std::string // Function implementations for IfcPermit boost::optional< ::Ifc4::IfcPermitTypeEnum::Value > Ifc4::IfcPermit::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4::IfcPermitTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4::IfcPermit::setPredefinedType(boost::optional< ::Ifc4::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPermitTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4::IfcPermit::setPredefinedType(boost::optional< ::Ifc4::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPermitTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcPermit::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcPermit::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcPermit::declaration() const { return *IFC4_IfcPermit_type; } @@ -15965,21 +15965,21 @@ Ifc4::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_ // Function implementations for IfcPerson boost::optional< std::string > Ifc4::IfcPerson::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcPerson::FamilyName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcPerson::GivenName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4::IfcPerson::MiddleNames() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4::IfcPerson::PrefixTitles() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4::IfcPerson::SuffixTitles() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcActorRole >::ptr > Ifc4::IfcPerson::Roles() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4::IfcActorRole >(); } -void Ifc4::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcAddress >::ptr > Ifc4::IfcPerson::Addresses() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4::IfcAddress >(); } -void Ifc4::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4::IfcPersonAndOrganization::list::ptr Ifc4::IfcPerson::EngagedIn() const { return data_->getInverse(IFC4_IfcPersonAndOrganization_type, 0)->as(); } @@ -15994,7 +15994,7 @@ void Ifc4::IfcPersonAndOrganization::setThePerson(::Ifc4::IfcPerson* v) { {IfcWr ::Ifc4::IfcOrganization* Ifc4::IfcPersonAndOrganization::TheOrganization() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4::IfcOrganization>(true); } void Ifc4::IfcPersonAndOrganization::setTheOrganization(::Ifc4::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcActorRole >::ptr > Ifc4::IfcPersonAndOrganization::Roles() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4::IfcActorRole >(); } -void Ifc4::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcPersonAndOrganization::declaration() const { return *IFC4_IfcPersonAndOrganization_type; } @@ -16008,9 +16008,9 @@ void Ifc4::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::Ifc4::If std::string Ifc4::IfcPhysicalComplexQuantity::Discrimination() const { std::string v = *data_->getArgument(3); return v; } void Ifc4::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcPhysicalComplexQuantity::Quality() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcPhysicalComplexQuantity::Usage() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4::IfcPhysicalComplexQuantity::declaration() const { return *IFC4_IfcPhysicalComplexQuantity_type; } @@ -16022,7 +16022,7 @@ Ifc4::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v1_Name std::string Ifc4::IfcPhysicalQuantity::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4::IfcPhysicalQuantity::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcPhysicalQuantity::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4::IfcExternalReferenceRelationship::list::ptr Ifc4::IfcPhysicalQuantity::HasExternalReferences() const { return data_->getInverse(IFC4_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4::IfcPhysicalComplexQuantity::list::ptr Ifc4::IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(IFC4_IfcPhysicalComplexQuantity_type, 2)->as(); } @@ -16044,9 +16044,9 @@ Ifc4::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_Name, // Function implementations for IfcPile boost::optional< ::Ifc4::IfcPileTypeEnum::Value > Ifc4::IfcPile::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcPileTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcPile::setPredefinedType(boost::optional< ::Ifc4::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPileTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcPile::setPredefinedType(boost::optional< ::Ifc4::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPileTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4::IfcPileConstructionEnum::Value > Ifc4::IfcPile::ConstructionType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4::IfcPileConstructionEnum::FromString(*data_->getArgument(9)); } -void Ifc4::IfcPile::setConstructionType(boost::optional< ::Ifc4::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPileConstructionEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4::IfcPile::setConstructionType(boost::optional< ::Ifc4::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPileConstructionEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcPile::declaration() const { return *IFC4_IfcPile_type; } @@ -16066,7 +16066,7 @@ Ifc4::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* // Function implementations for IfcPipeFitting boost::optional< ::Ifc4::IfcPipeFittingTypeEnum::Value > Ifc4::IfcPipeFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPipeFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPipeFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcPipeFitting::declaration() const { return *IFC4_IfcPipeFitting_type; } @@ -16086,7 +16086,7 @@ Ifc4::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::Ifc4::If // Function implementations for IfcPipeSegment boost::optional< ::Ifc4::IfcPipeSegmentTypeEnum::Value > Ifc4::IfcPipeSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPipeSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPipeSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcPipeSegment::declaration() const { return *IFC4_IfcPipeSegment_type; } @@ -16162,7 +16162,7 @@ Ifc4::IfcPlane::IfcPlane(::Ifc4::IfcAxis2Placement3D* v1_Position) : IfcElementa // Function implementations for IfcPlate boost::optional< ::Ifc4::IfcPlateTypeEnum::Value > Ifc4::IfcPlate::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcPlateTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcPlate::setPredefinedType(boost::optional< ::Ifc4::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPlateTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcPlate::setPredefinedType(boost::optional< ::Ifc4::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPlateTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcPlate::declaration() const { return *IFC4_IfcPlate_type; } @@ -16246,11 +16246,11 @@ Ifc4::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4::IfcSurf // Function implementations for IfcPolygonalFaceSet boost::optional< bool > Ifc4::IfcPolygonalFaceSet::Closed() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4::IfcIndexedPolygonalFace >::ptr Ifc4::IfcPolygonalFaceSet::Faces() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4::IfcIndexedPolygonalFace >(); } void Ifc4::IfcPolygonalFaceSet::setFaces(aggregate_of< ::Ifc4::IfcIndexedPolygonalFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4::IfcPolygonalFaceSet::PnIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcPolygonalFaceSet::declaration() const { return *IFC4_IfcPolygonalFaceSet_type; } @@ -16281,19 +16281,19 @@ Ifc4::IfcPort::IfcPort(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Owne // Function implementations for IfcPostalAddress boost::optional< std::string > Ifc4::IfcPostalAddress::InternalLocation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4::IfcPostalAddress::AddressLines() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcPostalAddress::PostalBox() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcPostalAddress::Town() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcPostalAddress::Region() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcPostalAddress::PostalCode() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4::IfcPostalAddress::Country() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcPostalAddress::declaration() const { return *IFC4_IfcPostalAddress_type; } @@ -16363,11 +16363,11 @@ Ifc4::IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity() {dat std::string Ifc4::IfcPresentationLayerAssignment::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4::IfcPresentationLayerAssignment::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcPresentationLayerAssignment::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of_instance::ptr Ifc4::IfcPresentationLayerAssignment::AssignedItems() const { aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } void Ifc4::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4::IfcPresentationLayerAssignment::Identifier() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcPresentationLayerAssignment::declaration() const { return *IFC4_IfcPresentationLayerAssignment_type; } @@ -16393,7 +16393,7 @@ Ifc4::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::string v // Function implementations for IfcPresentationStyle boost::optional< std::string > Ifc4::IfcPresentationStyle::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4::IfcPresentationStyle::declaration() const { return *IFC4_IfcPresentationStyle_type; } @@ -16413,7 +16413,7 @@ Ifc4::IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(aggregate_o // Function implementations for IfcProcedure boost::optional< ::Ifc4::IfcProcedureTypeEnum::Value > Ifc4::IfcProcedure::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4::IfcProcedureTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProcedureTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProcedureTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4::IfcProcedure::declaration() const { return *IFC4_IfcProcedure_type; } @@ -16433,9 +16433,9 @@ Ifc4::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4::IfcOwn // Function implementations for IfcProcess boost::optional< std::string > Ifc4::IfcProcess::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcProcess::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4::IfcRelSequence::list::ptr Ifc4::IfcProcess::IsPredecessorTo() const { return data_->getInverse(IFC4_IfcRelSequence_type, 4)->as(); } ::Ifc4::IfcRelSequence::list::ptr Ifc4::IfcProcess::IsSuccessorFrom() const { return data_->getInverse(IFC4_IfcRelSequence_type, 5)->as(); } @@ -16471,9 +16471,9 @@ Ifc4::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional< std: // Function implementations for IfcProductRepresentation boost::optional< std::string > Ifc4::IfcProductRepresentation::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcProductRepresentation::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4::IfcRepresentation >::ptr Ifc4::IfcProductRepresentation::Representations() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4::IfcRepresentation >(); } void Ifc4::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc4::IfcRepresentation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -16487,7 +16487,7 @@ Ifc4::IfcProductRepresentation::IfcProductRepresentation(boost::optional< std::s ::Ifc4::IfcProfileTypeEnum::Value Ifc4::IfcProfileDef::ProfileType() const { return ::Ifc4::IfcProfileTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4::IfcProfileDef::setProfileType(::Ifc4::IfcProfileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcProfileTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcProfileDef::ProfileName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4::IfcExternalReferenceRelationship::list::ptr Ifc4::IfcProfileDef::HasExternalReference() const { return data_->getInverse(IFC4_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4::IfcProfileProperties::list::ptr Ifc4::IfcProfileDef::HasProperties() const { return data_->getInverse(IFC4_IfcProfileProperties_type, 3)->as(); } @@ -16525,11 +16525,11 @@ Ifc4::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4::IfcO // Function implementations for IfcProjectOrder boost::optional< ::Ifc4::IfcProjectOrderTypeEnum::Value > Ifc4::IfcProjectOrder::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4::IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProjectOrderTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProjectOrderTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcProjectOrder::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcProjectOrder::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcProjectOrder::declaration() const { return *IFC4_IfcProjectOrder_type; } @@ -16539,9 +16539,9 @@ Ifc4::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4::IfcOwner // Function implementations for IfcProjectedCRS boost::optional< std::string > Ifc4::IfcProjectedCRS::MapProjection() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcProjectedCRS::MapZone() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4::IfcNamedUnit* Ifc4::IfcProjectedCRS::MapUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcNamedUnit>(true); } void Ifc4::IfcProjectedCRS::setMapUnit(::Ifc4::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -16553,7 +16553,7 @@ Ifc4::IfcProjectedCRS::IfcProjectedCRS(std::string v1_Name, boost::optional< std // Function implementations for IfcProjectionElement boost::optional< ::Ifc4::IfcProjectionElementTypeEnum::Value > Ifc4::IfcProjectionElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcProjectionElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProjectionElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProjectionElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcProjectionElement::declaration() const { return *IFC4_IfcProjectionElement_type; } @@ -16565,7 +16565,7 @@ Ifc4::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, ::Ifc4 std::string Ifc4::IfcProperty::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4::IfcProperty::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcProperty::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4::IfcPropertySet::list::ptr Ifc4::IfcProperty::PartOfPset() const { return data_->getInverse(IFC4_IfcPropertySet_type, 4)->as(); } ::Ifc4::IfcPropertyDependencyRelationship::list::ptr Ifc4::IfcProperty::PropertyForDependance() const { return data_->getInverse(IFC4_IfcPropertyDependencyRelationship_type, 2)->as(); } @@ -16620,7 +16620,7 @@ void Ifc4::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc4::IfcPr ::Ifc4::IfcProperty* Ifc4::IfcPropertyDependencyRelationship::DependantProperty() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcProperty>(true); } void Ifc4::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc4::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcPropertyDependencyRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcPropertyDependencyRelationship::declaration() const { return *IFC4_IfcPropertyDependencyRelationship_type; } @@ -16630,7 +16630,7 @@ Ifc4::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(boost // Function implementations for IfcPropertyEnumeratedValue boost::optional< aggregate_of_instance::ptr > Ifc4::IfcPropertyEnumeratedValue::EnumerationValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcPropertyEnumeration* Ifc4::IfcPropertyEnumeratedValue::EnumerationReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcPropertyEnumeration>(true); } void Ifc4::IfcPropertyEnumeratedValue::setEnumerationReference(::Ifc4::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -16656,7 +16656,7 @@ Ifc4::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, aggreg // Function implementations for IfcPropertyListValue boost::optional< aggregate_of_instance::ptr > Ifc4::IfcPropertyListValue::ListValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcUnit* Ifc4::IfcPropertyListValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcUnit>(true); } void Ifc4::IfcPropertyListValue::setUnit(::Ifc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -16668,7 +16668,7 @@ Ifc4::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boost::opt // Function implementations for IfcPropertyReferenceValue boost::optional< std::string > Ifc4::IfcPropertyReferenceValue::UsageName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcObjectReferenceSelect* Ifc4::IfcPropertyReferenceValue::PropertyReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcObjectReferenceSelect>(true); } void Ifc4::IfcPropertyReferenceValue::setPropertyReference(::Ifc4::IfcObjectReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -16701,9 +16701,9 @@ Ifc4::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_GlobalId // Function implementations for IfcPropertySetTemplate boost::optional< ::Ifc4::IfcPropertySetTemplateTypeEnum::Value > Ifc4::IfcPropertySetTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4::IfcPropertySetTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPropertySetTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPropertySetTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcPropertySetTemplate::ApplicableEntity() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } aggregate_of< ::Ifc4::IfcPropertyTemplate >::ptr Ifc4::IfcPropertySetTemplate::HasPropertyTemplates() const { aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4::IfcPropertyTemplate >(); } void Ifc4::IfcPropertySetTemplate::setHasPropertyTemplates(aggregate_of< ::Ifc4::IfcPropertyTemplate >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(6,attr);} } @@ -16728,17 +16728,17 @@ Ifc4::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, boost: // Function implementations for IfcPropertyTableValue boost::optional< aggregate_of_instance::ptr > Ifc4::IfcPropertyTableValue::DefiningValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4::IfcPropertyTableValue::DefinedValues() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(3); return v; } -void Ifc4::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcPropertyTableValue::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4::IfcUnit* Ifc4::IfcPropertyTableValue::DefiningUnit() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4::IfcUnit>(true); } void Ifc4::IfcPropertyTableValue::setDefiningUnit(::Ifc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4::IfcUnit* Ifc4::IfcPropertyTableValue::DefinedUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcUnit>(true); } void Ifc4::IfcPropertyTableValue::setDefinedUnit(::Ifc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4::IfcCurveInterpolationEnum::Value > Ifc4::IfcPropertyTableValue::CurveInterpolation() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4::IfcCurveInterpolationEnum::FromString(*data_->getArgument(7)); } -void Ifc4::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCurveInterpolationEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcCurveInterpolationEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4::IfcPropertyTableValue::declaration() const { return *IFC4_IfcPropertyTableValue_type; } @@ -16766,7 +16766,7 @@ Ifc4::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::string v // Function implementations for IfcProtectiveDevice boost::optional< ::Ifc4::IfcProtectiveDeviceTypeEnum::Value > Ifc4::IfcProtectiveDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProtectiveDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProtectiveDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcProtectiveDevice::declaration() const { return *IFC4_IfcProtectiveDevice_type; } @@ -16776,7 +16776,7 @@ Ifc4::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, ::Ifc4:: // Function implementations for IfcProtectiveDeviceTrippingUnit boost::optional< ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcProtectiveDeviceTrippingUnit::declaration() const { return *IFC4_IfcProtectiveDeviceTrippingUnit_type; } @@ -16808,7 +16808,7 @@ Ifc4::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_GlobalId, ::Ifc4::IfcObjectTypeEnum::Value Ifc4::IfcProxy::ProxyType() const { return ::Ifc4::IfcObjectTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4::IfcProxy::setProxyType(::Ifc4::IfcObjectTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcObjectTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcProxy::Tag() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcProxy::declaration() const { return *IFC4_IfcProxy_type; } @@ -16818,7 +16818,7 @@ Ifc4::IfcProxy::IfcProxy(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Ow // Function implementations for IfcPump boost::optional< ::Ifc4::IfcPumpTypeEnum::Value > Ifc4::IfcPump::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcPumpTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcPump::setPredefinedType(boost::optional< ::Ifc4::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPumpTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcPump::setPredefinedType(boost::optional< ::Ifc4::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcPumpTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcPump::declaration() const { return *IFC4_IfcPump_type; } @@ -16840,7 +16840,7 @@ Ifc4::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* double Ifc4::IfcQuantityArea::AreaValue() const { double v = *data_->getArgument(3); return v; } void Ifc4::IfcQuantityArea::setAreaValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcQuantityArea::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcQuantityArea::declaration() const { return *IFC4_IfcQuantityArea_type; } @@ -16852,7 +16852,7 @@ Ifc4::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optional< std double Ifc4::IfcQuantityCount::CountValue() const { double v = *data_->getArgument(3); return v; } void Ifc4::IfcQuantityCount::setCountValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcQuantityCount::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcQuantityCount::declaration() const { return *IFC4_IfcQuantityCount_type; } @@ -16864,7 +16864,7 @@ Ifc4::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optional< s double Ifc4::IfcQuantityLength::LengthValue() const { double v = *data_->getArgument(3); return v; } void Ifc4::IfcQuantityLength::setLengthValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcQuantityLength::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcQuantityLength::declaration() const { return *IFC4_IfcQuantityLength_type; } @@ -16884,7 +16884,7 @@ Ifc4::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4::IfcOwnerHi double Ifc4::IfcQuantityTime::TimeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4::IfcQuantityTime::setTimeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcQuantityTime::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcQuantityTime::declaration() const { return *IFC4_IfcQuantityTime_type; } @@ -16896,7 +16896,7 @@ Ifc4::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optional< std double Ifc4::IfcQuantityVolume::VolumeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4::IfcQuantityVolume::setVolumeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcQuantityVolume::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcQuantityVolume::declaration() const { return *IFC4_IfcQuantityVolume_type; } @@ -16908,7 +16908,7 @@ Ifc4::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::optional< double Ifc4::IfcQuantityWeight::WeightValue() const { double v = *data_->getArgument(3); return v; } void Ifc4::IfcQuantityWeight::setWeightValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcQuantityWeight::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcQuantityWeight::declaration() const { return *IFC4_IfcQuantityWeight_type; } @@ -16918,7 +16918,7 @@ Ifc4::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::optional< // Function implementations for IfcRailing boost::optional< ::Ifc4::IfcRailingTypeEnum::Value > Ifc4::IfcRailing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcRailingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcRailing::setPredefinedType(boost::optional< ::Ifc4::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcRailingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcRailing::setPredefinedType(boost::optional< ::Ifc4::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcRailingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcRailing::declaration() const { return *IFC4_IfcRailing_type; } @@ -16938,7 +16938,7 @@ Ifc4::IfcRailingType::IfcRailingType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHi // Function implementations for IfcRamp boost::optional< ::Ifc4::IfcRampTypeEnum::Value > Ifc4::IfcRamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcRampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcRamp::setPredefinedType(boost::optional< ::Ifc4::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcRampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcRamp::setPredefinedType(boost::optional< ::Ifc4::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcRampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcRamp::declaration() const { return *IFC4_IfcRamp_type; } @@ -16948,7 +16948,7 @@ Ifc4::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Owne // Function implementations for IfcRampFlight boost::optional< ::Ifc4::IfcRampFlightTypeEnum::Value > Ifc4::IfcRampFlight::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcRampFlightTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcRampFlightTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcRampFlightTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcRampFlight::declaration() const { return *IFC4_IfcRampFlight_type; } @@ -17000,9 +17000,9 @@ Ifc4::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(int double Ifc4::IfcRectangleHollowProfileDef::WallThickness() const { double v = *data_->getArgument(5); return v; } void Ifc4::IfcRectangleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4::IfcRectangleHollowProfileDef::declaration() const { return *IFC4_IfcRectangleHollowProfileDef_type; } @@ -17062,19 +17062,19 @@ Ifc4::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4::IfcSurf ::Ifc4::IfcRecurrenceTypeEnum::Value Ifc4::IfcRecurrencePattern::RecurrenceType() const { return ::Ifc4::IfcRecurrenceTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4::IfcRecurrencePattern::setRecurrenceType(::Ifc4::IfcRecurrenceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcRecurrenceTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4::IfcRecurrencePattern::DayComponent() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4::IfcRecurrencePattern::WeekdayComponent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4::IfcRecurrencePattern::MonthComponent() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< int > Ifc4::IfcRecurrencePattern::Position() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< int > Ifc4::IfcRecurrencePattern::Interval() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } int v = *data_->getArgument(5); return v; } -void Ifc4::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4::IfcRecurrencePattern::Occurrences() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcTimePeriod >::ptr > Ifc4::IfcRecurrencePattern::TimePeriods() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4::IfcTimePeriod >(); } -void Ifc4::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4::IfcRecurrencePattern::declaration() const { return *IFC4_IfcRecurrencePattern_type; } @@ -17084,13 +17084,13 @@ Ifc4::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4::IfcRecurrenceTypeEnum:: // Function implementations for IfcReference boost::optional< std::string > Ifc4::IfcReference::TypeIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcReference::AttributeIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcReference::InstanceName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4::IfcReference::ListPositions() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4::IfcReference* Ifc4::IfcReference::InnerReference() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4::IfcReference>(true); } void Ifc4::IfcReference::setInnerReference(::Ifc4::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -17118,13 +17118,13 @@ void Ifc4::IfcReinforcementBarProperties::setTotalCrossSectionArea(double v) { { std::string Ifc4::IfcReinforcementBarProperties::SteelGrade() const { std::string v = *data_->getArgument(1); return v; } void Ifc4::IfcReinforcementBarProperties::setSteelGrade(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > Ifc4::IfcReinforcementBarProperties::BarSurface() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); } -void Ifc4::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcReinforcementBarProperties::EffectiveDepth() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcReinforcementBarProperties::NominalBarDiameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4::IfcReinforcementBarProperties::BarCount() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4::IfcReinforcementBarProperties::declaration() const { return *IFC4_IfcReinforcementBarProperties_type; } @@ -17134,7 +17134,7 @@ Ifc4::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double v1_Tot // Function implementations for IfcReinforcementDefinitionProperties boost::optional< std::string > Ifc4::IfcReinforcementDefinitionProperties::DefinitionType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4::IfcSectionReinforcementProperties >::ptr Ifc4::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4::IfcSectionReinforcementProperties >(); } void Ifc4::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc4::IfcSectionReinforcementProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -17146,15 +17146,15 @@ Ifc4::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties // Function implementations for IfcReinforcingBar boost::optional< double > Ifc4::IfcReinforcingBar::NominalDiameter() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcReinforcingBar::CrossSectionArea() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcReinforcingBar::BarLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4::IfcReinforcingBarTypeEnum::Value > Ifc4::IfcReinforcingBar::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcReinforcingBarTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcReinforcingBarTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > Ifc4::IfcReinforcingBar::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4::IfcReinforcingBar::declaration() const { return *IFC4_IfcReinforcingBar_type; } @@ -17166,17 +17166,17 @@ Ifc4::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4::IfcO ::Ifc4::IfcReinforcingBarTypeEnum::Value Ifc4::IfcReinforcingBarType::PredefinedType() const { return ::Ifc4::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4::IfcReinforcingBarType::setPredefinedType(::Ifc4::IfcReinforcingBarTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcReinforcingBarTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcReinforcingBarType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcReinforcingBarType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4::IfcReinforcingBarType::BarLength() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > Ifc4::IfcReinforcingBarType::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4::IfcReinforcingBarType::BendingShapeCode() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4::IfcReinforcingBarType::BendingParameters() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(15); return v; } -void Ifc4::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4::IfcReinforcingBarType::declaration() const { return *IFC4_IfcReinforcingBarType_type; } @@ -17186,7 +17186,7 @@ Ifc4::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId, ::If // Function implementations for IfcReinforcingElement boost::optional< std::string > Ifc4::IfcReinforcingElement::SteelGrade() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcReinforcingElement::declaration() const { return *IFC4_IfcReinforcingElement_type; } @@ -17204,23 +17204,23 @@ Ifc4::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_Global // Function implementations for IfcReinforcingMesh boost::optional< double > Ifc4::IfcReinforcingMesh::MeshLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcReinforcingMesh::MeshWidth() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4::IfcReinforcingMesh::TransverseBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< ::Ifc4::IfcReinforcingMeshTypeEnum::Value > Ifc4::IfcReinforcingMesh::PredefinedType() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } return ::Ifc4::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(17)); } -void Ifc4::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcReinforcingMeshTypeEnum::ToString(*v)));data_->setArgument(17,attr);} } +void Ifc4::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcReinforcingMeshTypeEnum::ToString(*v)));}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4::IfcReinforcingMesh::declaration() const { return *IFC4_IfcReinforcingMesh_type; } @@ -17232,25 +17232,25 @@ Ifc4::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::Ifc4::If ::Ifc4::IfcReinforcingMeshTypeEnum::Value Ifc4::IfcReinforcingMeshType::PredefinedType() const { return ::Ifc4::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4::IfcReinforcingMeshType::setPredefinedType(::Ifc4::IfcReinforcingMeshTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcReinforcingMeshTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcReinforcingMeshType::MeshLength() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcReinforcingMeshType::MeshWidth() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4::IfcReinforcingMeshType::TransverseBarSpacing() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4::IfcReinforcingMeshType::BendingShapeCode() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4::IfcReinforcingMeshType::BendingParameters() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(19); return v; } -void Ifc4::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4::IfcReinforcingMeshType::declaration() const { return *IFC4_IfcReinforcingMeshType_type; } @@ -17274,7 +17274,7 @@ Ifc4::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4::IfcOwn aggregate_of< ::Ifc4::IfcObjectDefinition >::ptr Ifc4::IfcRelAssigns::RelatedObjects() const { aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4::IfcObjectDefinition >(); } void Ifc4::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc4::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} } boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > Ifc4::IfcRelAssigns::RelatedObjectsType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4::IfcObjectTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcObjectTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcObjectTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4::IfcRelAssigns::declaration() const { return *IFC4_IfcRelAssigns_type; } @@ -17388,7 +17388,7 @@ Ifc4::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std::string // Function implementations for IfcRelAssociatesConstraint boost::optional< std::string > Ifc4::IfcRelAssociatesConstraint::Intent() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4::IfcConstraint* Ifc4::IfcRelAssociatesConstraint::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcConstraint>(true); } void Ifc4::IfcRelAssociatesConstraint::setRelatingConstraint(::Ifc4::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -17514,7 +17514,7 @@ void Ifc4::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc4::IfcBounda ::Ifc4::IfcStructuralConnectionCondition* Ifc4::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4::IfcStructuralConnectionCondition>(true); } void Ifc4::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc4::IfcStructuralConnectionCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< double > Ifc4::IfcRelConnectsStructuralMember::SupportedLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4::IfcAxis2Placement3D* Ifc4::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4::IfcAxis2Placement3D>(true); } void Ifc4::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc4::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -17538,7 +17538,7 @@ Ifc4::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std::string aggregate_of< ::Ifc4::IfcElement >::ptr Ifc4::IfcRelConnectsWithRealizingElements::RealizingElements() const { aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4::IfcElement >(); } void Ifc4::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc4::IfcElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcRelConnectsWithRealizingElements::declaration() const { return *IFC4_IfcRelConnectsWithRealizingElements_type; } @@ -17690,7 +17690,7 @@ void Ifc4::IfcRelInterferesElements::setRelatedElement(::Ifc4::IfcElement* v) { ::Ifc4::IfcConnectionGeometry* Ifc4::IfcRelInterferesElements::InterferenceGeometry() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcConnectionGeometry>(true); } void Ifc4::IfcRelInterferesElements::setInterferenceGeometry(::Ifc4::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcRelInterferesElements::InterferenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::logic::tribool Ifc4::IfcRelInterferesElements::ImpliedOrder() const { boost::logic::tribool v = *data_->getArgument(8); return v; } void Ifc4::IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -17744,9 +17744,9 @@ void Ifc4::IfcRelSequence::setRelatedProcess(::Ifc4::IfcProcess* v) { {IfcWrite: ::Ifc4::IfcLagTime* Ifc4::IfcRelSequence::TimeLag() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcLagTime>(true); } void Ifc4::IfcRelSequence::setTimeLag(::Ifc4::IfcLagTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4::IfcSequenceEnum::Value > Ifc4::IfcRelSequence::SequenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4::IfcSequenceEnum::FromString(*data_->getArgument(7)); } -void Ifc4::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSequenceEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSequenceEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcRelSequence::UserDefinedSequenceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcRelSequence::declaration() const { return *IFC4_IfcRelSequence_type; } @@ -17840,9 +17840,9 @@ Ifc4::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSeg ::Ifc4::IfcRepresentationContext* Ifc4::IfcRepresentation::ContextOfItems() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4::IfcRepresentationContext>(true); } void Ifc4::IfcRepresentation::setContextOfItems(::Ifc4::IfcRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcRepresentation::RepresentationIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcRepresentation::RepresentationType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } aggregate_of< ::Ifc4::IfcRepresentationItem >::ptr Ifc4::IfcRepresentation::Items() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4::IfcRepresentationItem >(); } void Ifc4::IfcRepresentation::setItems(aggregate_of< ::Ifc4::IfcRepresentationItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } @@ -17857,9 +17857,9 @@ Ifc4::IfcRepresentation::IfcRepresentation(::Ifc4::IfcRepresentationContext* v1_ // Function implementations for IfcRepresentationContext boost::optional< std::string > Ifc4::IfcRepresentationContext::ContextIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcRepresentationContext::ContextType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4::IfcRepresentation::list::ptr Ifc4::IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(IFC4_IfcRepresentation_type, 0)->as(); } @@ -17894,9 +17894,9 @@ Ifc4::IfcRepresentationMap::IfcRepresentationMap(::Ifc4::IfcAxis2Placement* v1_M // Function implementations for IfcResource boost::optional< std::string > Ifc4::IfcResource::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcResource::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4::IfcRelAssignsToResource::list::ptr Ifc4::IfcResource::ResourceOf() const { return data_->getInverse(IFC4_IfcRelAssignsToResource_type, 6)->as(); } @@ -17931,9 +17931,9 @@ Ifc4::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(boost // Function implementations for IfcResourceLevelRelationship boost::optional< std::string > Ifc4::IfcResourceLevelRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcResourceLevelRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4::IfcResourceLevelRelationship::declaration() const { return *IFC4_IfcResourceLevelRelationship_type; } @@ -17943,35 +17943,35 @@ Ifc4::IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::optional // Function implementations for IfcResourceTime boost::optional< std::string > Ifc4::IfcResourceTime::ScheduleWork() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcResourceTime::ScheduleUsage() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcResourceTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcResourceTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcResourceTime::ScheduleContour() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcResourceTime::LevelingDelay() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< bool > Ifc4::IfcResourceTime::IsOverAllocated() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4::IfcResourceTime::StatusTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4::IfcResourceTime::ActualWork() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4::IfcResourceTime::ActualUsage() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4::IfcResourceTime::ActualStart() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4::IfcResourceTime::ActualFinish() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4::IfcResourceTime::RemainingWork() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4::IfcResourceTime::RemainingUsage() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4::IfcResourceTime::Completion() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4::IfcResourceTime::declaration() const { return *IFC4_IfcResourceTime_type; } @@ -18027,7 +18027,7 @@ Ifc4::IfcRightCircularCylinder::IfcRightCircularCylinder(::Ifc4::IfcAxis2Placeme // Function implementations for IfcRoof boost::optional< ::Ifc4::IfcRoofTypeEnum::Value > Ifc4::IfcRoof::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcRoofTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcRoof::setPredefinedType(boost::optional< ::Ifc4::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcRoofTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcRoof::setPredefinedType(boost::optional< ::Ifc4::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcRoofTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcRoof::declaration() const { return *IFC4_IfcRoof_type; } @@ -18051,9 +18051,9 @@ void Ifc4::IfcRoot::setGlobalId(std::string v) { {IfcWrite::IfcWriteArgument* at ::Ifc4::IfcOwnerHistory* Ifc4::IfcRoot::OwnerHistory() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4::IfcOwnerHistory>(true); } void Ifc4::IfcRoot::setOwnerHistory(::Ifc4::IfcOwnerHistory* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcRoot::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4::IfcRoot::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcRoot::declaration() const { return *IFC4_IfcRoot_type; } @@ -18073,7 +18073,7 @@ Ifc4::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4::IfcPr // Function implementations for IfcSIUnit boost::optional< ::Ifc4::IfcSIPrefix::Value > Ifc4::IfcSIUnit::Prefix() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4::IfcSIPrefix::FromString(*data_->getArgument(2)); } -void Ifc4::IfcSIUnit::setPrefix(boost::optional< ::Ifc4::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSIPrefix::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4::IfcSIUnit::setPrefix(boost::optional< ::Ifc4::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSIPrefix::ToString(*v)));}data_->setArgument(2,attr);} } ::Ifc4::IfcSIUnitName::Value Ifc4::IfcSIUnit::Name() const { return ::Ifc4::IfcSIUnitName::FromString(*data_->getArgument(3)); } void Ifc4::IfcSIUnit::setName(::Ifc4::IfcSIUnitName::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcSIUnitName::ToString(v)));data_->setArgument(3,attr);} } @@ -18085,7 +18085,7 @@ Ifc4::IfcSIUnit::IfcSIUnit(::Ifc4::IfcUnitEnum::Value v2_UnitType, boost::option // Function implementations for IfcSanitaryTerminal boost::optional< ::Ifc4::IfcSanitaryTerminalTypeEnum::Value > Ifc4::IfcSanitaryTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSanitaryTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSanitaryTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSanitaryTerminal::declaration() const { return *IFC4_IfcSanitaryTerminal_type; } @@ -18105,11 +18105,11 @@ Ifc4::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_GlobalId, // Function implementations for IfcSchedulingTime boost::optional< std::string > Ifc4::IfcSchedulingTime::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< ::Ifc4::IfcDataOriginEnum::Value > Ifc4::IfcSchedulingTime::DataOrigin() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } return ::Ifc4::IfcDataOriginEnum::FromString(*data_->getArgument(1)); } -void Ifc4::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDataOriginEnum::ToString(*v)));data_->setArgument(1,attr);} } +void Ifc4::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcDataOriginEnum::ToString(*v)));}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcSchedulingTime::UserDefinedDataOrigin() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcSchedulingTime::declaration() const { return *IFC4_IfcSchedulingTime_type; } @@ -18145,7 +18145,7 @@ void Ifc4::IfcSectionReinforcementProperties::setLongitudinalStartPosition(doubl double Ifc4::IfcSectionReinforcementProperties::LongitudinalEndPosition() const { double v = *data_->getArgument(1); return v; } void Ifc4::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcSectionReinforcementProperties::TransversePosition() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcReinforcingBarRoleEnum::Value Ifc4::IfcSectionReinforcementProperties::ReinforcementRole() const { return ::Ifc4::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); } void Ifc4::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc4::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(3,attr);} } ::Ifc4::IfcSectionProperties* Ifc4::IfcSectionReinforcementProperties::SectionDefinition() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4::IfcSectionProperties>(true); } @@ -18175,7 +18175,7 @@ Ifc4::IfcSectionedSpine::IfcSectionedSpine(::Ifc4::IfcCompositeCurve* v1_SpineCu // Function implementations for IfcSensor boost::optional< ::Ifc4::IfcSensorTypeEnum::Value > Ifc4::IfcSensor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcSensorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcSensor::setPredefinedType(boost::optional< ::Ifc4::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSensorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcSensor::setPredefinedType(boost::optional< ::Ifc4::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSensorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSensor::declaration() const { return *IFC4_IfcSensor_type; } @@ -18195,7 +18195,7 @@ Ifc4::IfcSensorType::IfcSensorType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHist // Function implementations for IfcShadingDevice boost::optional< ::Ifc4::IfcShadingDeviceTypeEnum::Value > Ifc4::IfcShadingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcShadingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcShadingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcShadingDevice::declaration() const { return *IFC4_IfcShadingDevice_type; } @@ -18217,9 +18217,9 @@ Ifc4::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, ::Ifc4 aggregate_of< ::Ifc4::IfcShapeModel >::ptr Ifc4::IfcShapeAspect::ShapeRepresentations() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4::IfcShapeModel >(); } void Ifc4::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc4::IfcShapeModel >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcShapeAspect::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcShapeAspect::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::logic::tribool Ifc4::IfcShapeAspect::ProductDefinitional() const { boost::logic::tribool v = *data_->getArgument(3); return v; } void Ifc4::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4::IfcProductRepresentationSelect* Ifc4::IfcShapeAspect::PartOfProductDefinitionShape() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4::IfcProductRepresentationSelect>(true); } @@ -18268,11 +18268,11 @@ Ifc4::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::optional< // Function implementations for IfcSimplePropertyTemplate boost::optional< ::Ifc4::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4::IfcSimplePropertyTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4::IfcPropertyEnumeration* Ifc4::IfcSimplePropertyTemplate::Enumerators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4::IfcPropertyEnumeration>(true); } void Ifc4::IfcSimplePropertyTemplate::setEnumerators(::Ifc4::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4::IfcUnit* Ifc4::IfcSimplePropertyTemplate::PrimaryUnit() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4::IfcUnit>(true); } @@ -18280,9 +18280,9 @@ void Ifc4::IfcSimplePropertyTemplate::setPrimaryUnit(::Ifc4::IfcUnit* v) { {IfcW ::Ifc4::IfcUnit* Ifc4::IfcSimplePropertyTemplate::SecondaryUnit() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4::IfcUnit>(true); } void Ifc4::IfcSimplePropertyTemplate::setSecondaryUnit(::Ifc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4::IfcSimplePropertyTemplate::Expression() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< ::Ifc4::IfcStateEnum::Value > Ifc4::IfcSimplePropertyTemplate::AccessState() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4::IfcStateEnum::FromString(*data_->getArgument(11)); } -void Ifc4::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcStateEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcStateEnum::ToString(*v)));}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4::IfcSimplePropertyTemplate::declaration() const { return *IFC4_IfcSimplePropertyTemplate_type; } @@ -18292,13 +18292,13 @@ Ifc4::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_Global // Function implementations for IfcSite boost::optional< std::vector< int > /*[3:4]*/ > Ifc4::IfcSite::RefLatitude() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(9); return v; } -void Ifc4::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::vector< int > /*[3:4]*/ > Ifc4::IfcSite::RefLongitude() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(10); return v; } -void Ifc4::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcSite::RefElevation() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4::IfcSite::LandTitleNumber() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4::IfcPostalAddress* Ifc4::IfcSite::SiteAddress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4::IfcPostalAddress>(true); } void Ifc4::IfcSite::setSiteAddress(::Ifc4::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -18310,7 +18310,7 @@ Ifc4::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Owne // Function implementations for IfcSlab boost::optional< ::Ifc4::IfcSlabTypeEnum::Value > Ifc4::IfcSlab::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcSlabTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcSlab::setPredefinedType(boost::optional< ::Ifc4::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSlabTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcSlab::setPredefinedType(boost::optional< ::Ifc4::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSlabTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSlab::declaration() const { return *IFC4_IfcSlab_type; } @@ -18346,11 +18346,11 @@ Ifc4::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* // Function implementations for IfcSlippageConnectionCondition boost::optional< double > Ifc4::IfcSlippageConnectionCondition::SlippageX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcSlippageConnectionCondition::SlippageY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcSlippageConnectionCondition::SlippageZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcSlippageConnectionCondition::declaration() const { return *IFC4_IfcSlippageConnectionCondition_type; } @@ -18360,7 +18360,7 @@ Ifc4::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost::opti // Function implementations for IfcSolarDevice boost::optional< ::Ifc4::IfcSolarDeviceTypeEnum::Value > Ifc4::IfcSolarDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSolarDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSolarDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSolarDevice::declaration() const { return *IFC4_IfcSolarDevice_type; } @@ -18388,9 +18388,9 @@ Ifc4::IfcSolidModel::IfcSolidModel() : IfcGeometricRepresentationItem((IfcEntity // Function implementations for IfcSpace boost::optional< ::Ifc4::IfcSpaceTypeEnum::Value > Ifc4::IfcSpace::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4::IfcSpace::setPredefinedType(boost::optional< ::Ifc4::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSpaceTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4::IfcSpace::setPredefinedType(boost::optional< ::Ifc4::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSpaceTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcSpace::ElevationWithFlooring() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4::IfcRelCoversSpaces::list::ptr Ifc4::IfcSpace::HasCoverings() const { return data_->getInverse(IFC4_IfcRelCoversSpaces_type, 4)->as(); } ::Ifc4::IfcRelSpaceBoundary::list::ptr Ifc4::IfcSpace::BoundedBy() const { return data_->getInverse(IFC4_IfcRelSpaceBoundary_type, 4)->as(); } @@ -18402,7 +18402,7 @@ Ifc4::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Ow // Function implementations for IfcSpaceHeater boost::optional< ::Ifc4::IfcSpaceHeaterTypeEnum::Value > Ifc4::IfcSpaceHeater::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSpaceHeaterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSpaceHeaterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSpaceHeater::declaration() const { return *IFC4_IfcSpaceHeater_type; } @@ -18424,7 +18424,7 @@ Ifc4::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::Ifc4::If ::Ifc4::IfcSpaceTypeEnum::Value Ifc4::IfcSpaceType::PredefinedType() const { return ::Ifc4::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4::IfcSpaceType::setPredefinedType(::Ifc4::IfcSpaceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcSpaceTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4::IfcSpaceType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcSpaceType::declaration() const { return *IFC4_IfcSpaceType_type; } @@ -18434,7 +18434,7 @@ Ifc4::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistor // Function implementations for IfcSpatialElement boost::optional< std::string > Ifc4::IfcSpatialElement::LongName() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4::IfcRelContainedInSpatialStructure::list::ptr Ifc4::IfcSpatialElement::ContainsElements() const { return data_->getInverse(IFC4_IfcRelContainedInSpatialStructure_type, 5)->as(); } ::Ifc4::IfcRelServicesBuildings::list::ptr Ifc4::IfcSpatialElement::ServicedBySystems() const { return data_->getInverse(IFC4_IfcRelServicesBuildings_type, 5)->as(); } @@ -18447,7 +18447,7 @@ Ifc4::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4::IfcO // Function implementations for IfcSpatialElementType boost::optional< std::string > Ifc4::IfcSpatialElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSpatialElementType::declaration() const { return *IFC4_IfcSpatialElementType_type; } @@ -18457,7 +18457,7 @@ Ifc4::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId, ::If // Function implementations for IfcSpatialStructureElement boost::optional< ::Ifc4::IfcElementCompositionEnum::Value > Ifc4::IfcSpatialStructureElement::CompositionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElementCompositionEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcElementCompositionEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSpatialStructureElement::declaration() const { return *IFC4_IfcSpatialStructureElement_type; } @@ -18475,7 +18475,7 @@ Ifc4::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std::string // Function implementations for IfcSpatialZone boost::optional< ::Ifc4::IfcSpatialZoneTypeEnum::Value > Ifc4::IfcSpatialZone::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSpatialZoneTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSpatialZoneTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSpatialZone::declaration() const { return *IFC4_IfcSpatialZone_type; } @@ -18487,7 +18487,7 @@ Ifc4::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4::IfcOwnerHi ::Ifc4::IfcSpatialZoneTypeEnum::Value Ifc4::IfcSpatialZoneType::PredefinedType() const { return ::Ifc4::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4::IfcSpatialZoneType::setPredefinedType(::Ifc4::IfcSpatialZoneTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcSpatialZoneTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4::IfcSpatialZoneType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcSpatialZoneType::declaration() const { return *IFC4_IfcSpatialZoneType_type; } @@ -18517,7 +18517,7 @@ Ifc4::IfcSphericalSurface::IfcSphericalSurface(::Ifc4::IfcAxis2Placement3D* v1_P // Function implementations for IfcStackTerminal boost::optional< ::Ifc4::IfcStackTerminalTypeEnum::Value > Ifc4::IfcStackTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcStackTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcStackTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcStackTerminal::declaration() const { return *IFC4_IfcStackTerminal_type; } @@ -18537,7 +18537,7 @@ Ifc4::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcStair boost::optional< ::Ifc4::IfcStairTypeEnum::Value > Ifc4::IfcStair::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcStairTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcStair::setPredefinedType(boost::optional< ::Ifc4::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcStairTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcStair::setPredefinedType(boost::optional< ::Ifc4::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcStairTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcStair::declaration() const { return *IFC4_IfcStair_type; } @@ -18547,15 +18547,15 @@ Ifc4::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Ow // Function implementations for IfcStairFlight boost::optional< int > Ifc4::IfcStairFlight::NumberOfRisers() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } int v = *data_->getArgument(8); return v; } -void Ifc4::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< int > Ifc4::IfcStairFlight::NumberOfTreads() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; } -void Ifc4::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcStairFlight::RiserHeight() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcStairFlight::TreadLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4::IfcStairFlightTypeEnum::Value > Ifc4::IfcStairFlight::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4::IfcStairFlightTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcStairFlightTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcStairFlightTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4::IfcStairFlight::declaration() const { return *IFC4_IfcStairFlight_type; } @@ -18585,7 +18585,7 @@ Ifc4::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistor // Function implementations for IfcStructuralAction boost::optional< bool > Ifc4::IfcStructuralAction::DestabilizingLoad() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcStructuralAction::declaration() const { return *IFC4_IfcStructuralAction_type; } @@ -18612,9 +18612,9 @@ void Ifc4::IfcStructuralAnalysisModel::setPredefinedType(::Ifc4::IfcAnalysisMode ::Ifc4::IfcAxis2Placement3D* Ifc4::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcAxis2Placement3D>(true); } void Ifc4::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc4::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcStructuralLoadGroup >::ptr > Ifc4::IfcStructuralAnalysisModel::LoadedBy() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4::IfcStructuralLoadGroup >(); } -void Ifc4::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcStructuralResultGroup >::ptr > Ifc4::IfcStructuralAnalysisModel::HasResults() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4::IfcStructuralResultGroup >(); } -void Ifc4::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4::IfcObjectPlacement* Ifc4::IfcStructuralAnalysisModel::SharedPlacement() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4::IfcObjectPlacement>(true); } void Ifc4::IfcStructuralAnalysisModel::setSharedPlacement(::Ifc4::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -18637,7 +18637,7 @@ Ifc4::IfcStructuralConnection::IfcStructuralConnection(std::string v1_GlobalId, // Function implementations for IfcStructuralConnectionCondition boost::optional< std::string > Ifc4::IfcStructuralConnectionCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4::IfcStructuralConnectionCondition::declaration() const { return *IFC4_IfcStructuralConnectionCondition_type; } @@ -18647,7 +18647,7 @@ Ifc4::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(boost:: // Function implementations for IfcStructuralCurveAction boost::optional< ::Ifc4::IfcProjectedOrTrueLengthEnum::Value > Ifc4::IfcStructuralCurveAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4::IfcStructuralCurveActivityTypeEnum::Value Ifc4::IfcStructuralCurveAction::PredefinedType() const { return ::Ifc4::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4::IfcStructuralCurveAction::setPredefinedType(::Ifc4::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -18716,7 +18716,7 @@ Ifc4::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_Global // Function implementations for IfcStructuralLoad boost::optional< std::string > Ifc4::IfcStructuralLoad::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4::IfcStructuralLoad::declaration() const { return *IFC4_IfcStructuralLoad_type; } @@ -18726,7 +18726,7 @@ Ifc4::IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > v1_Nam // Function implementations for IfcStructuralLoadCase boost::optional< std::vector< double > /*[3:3]*/ > Ifc4::IfcStructuralLoadCase::SelfWeightCoefficients() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< double > /*[3:3]*/ v = *data_->getArgument(10); return v; } -void Ifc4::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcStructuralLoadCase::declaration() const { return *IFC4_IfcStructuralLoadCase_type; } @@ -18738,7 +18738,7 @@ Ifc4::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId, ::If aggregate_of< ::Ifc4::IfcStructuralLoadOrResult >::ptr Ifc4::IfcStructuralLoadConfiguration::Values() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4::IfcStructuralLoadOrResult >(); } void Ifc4::IfcStructuralLoadConfiguration::setValues(aggregate_of< ::Ifc4::IfcStructuralLoadOrResult >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::vector< std::vector< double > > > Ifc4::IfcStructuralLoadConfiguration::Locations() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(2); return v; } -void Ifc4::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcStructuralLoadConfiguration::declaration() const { return *IFC4_IfcStructuralLoadConfiguration_type; } @@ -18754,9 +18754,9 @@ void Ifc4::IfcStructuralLoadGroup::setActionType(::Ifc4::IfcActionTypeEnum::Valu ::Ifc4::IfcActionSourceTypeEnum::Value Ifc4::IfcStructuralLoadGroup::ActionSource() const { return ::Ifc4::IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4::IfcStructuralLoadGroup::setActionSource(::Ifc4::IfcActionSourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcActionSourceTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadGroup::Coefficient() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4::IfcStructuralLoadGroup::Purpose() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4::IfcStructuralResultGroup::list::ptr Ifc4::IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(IFC4_IfcStructuralResultGroup_type, 6)->as(); } ::Ifc4::IfcStructuralAnalysisModel::list::ptr Ifc4::IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(IFC4_IfcStructuralAnalysisModel_type, 7)->as(); } @@ -18768,17 +18768,17 @@ Ifc4::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_GlobalId, :: // Function implementations for IfcStructuralLoadLinearForce boost::optional< double > Ifc4::IfcStructuralLoadLinearForce::LinearForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadLinearForce::LinearForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadLinearForce::LinearForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadLinearForce::LinearMomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadLinearForce::LinearMomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4::IfcStructuralLoadLinearForce::declaration() const { return *IFC4_IfcStructuralLoadLinearForce_type; } @@ -18796,11 +18796,11 @@ Ifc4::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional< std: // Function implementations for IfcStructuralLoadPlanarForce boost::optional< double > Ifc4::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcStructuralLoadPlanarForce::declaration() const { return *IFC4_IfcStructuralLoadPlanarForce_type; } @@ -18810,17 +18810,17 @@ Ifc4::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::optional // Function implementations for IfcStructuralLoadSingleDisplacement boost::optional< double > Ifc4::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4::IfcStructuralLoadSingleDisplacement::declaration() const { return *IFC4_IfcStructuralLoadSingleDisplacement_type; } @@ -18830,7 +18830,7 @@ Ifc4::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(b // Function implementations for IfcStructuralLoadSingleDisplacementDistortion boost::optional< double > Ifc4::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IFC4_IfcStructuralLoadSingleDisplacementDistortion_type; } @@ -18840,17 +18840,17 @@ Ifc4::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisp // Function implementations for IfcStructuralLoadSingleForce boost::optional< double > Ifc4::IfcStructuralLoadSingleForce::ForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadSingleForce::ForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadSingleForce::ForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadSingleForce::MomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadSingleForce::MomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadSingleForce::MomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4::IfcStructuralLoadSingleForce::declaration() const { return *IFC4_IfcStructuralLoadSingleForce_type; } @@ -18860,7 +18860,7 @@ Ifc4::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::optional // Function implementations for IfcStructuralLoadSingleForceWarping boost::optional< double > Ifc4::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4::IfcStructuralLoadSingleForceWarping::declaration() const { return *IFC4_IfcStructuralLoadSingleForceWarping_type; } @@ -18878,11 +18878,11 @@ Ifc4::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< std::str // Function implementations for IfcStructuralLoadTemperature boost::optional< double > Ifc4::IfcStructuralLoadTemperature::DeltaTConstant() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadTemperature::DeltaTY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcStructuralLoadTemperature::DeltaTZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcStructuralLoadTemperature::declaration() const { return *IFC4_IfcStructuralLoadTemperature_type; } @@ -18958,7 +18958,7 @@ Ifc4::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_GlobalId // Function implementations for IfcStructuralSurfaceAction boost::optional< ::Ifc4::IfcProjectedOrTrueLengthEnum::Value > Ifc4::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4::IfcStructuralSurfaceAction::PredefinedType() const { return ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4::IfcStructuralSurfaceAction::setPredefinedType(::Ifc4::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -18980,7 +18980,7 @@ Ifc4::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std::string ::Ifc4::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4::IfcStructuralSurfaceMember::PredefinedType() const { return ::Ifc4::IfcStructuralSurfaceMemberTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4::IfcStructuralSurfaceMember::setPredefinedType(::Ifc4::IfcStructuralSurfaceMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcStructuralSurfaceMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4::IfcStructuralSurfaceMember::Thickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcStructuralSurfaceMember::declaration() const { return *IFC4_IfcStructuralSurfaceMember_type; } @@ -19020,7 +19020,7 @@ void Ifc4::IfcStyledItem::setItem(::Ifc4::IfcRepresentationItem* v) { {IfcWrite: aggregate_of_instance::ptr Ifc4::IfcStyledItem::Styles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4::IfcStyledItem::setStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcStyledItem::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcStyledItem::declaration() const { return *IFC4_IfcStyledItem_type; } @@ -19038,7 +19038,7 @@ Ifc4::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4::IfcRepresentation // Function implementations for IfcSubContractResource boost::optional< ::Ifc4::IfcSubContractResourceTypeEnum::Value > Ifc4::IfcSubContractResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSubContractResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSubContractResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcSubContractResource::declaration() const { return *IFC4_IfcSubContractResource_type; } @@ -19092,9 +19092,9 @@ Ifc4::IfcSurfaceCurve::IfcSurfaceCurve(::Ifc4::IfcCurve* v1_Curve3D, aggregate_o ::Ifc4::IfcCurve* Ifc4::IfcSurfaceCurveSweptAreaSolid::Directrix() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4::IfcCurve>(true); } void Ifc4::IfcSurfaceCurveSweptAreaSolid::setDirectrix(::Ifc4::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcSurfaceCurveSweptAreaSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcSurfaceCurveSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcSurfaceCurveSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcSurfaceCurveSweptAreaSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcSurfaceCurveSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcSurfaceCurveSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4::IfcSurface* Ifc4::IfcSurfaceCurveSweptAreaSolid::ReferenceSurface() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4::IfcSurface>(true); } void Ifc4::IfcSurfaceCurveSweptAreaSolid::setReferenceSurface(::Ifc4::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -19106,7 +19106,7 @@ Ifc4::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4::IfcPr // Function implementations for IfcSurfaceFeature boost::optional< ::Ifc4::IfcSurfaceFeatureTypeEnum::Value > Ifc4::IfcSurfaceFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcSurfaceFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSurfaceFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSurfaceFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSurfaceFeature::declaration() const { return *IFC4_IfcSurfaceFeature_type; } @@ -19138,11 +19138,11 @@ Ifc4::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4::IfcProfileDef* v1_S // Function implementations for IfcSurfaceReinforcementArea boost::optional< std::vector< double > /*[2:3]*/ > Ifc4::IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(1); return v; } -void Ifc4::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[2:3]*/ > Ifc4::IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(2); return v; } -void Ifc4::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4::IfcSurfaceReinforcementArea::declaration() const { return *IFC4_IfcSurfaceReinforcementArea_type; } @@ -19180,9 +19180,9 @@ Ifc4::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4::IfcColourRgb* v1_ // Function implementations for IfcSurfaceStyleRefraction boost::optional< double > Ifc4::IfcSurfaceStyleRefraction::RefractionIndex() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc4::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< double > Ifc4::IfcSurfaceStyleRefraction::DispersionFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4::IfcSurfaceStyleRefraction::declaration() const { return *IFC4_IfcSurfaceStyleRefraction_type; } @@ -19216,7 +19216,7 @@ Ifc4::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4::IfcColourRgb* v ::Ifc4::IfcColourRgb* Ifc4::IfcSurfaceStyleShading::SurfaceColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4::IfcColourRgb>(true); } void Ifc4::IfcSurfaceStyleShading::setSurfaceColour(::Ifc4::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4::IfcSurfaceStyleShading::Transparency() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4::IfcSurfaceStyleShading::declaration() const { return *IFC4_IfcSurfaceStyleShading_type; } @@ -19240,11 +19240,11 @@ void Ifc4::IfcSurfaceTexture::setRepeatS(bool v) { {IfcWrite::IfcWriteArgument* bool Ifc4::IfcSurfaceTexture::RepeatT() const { bool v = *data_->getArgument(1); return v; } void Ifc4::IfcSurfaceTexture::setRepeatT(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcSurfaceTexture::Mode() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcCartesianTransformationOperator2D* Ifc4::IfcSurfaceTexture::TextureTransform() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcCartesianTransformationOperator2D>(true); } void Ifc4::IfcSurfaceTexture::setTextureTransform(::Ifc4::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4::IfcSurfaceTexture::Parameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4::IfcTextureCoordinate::list::ptr Ifc4::IfcSurfaceTexture::IsMappedBy() const { return data_->getInverse(IFC4_IfcTextureCoordinate_type, 0)->as(); } ::Ifc4::IfcSurfaceStyleWithTextures::list::ptr Ifc4::IfcSurfaceTexture::UsedInStyles() const { return data_->getInverse(IFC4_IfcSurfaceStyleWithTextures_type, 0)->as(); } @@ -19272,11 +19272,11 @@ void Ifc4::IfcSweptDiskSolid::setDirectrix(::Ifc4::IfcCurve* v) { {IfcWrite::Ifc double Ifc4::IfcSweptDiskSolid::Radius() const { double v = *data_->getArgument(1); return v; } void Ifc4::IfcSweptDiskSolid::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4::IfcSweptDiskSolid::InnerRadius() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4::IfcSweptDiskSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4::IfcSweptDiskSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcSweptDiskSolid::declaration() const { return *IFC4_IfcSweptDiskSolid_type; } @@ -19286,7 +19286,7 @@ Ifc4::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4::IfcCurve* v1_Directrix, doubl // Function implementations for IfcSweptDiskSolidPolygonal boost::optional< double > Ifc4::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4::IfcSweptDiskSolidPolygonal::declaration() const { return *IFC4_IfcSweptDiskSolidPolygonal_type; } @@ -19308,7 +19308,7 @@ Ifc4::IfcSweptSurface::IfcSweptSurface(::Ifc4::IfcProfileDef* v1_SweptCurve, ::I // Function implementations for IfcSwitchingDevice boost::optional< ::Ifc4::IfcSwitchingDeviceTypeEnum::Value > Ifc4::IfcSwitchingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSwitchingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSwitchingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSwitchingDevice::declaration() const { return *IFC4_IfcSwitchingDevice_type; } @@ -19337,7 +19337,7 @@ Ifc4::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_ // Function implementations for IfcSystemFurnitureElement boost::optional< ::Ifc4::IfcSystemFurnitureElementTypeEnum::Value > Ifc4::IfcSystemFurnitureElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcSystemFurnitureElement::declaration() const { return *IFC4_IfcSystemFurnitureElement_type; } @@ -19347,7 +19347,7 @@ Ifc4::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_Global // Function implementations for IfcSystemFurnitureElementType boost::optional< ::Ifc4::IfcSystemFurnitureElementTypeEnum::Value > Ifc4::IfcSystemFurnitureElementType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcSystemFurnitureElementType::declaration() const { return *IFC4_IfcSystemFurnitureElementType_type; } @@ -19365,15 +19365,15 @@ void Ifc4::IfcTShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteA double Ifc4::IfcTShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4::IfcTShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcTShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4::IfcTShapeProfileDef::WebEdgeRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcTShapeProfileDef::WebSlope() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcTShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4::IfcTShapeProfileDef::declaration() const { return *IFC4_IfcTShapeProfileDef_type; } @@ -19383,11 +19383,11 @@ Ifc4::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4::IfcProfileTypeEnum::Value // Function implementations for IfcTable boost::optional< std::string > Ifc4::IfcTable::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcTableRow >::ptr > Ifc4::IfcTable::Rows() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4::IfcTableRow >(); } -void Ifc4::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcTableColumn >::ptr > Ifc4::IfcTable::Columns() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4::IfcTableColumn >(); } -void Ifc4::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcTable::declaration() const { return *IFC4_IfcTable_type; } @@ -19397,11 +19397,11 @@ Ifc4::IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::optional // Function implementations for IfcTableColumn boost::optional< std::string > Ifc4::IfcTableColumn::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcTableColumn::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcTableColumn::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcUnit* Ifc4::IfcTableColumn::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcUnit>(true); } void Ifc4::IfcTableColumn::setUnit(::Ifc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4::IfcReference* Ifc4::IfcTableColumn::ReferencePath() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4::IfcReference>(true); } @@ -19415,9 +19415,9 @@ Ifc4::IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Identifie // Function implementations for IfcTableRow boost::optional< aggregate_of_instance::ptr > Ifc4::IfcTableRow::RowCells() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(0); return v; } -void Ifc4::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< bool > Ifc4::IfcTableRow::IsHeading() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4::IfcTableRow::declaration() const { return *IFC4_IfcTableRow_type; } @@ -19427,7 +19427,7 @@ Ifc4::IfcTableRow::IfcTableRow(boost::optional< aggregate_of_instance::ptr > v1_ // Function implementations for IfcTank boost::optional< ::Ifc4::IfcTankTypeEnum::Value > Ifc4::IfcTank::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcTankTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcTank::setPredefinedType(boost::optional< ::Ifc4::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTankTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcTank::setPredefinedType(boost::optional< ::Ifc4::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTankTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcTank::declaration() const { return *IFC4_IfcTank_type; } @@ -19447,17 +19447,17 @@ Ifc4::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* // Function implementations for IfcTask boost::optional< std::string > Ifc4::IfcTask::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcTask::WorkMethod() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } bool Ifc4::IfcTask::IsMilestone() const { bool v = *data_->getArgument(9); return v; } void Ifc4::IfcTask::setIsMilestone(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< int > Ifc4::IfcTask::Priority() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } int v = *data_->getArgument(10); return v; } -void Ifc4::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4::IfcTaskTime* Ifc4::IfcTask::TaskTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4::IfcTaskTime>(true); } void Ifc4::IfcTask::setTaskTime(::Ifc4::IfcTaskTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< ::Ifc4::IfcTaskTypeEnum::Value > Ifc4::IfcTask::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4::IfcTaskTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4::IfcTask::setPredefinedType(boost::optional< ::Ifc4::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTaskTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4::IfcTask::setPredefinedType(boost::optional< ::Ifc4::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTaskTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4::IfcTask::declaration() const { return *IFC4_IfcTask_type; } @@ -19467,39 +19467,39 @@ Ifc4::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_Owne // Function implementations for IfcTaskTime boost::optional< ::Ifc4::IfcTaskDurationEnum::Value > Ifc4::IfcTaskTime::DurationType() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4::IfcTaskDurationEnum::FromString(*data_->getArgument(3)); } -void Ifc4::IfcTaskTime::setDurationType(boost::optional< ::Ifc4::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTaskDurationEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4::IfcTaskTime::setDurationType(boost::optional< ::Ifc4::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTaskDurationEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::ScheduleDuration() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::EarlyStart() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::EarlyFinish() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::LateStart() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::LateFinish() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::FreeFloat() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::TotalFloat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< bool > Ifc4::IfcTaskTime::IsCritical() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } bool v = *data_->getArgument(13); return v; } -void Ifc4::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::StatusTime() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::ActualDuration() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::ActualStart() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } std::string v = *data_->getArgument(16); return v; } -void Ifc4::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::ActualFinish() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } std::string v = *data_->getArgument(17); return v; } -void Ifc4::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4::IfcTaskTime::RemainingTime() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< double > Ifc4::IfcTaskTime::Completion() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } double v = *data_->getArgument(19); return v; } -void Ifc4::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4::IfcTaskTime::declaration() const { return *IFC4_IfcTaskTime_type; } @@ -19521,7 +19521,7 @@ Ifc4::IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::string > ::Ifc4::IfcTaskTypeEnum::Value Ifc4::IfcTaskType::PredefinedType() const { return ::Ifc4::IfcTaskTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4::IfcTaskType::setPredefinedType(::Ifc4::IfcTaskTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcTaskTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4::IfcTaskType::WorkMethod() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4::IfcTaskType::declaration() const { return *IFC4_IfcTaskType_type; } @@ -19531,17 +19531,17 @@ Ifc4::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* // Function implementations for IfcTelecomAddress boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4::IfcTelecomAddress::TelephoneNumbers() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4::IfcTelecomAddress::FacsimileNumbers() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcTelecomAddress::PagerNumber() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4::IfcTelecomAddress::ElectronicMailAddresses() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcTelecomAddress::WWWHomePageURL() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4::IfcTelecomAddress::MessagingIDs() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(8); return v; } -void Ifc4::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcTelecomAddress::declaration() const { return *IFC4_IfcTelecomAddress_type; } @@ -19551,21 +19551,21 @@ Ifc4::IfcTelecomAddress::IfcTelecomAddress(boost::optional< ::Ifc4::IfcAddressTy // Function implementations for IfcTendon boost::optional< ::Ifc4::IfcTendonTypeEnum::Value > Ifc4::IfcTendon::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4::IfcTendon::setPredefinedType(boost::optional< ::Ifc4::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTendonTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4::IfcTendon::setPredefinedType(boost::optional< ::Ifc4::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTendonTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcTendon::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcTendon::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4::IfcTendon::TensionForce() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4::IfcTendon::PreStress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4::IfcTendon::FrictionCoefficient() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4::IfcTendon::AnchorageSlip() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4::IfcTendon::MinCurvatureRadius() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4::IfcTendon::declaration() const { return *IFC4_IfcTendon_type; } @@ -19575,7 +19575,7 @@ Ifc4::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_ // Function implementations for IfcTendonAnchor boost::optional< ::Ifc4::IfcTendonAnchorTypeEnum::Value > Ifc4::IfcTendonAnchor::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTendonAnchorTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTendonAnchorTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcTendonAnchor::declaration() const { return *IFC4_IfcTendonAnchor_type; } @@ -19597,11 +19597,11 @@ Ifc4::IfcTendonAnchorType::IfcTendonAnchorType(std::string v1_GlobalId, ::Ifc4:: ::Ifc4::IfcTendonTypeEnum::Value Ifc4::IfcTendonType::PredefinedType() const { return ::Ifc4::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4::IfcTendonType::setPredefinedType(::Ifc4::IfcTendonTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcTendonTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcTendonType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcTendonType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4::IfcTendonType::SheathDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4::IfcTendonType::declaration() const { return *IFC4_IfcTendonType_type; } @@ -19663,7 +19663,7 @@ void Ifc4::IfcTextStyle::setTextStyle(::Ifc4::IfcTextStyleTextModel* v) { {IfcWr ::Ifc4::IfcTextFontSelect* Ifc4::IfcTextStyle::TextFontStyle() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcTextFontSelect>(true); } void Ifc4::IfcTextStyle::setTextFontStyle(::Ifc4::IfcTextFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4::IfcTextStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcTextStyle::declaration() const { return *IFC4_IfcTextStyle_type; } @@ -19675,11 +19675,11 @@ Ifc4::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, ::Ifc4: std::vector< std::string > /*[1:?]*/ Ifc4::IfcTextStyleFontModel::FontFamily() const { std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } void Ifc4::IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcTextStyleFontModel::FontStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4::IfcTextStyleFontModel::FontVariant() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcTextStyleFontModel::FontWeight() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4::IfcSizeSelect* Ifc4::IfcTextStyleFontModel::FontSize() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4::IfcSizeSelect>(true); } void Ifc4::IfcTextStyleFontModel::setFontSize(::Ifc4::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -19705,15 +19705,15 @@ Ifc4::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4::IfcColour* ::Ifc4::IfcSizeSelect* Ifc4::IfcTextStyleTextModel::TextIndent() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4::IfcSizeSelect>(true); } void Ifc4::IfcTextStyleTextModel::setTextIndent(::Ifc4::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcTextStyleTextModel::TextAlign() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4::IfcTextStyleTextModel::TextDecoration() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4::IfcSizeSelect* Ifc4::IfcTextStyleTextModel::LetterSpacing() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcSizeSelect>(true); } void Ifc4::IfcTextStyleTextModel::setLetterSpacing(::Ifc4::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4::IfcSizeSelect* Ifc4::IfcTextStyleTextModel::WordSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4::IfcSizeSelect>(true); } void Ifc4::IfcTextStyleTextModel::setWordSpacing(::Ifc4::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcTextStyleTextModel::TextTransform() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4::IfcSizeSelect* Ifc4::IfcTextStyleTextModel::LineHeight() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4::IfcSizeSelect>(true); } void Ifc4::IfcTextStyleTextModel::setLineHeight(::Ifc4::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -19737,7 +19737,7 @@ Ifc4::IfcTextureCoordinate::IfcTextureCoordinate(aggregate_of< ::Ifc4::IfcSurfac std::string Ifc4::IfcTextureCoordinateGenerator::Mode() const { std::string v = *data_->getArgument(1); return v; } void Ifc4::IfcTextureCoordinateGenerator::setMode(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[1:?]*/ > Ifc4::IfcTextureCoordinateGenerator::Parameter() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4::IfcTextureCoordinateGenerator::declaration() const { return *IFC4_IfcTextureCoordinateGenerator_type; } @@ -19793,7 +19793,7 @@ Ifc4::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v2_EndT std::string Ifc4::IfcTimeSeries::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4::IfcTimeSeries::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4::IfcTimeSeries::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } std::string Ifc4::IfcTimeSeries::StartTime() const { std::string v = *data_->getArgument(2); return v; } void Ifc4::IfcTimeSeries::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::string Ifc4::IfcTimeSeries::EndTime() const { std::string v = *data_->getArgument(3); return v; } @@ -19803,7 +19803,7 @@ void Ifc4::IfcTimeSeries::setTimeSeriesDataType(::Ifc4::IfcTimeSeriesDataTypeEnu ::Ifc4::IfcDataOriginEnum::Value Ifc4::IfcTimeSeries::DataOrigin() const { return ::Ifc4::IfcDataOriginEnum::FromString(*data_->getArgument(5)); } void Ifc4::IfcTimeSeries::setDataOrigin(::Ifc4::IfcDataOriginEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcDataOriginEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4::IfcTimeSeries::UserDefinedDataOrigin() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4::IfcUnit* Ifc4::IfcTimeSeries::Unit() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4::IfcUnit>(true); } void Ifc4::IfcTimeSeries::setUnit(::Ifc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } @@ -19854,7 +19854,7 @@ Ifc4::IfcToroidalSurface::IfcToroidalSurface(::Ifc4::IfcAxis2Placement3D* v1_Pos // Function implementations for IfcTransformer boost::optional< ::Ifc4::IfcTransformerTypeEnum::Value > Ifc4::IfcTransformer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcTransformerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTransformerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTransformerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcTransformer::declaration() const { return *IFC4_IfcTransformer_type; } @@ -19874,7 +19874,7 @@ Ifc4::IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, ::Ifc4::If // Function implementations for IfcTransportElement boost::optional< ::Ifc4::IfcTransportElementTypeEnum::Value > Ifc4::IfcTransportElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcTransportElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcTransportElement::setPredefinedType(boost::optional< ::Ifc4::IfcTransportElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTransportElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcTransportElement::setPredefinedType(boost::optional< ::Ifc4::IfcTransportElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTransportElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcTransportElement::declaration() const { return *IFC4_IfcTransportElement_type; } @@ -19910,13 +19910,13 @@ Ifc4::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4::IfcProfileTypeEnum: // Function implementations for IfcTriangulatedFaceSet boost::optional< std::vector< std::vector< double > > > Ifc4::IfcTriangulatedFaceSet::Normals() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(1); return v; } -void Ifc4::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4::IfcTriangulatedFaceSet::Closed() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::vector< std::vector< int > > Ifc4::IfcTriangulatedFaceSet::CoordIndex() const { std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } void Ifc4::IfcTriangulatedFaceSet::setCoordIndex(std::vector< std::vector< int > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4::IfcTriangulatedFaceSet::PnIndex() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4::IfcTriangulatedFaceSet::declaration() const { return *IFC4_IfcTriangulatedFaceSet_type; } @@ -19944,7 +19944,7 @@ Ifc4::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4::IfcCurve* v1_BasisCurve, aggregat // Function implementations for IfcTubeBundle boost::optional< ::Ifc4::IfcTubeBundleTypeEnum::Value > Ifc4::IfcTubeBundle::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTubeBundleTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcTubeBundleTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcTubeBundle::declaration() const { return *IFC4_IfcTubeBundle_type; } @@ -19964,9 +19964,9 @@ Ifc4::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4::IfcO // Function implementations for IfcTypeObject boost::optional< std::string > Ifc4::IfcTypeObject::ApplicableOccurrence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcPropertySetDefinition >::ptr > Ifc4::IfcTypeObject::HasPropertySets() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4::IfcPropertySetDefinition >(); } -void Ifc4::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(5,attr);} } +void Ifc4::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(5,attr);} } ::Ifc4::IfcRelDefinesByType::list::ptr Ifc4::IfcTypeObject::Types() const { return data_->getInverse(IFC4_IfcRelDefinesByType_type, 5)->as(); } @@ -19977,11 +19977,11 @@ Ifc4::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4::IfcOwnerHist // Function implementations for IfcTypeProcess boost::optional< std::string > Ifc4::IfcTypeProcess::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcTypeProcess::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcTypeProcess::ProcessType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4::IfcRelAssignsToProcess::list::ptr Ifc4::IfcTypeProcess::OperatesOn() const { return data_->getInverse(IFC4_IfcRelAssignsToProcess_type, 6)->as(); } @@ -19992,9 +19992,9 @@ Ifc4::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4::IfcOwnerHi // Function implementations for IfcTypeProduct boost::optional< aggregate_of< ::Ifc4::IfcRepresentationMap >::ptr > Ifc4::IfcTypeProduct::RepresentationMaps() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4::IfcRepresentationMap >(); } -void Ifc4::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcTypeProduct::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4::IfcRelAssignsToProduct::list::ptr Ifc4::IfcTypeProduct::ReferencedBy() const { return data_->getInverse(IFC4_IfcRelAssignsToProduct_type, 6)->as(); } @@ -20005,11 +20005,11 @@ Ifc4::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4::IfcOwnerHi // Function implementations for IfcTypeResource boost::optional< std::string > Ifc4::IfcTypeResource::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4::IfcTypeResource::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcTypeResource::ResourceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4::IfcRelAssignsToResource::list::ptr Ifc4::IfcTypeResource::ResourceOf() const { return data_->getInverse(IFC4_IfcRelAssignsToResource_type, 6)->as(); } @@ -20028,11 +20028,11 @@ void Ifc4::IfcUShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteA double Ifc4::IfcUShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4::IfcUShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcUShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4::IfcUShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4::IfcUShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4::IfcUShapeProfileDef::declaration() const { return *IFC4_IfcUShapeProfileDef_type; } @@ -20052,7 +20052,7 @@ Ifc4::IfcUnitAssignment::IfcUnitAssignment(aggregate_of_instance::ptr v1_Units) // Function implementations for IfcUnitaryControlElement boost::optional< ::Ifc4::IfcUnitaryControlElementTypeEnum::Value > Ifc4::IfcUnitaryControlElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcUnitaryControlElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcUnitaryControlElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcUnitaryControlElement::declaration() const { return *IFC4_IfcUnitaryControlElement_type; } @@ -20072,7 +20072,7 @@ Ifc4::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::string v1_ // Function implementations for IfcUnitaryEquipment boost::optional< ::Ifc4::IfcUnitaryEquipmentTypeEnum::Value > Ifc4::IfcUnitaryEquipment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcUnitaryEquipmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcUnitaryEquipmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcUnitaryEquipment::declaration() const { return *IFC4_IfcUnitaryEquipment_type; } @@ -20092,7 +20092,7 @@ Ifc4::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_GlobalId, // Function implementations for IfcValve boost::optional< ::Ifc4::IfcValveTypeEnum::Value > Ifc4::IfcValve::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcValveTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcValve::setPredefinedType(boost::optional< ::Ifc4::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcValveTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcValve::setPredefinedType(boost::optional< ::Ifc4::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcValveTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcValve::declaration() const { return *IFC4_IfcValve_type; } @@ -20152,7 +20152,7 @@ Ifc4::IfcVertexPoint::IfcVertexPoint(::Ifc4::IfcPoint* v1_VertexGeometry) : IfcV // Function implementations for IfcVibrationIsolator boost::optional< ::Ifc4::IfcVibrationIsolatorTypeEnum::Value > Ifc4::IfcVibrationIsolator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcVibrationIsolatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcVibrationIsolatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcVibrationIsolator::declaration() const { return *IFC4_IfcVibrationIsolator_type; } @@ -20192,7 +20192,7 @@ Ifc4::IfcVirtualGridIntersection::IfcVirtualGridIntersection(aggregate_of< ::Ifc // Function implementations for IfcVoidingFeature boost::optional< ::Ifc4::IfcVoidingFeatureTypeEnum::Value > Ifc4::IfcVoidingFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcVoidingFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcVoidingFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcVoidingFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcVoidingFeature::declaration() const { return *IFC4_IfcVoidingFeature_type; } @@ -20202,7 +20202,7 @@ Ifc4::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4::IfcO // Function implementations for IfcWall boost::optional< ::Ifc4::IfcWallTypeEnum::Value > Ifc4::IfcWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcWall::setPredefinedType(boost::optional< ::Ifc4::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcWall::setPredefinedType(boost::optional< ::Ifc4::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcWall::declaration() const { return *IFC4_IfcWall_type; } @@ -20238,7 +20238,7 @@ Ifc4::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* // Function implementations for IfcWasteTerminal boost::optional< ::Ifc4::IfcWasteTerminalTypeEnum::Value > Ifc4::IfcWasteTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWasteTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWasteTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcWasteTerminal::declaration() const { return *IFC4_IfcWasteTerminal_type; } @@ -20258,15 +20258,15 @@ Ifc4::IfcWasteTerminalType::IfcWasteTerminalType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcWindow boost::optional< double > Ifc4::IfcWindow::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4::IfcWindow::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4::IfcWindowTypeEnum::Value > Ifc4::IfcWindow::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4::IfcWindowTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4::IfcWindow::setPredefinedType(boost::optional< ::Ifc4::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWindowTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4::IfcWindow::setPredefinedType(boost::optional< ::Ifc4::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWindowTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4::IfcWindowTypePartitioningEnum::Value > Ifc4::IfcWindow::PartitioningType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(11)); } -void Ifc4::IfcWindow::setPartitioningType(boost::optional< ::Ifc4::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWindowTypePartitioningEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4::IfcWindow::setPartitioningType(boost::optional< ::Ifc4::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWindowTypePartitioningEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4::IfcWindow::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4::IfcWindow::declaration() const { return *IFC4_IfcWindow_type; } @@ -20276,29 +20276,29 @@ Ifc4::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* v2_ // Function implementations for IfcWindowLiningProperties boost::optional< double > Ifc4::IfcWindowLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4::IfcWindowLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcWindowLiningProperties::TransomThickness() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcWindowLiningProperties::MullionThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4::IfcWindowLiningProperties::FirstTransomOffset() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4::IfcWindowLiningProperties::SecondTransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4::IfcWindowLiningProperties::FirstMullionOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4::IfcWindowLiningProperties::SecondMullionOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } ::Ifc4::IfcShapeAspect* Ifc4::IfcWindowLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc4::IfcShapeAspect>(true); } void Ifc4::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc4::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} } boost::optional< double > Ifc4::IfcWindowLiningProperties::LiningOffset() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4::IfcWindowLiningProperties::declaration() const { return *IFC4_IfcWindowLiningProperties_type; } @@ -20312,9 +20312,9 @@ void Ifc4::IfcWindowPanelProperties::setOperationType(::Ifc4::IfcWindowPanelOper ::Ifc4::IfcWindowPanelPositionEnum::Value Ifc4::IfcWindowPanelProperties::PanelPosition() const { return ::Ifc4::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4::IfcWindowPanelProperties::setPanelPosition(::Ifc4::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4::IfcWindowPanelProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcWindowPanelProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4::IfcShapeAspect* Ifc4::IfcWindowPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4::IfcShapeAspect>(true); } void Ifc4::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc4::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -20354,9 +20354,9 @@ void Ifc4::IfcWindowType::setPredefinedType(::Ifc4::IfcWindowTypeEnum::Value v) ::Ifc4::IfcWindowTypePartitioningEnum::Value Ifc4::IfcWindowType::PartitioningType() const { return ::Ifc4::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(10)); } void Ifc4::IfcWindowType::setPartitioningType(::Ifc4::IfcWindowTypePartitioningEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4::IfcWindowTypePartitioningEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4::IfcWindowType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4::IfcWindowType::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4::IfcWindowType::declaration() const { return *IFC4_IfcWindowType_type; } @@ -20366,11 +20366,11 @@ Ifc4::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4::IfcOwnerHist // Function implementations for IfcWorkCalendar boost::optional< aggregate_of< ::Ifc4::IfcWorkTime >::ptr > Ifc4::IfcWorkCalendar::WorkingTimes() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4::IfcWorkTime >(); } -void Ifc4::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcWorkTime >::ptr > Ifc4::IfcWorkCalendar::ExceptionTimes() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4::IfcWorkTime >(); } -void Ifc4::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4::IfcWorkCalendarTypeEnum::Value > Ifc4::IfcWorkCalendar::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4::IfcWorkCalendarTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWorkCalendarTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWorkCalendarTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcWorkCalendar::declaration() const { return *IFC4_IfcWorkCalendar_type; } @@ -20382,17 +20382,17 @@ Ifc4::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4::IfcOwner std::string Ifc4::IfcWorkControl::CreationDate() const { std::string v = *data_->getArgument(6); return v; } void Ifc4::IfcWorkControl::setCreationDate(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4::IfcPerson >::ptr > Ifc4::IfcWorkControl::Creators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4::IfcPerson >(); } -void Ifc4::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4::IfcWorkControl::Purpose() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4::IfcWorkControl::Duration() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4::IfcWorkControl::TotalFloat() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } std::string Ifc4::IfcWorkControl::StartTime() const { std::string v = *data_->getArgument(11); return v; } void Ifc4::IfcWorkControl::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4::IfcWorkControl::FinishTime() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4::IfcWorkControl::declaration() const { return *IFC4_IfcWorkControl_type; } @@ -20402,7 +20402,7 @@ Ifc4::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4::IfcOwnerHi // Function implementations for IfcWorkPlan boost::optional< ::Ifc4::IfcWorkPlanTypeEnum::Value > Ifc4::IfcWorkPlan::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4::IfcWorkPlanTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWorkPlanTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWorkPlanTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4::IfcWorkPlan::declaration() const { return *IFC4_IfcWorkPlan_type; } @@ -20412,7 +20412,7 @@ Ifc4::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory* // Function implementations for IfcWorkSchedule boost::optional< ::Ifc4::IfcWorkScheduleTypeEnum::Value > Ifc4::IfcWorkSchedule::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4::IfcWorkScheduleTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWorkScheduleTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4::IfcWorkScheduleTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4::IfcWorkSchedule::declaration() const { return *IFC4_IfcWorkSchedule_type; } @@ -20424,9 +20424,9 @@ Ifc4::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4::IfcOwner ::Ifc4::IfcRecurrencePattern* Ifc4::IfcWorkTime::RecurrencePattern() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4::IfcRecurrencePattern>(true); } void Ifc4::IfcWorkTime::setRecurrencePattern(::Ifc4::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4::IfcWorkTime::Start() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4::IfcWorkTime::Finish() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4::IfcWorkTime::declaration() const { return *IFC4_IfcWorkTime_type; } @@ -20444,9 +20444,9 @@ void Ifc4::IfcZShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteA double Ifc4::IfcZShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4::IfcZShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4::IfcZShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4::IfcZShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4::IfcZShapeProfileDef::declaration() const { return *IFC4_IfcZShapeProfileDef_type; } @@ -20456,7 +20456,7 @@ Ifc4::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4::IfcProfileTypeEnum::Value // Function implementations for IfcZone boost::optional< std::string > Ifc4::IfcZone::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4::IfcZone::declaration() const { return *IFC4_IfcZone_type; } diff --git a/src/ifcparse/Ifc4.h b/src/ifcparse/Ifc4.h index 82f8748c12..8b80139d29 100644 --- a/src/ifcparse/Ifc4.h +++ b/src/ifcparse/Ifc4.h @@ -42,7 +42,9 @@ struct Ifc4 { -static const IfcParse::schema_definition& get_schema(); +IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); + +IFC_PARSE_API static void clear_schema(); static const char* const Identifier; diff --git a/src/ifcparse/Ifc4x1-schema.cpp b/src/ifcparse/Ifc4x1-schema.cpp index d442a761bf..277c319cc6 100644 --- a/src/ifcparse/Ifc4x1-schema.cpp +++ b/src/ifcparse/Ifc4x1-schema.cpp @@ -15472,9 +15472,16 @@ IfcParse::schema_definition* IFC4X1_populate_schema() { #pragma optimize("", on) #endif -const schema_definition& Ifc4x1::get_schema() { +static std::unique_ptr schema; - static const schema_definition* s = IFC4X1_populate_schema(); - return *s; +void Ifc4x1::clear_schema() { + schema.reset(); +} + +const schema_definition& Ifc4x1::get_schema() { + if (!schema) { + schema.reset(IFC4X1_populate_schema()); + } + return *schema; } diff --git a/src/ifcparse/Ifc4x1.cpp b/src/ifcparse/Ifc4x1.cpp index e7814ae7bb..6799e2678f 100644 --- a/src/ifcparse/Ifc4x1.cpp +++ b/src/ifcparse/Ifc4x1.cpp @@ -11269,11 +11269,11 @@ Ifc4x1::IfcWarpingMomentMeasure::operator double() const { return *data_->getArg // Function implementations for IfcActionRequest boost::optional< ::Ifc4x1::IfcActionRequestTypeEnum::Value > Ifc4x1::IfcActionRequest::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x1::IfcActionRequestTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x1::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x1::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcActionRequestTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x1::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x1::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcActionRequestTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcActionRequest::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcActionRequest::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcActionRequest::declaration() const { return *IFC4X1_IfcActionRequest_type; } @@ -11296,9 +11296,9 @@ Ifc4x1::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* v ::Ifc4x1::IfcRoleEnum::Value Ifc4x1::IfcActorRole::Role() const { return ::Ifc4x1::IfcRoleEnum::FromString(*data_->getArgument(0)); } void Ifc4x1::IfcActorRole::setRole(::Ifc4x1::IfcRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcRoleEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcActorRole::UserDefinedRole() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcActorRole::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcExternalReferenceRelationship::list::ptr Ifc4x1::IfcActorRole::HasExternalReference() const { return data_->getInverse(IFC4X1_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -11309,7 +11309,7 @@ Ifc4x1::IfcActorRole::IfcActorRole(::Ifc4x1::IfcRoleEnum::Value v1_Role, boost:: // Function implementations for IfcActuator boost::optional< ::Ifc4x1::IfcActuatorTypeEnum::Value > Ifc4x1::IfcActuator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcActuatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x1::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcActuatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x1::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcActuatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcActuator::declaration() const { return *IFC4X1_IfcActuator_type; } @@ -11329,11 +11329,11 @@ Ifc4x1::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4x1::IfcO // Function implementations for IfcAddress boost::optional< ::Ifc4x1::IfcAddressTypeEnum::Value > Ifc4x1::IfcAddress::Purpose() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } return ::Ifc4x1::IfcAddressTypeEnum::FromString(*data_->getArgument(0)); } -void Ifc4x1::IfcAddress::setPurpose(boost::optional< ::Ifc4x1::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAddressTypeEnum::ToString(*v)));data_->setArgument(0,attr);} } +void Ifc4x1::IfcAddress::setPurpose(boost::optional< ::Ifc4x1::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAddressTypeEnum::ToString(*v)));}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcAddress::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcAddress::UserDefinedPurpose() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcPerson::list::ptr Ifc4x1::IfcAddress::OfPerson() const { return data_->getInverse(IFC4X1_IfcPerson_type, 7)->as(); } ::Ifc4x1::IfcOrganization::list::ptr Ifc4x1::IfcAddress::OfOrganization() const { return data_->getInverse(IFC4X1_IfcOrganization_type, 4)->as(); } @@ -11371,7 +11371,7 @@ Ifc4x1::IfcAdvancedFace::IfcAdvancedFace(aggregate_of< ::Ifc4x1::IfcFaceBound >: // Function implementations for IfcAirTerminal boost::optional< ::Ifc4x1::IfcAirTerminalTypeEnum::Value > Ifc4x1::IfcAirTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x1::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAirTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x1::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAirTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcAirTerminal::declaration() const { return *IFC4X1_IfcAirTerminal_type; } @@ -11381,7 +11381,7 @@ Ifc4x1::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4x1::IfcOwn // Function implementations for IfcAirTerminalBox boost::optional< ::Ifc4x1::IfcAirTerminalBoxTypeEnum::Value > Ifc4x1::IfcAirTerminalBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x1::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAirTerminalBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x1::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAirTerminalBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcAirTerminalBox::declaration() const { return *IFC4X1_IfcAirTerminalBox_type; } @@ -11411,7 +11411,7 @@ Ifc4x1::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::Ifc4x1 // Function implementations for IfcAirToAirHeatRecovery boost::optional< ::Ifc4x1::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4x1::IfcAirToAirHeatRecovery::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x1::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x1::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcAirToAirHeatRecovery::declaration() const { return *IFC4X1_IfcAirToAirHeatRecovery_type; } @@ -11431,7 +11431,7 @@ Ifc4x1::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string v1_ // Function implementations for IfcAlarm boost::optional< ::Ifc4x1::IfcAlarmTypeEnum::Value > Ifc4x1::IfcAlarm::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcAlarmTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x1::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAlarmTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x1::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAlarmTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcAlarm::declaration() const { return *IFC4X1_IfcAlarm_type; } @@ -11451,7 +11451,7 @@ Ifc4x1::IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHi // Function implementations for IfcAlignment boost::optional< ::Ifc4x1::IfcAlignmentTypeEnum::Value > Ifc4x1::IfcAlignment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcAlignmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x1::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAlignmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x1::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAlignmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcAlignment::declaration() const { return *IFC4X1_IfcAlignment_type; } @@ -11461,7 +11461,7 @@ Ifc4x1::IfcAlignment::IfcAlignment(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHi // Function implementations for IfcAlignment2DHorizontal boost::optional< double > Ifc4x1::IfcAlignment2DHorizontal::StartDistAlong() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcAlignment2DHorizontal::setStartDistAlong(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcAlignment2DHorizontal::setStartDistAlong(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc4x1::IfcAlignment2DHorizontalSegment >::ptr Ifc4x1::IfcAlignment2DHorizontal::Segments() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x1::IfcAlignment2DHorizontalSegment >(); } void Ifc4x1::IfcAlignment2DHorizontal::setSegments(aggregate_of< ::Ifc4x1::IfcAlignment2DHorizontalSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -11485,11 +11485,11 @@ Ifc4x1::IfcAlignment2DHorizontalSegment::IfcAlignment2DHorizontalSegment(boost:: // Function implementations for IfcAlignment2DSegment boost::optional< bool > Ifc4x1::IfcAlignment2DSegment::TangentialContinuity() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } bool v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcAlignment2DSegment::setTangentialContinuity(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcAlignment2DSegment::setTangentialContinuity(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcAlignment2DSegment::StartTag() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcAlignment2DSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcAlignment2DSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcAlignment2DSegment::EndTag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcAlignment2DSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcAlignment2DSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcAlignment2DSegment::declaration() const { return *IFC4X1_IfcAlignment2DSegment_type; } @@ -11563,7 +11563,7 @@ void Ifc4x1::IfcAlignmentCurve::setHorizontal(::Ifc4x1::IfcAlignment2DHorizontal ::Ifc4x1::IfcAlignment2DVertical* Ifc4x1::IfcAlignmentCurve::Vertical() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x1::IfcAlignment2DVertical>(true); } void Ifc4x1::IfcAlignmentCurve::setVertical(::Ifc4x1::IfcAlignment2DVertical* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcAlignmentCurve::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcAlignmentCurve::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcAlignmentCurve::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcAlignmentCurve::declaration() const { return *IFC4X1_IfcAlignmentCurve_type; } @@ -11584,7 +11584,7 @@ Ifc4x1::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4x1::IfcOwner ::Ifc4x1::IfcCurve* Ifc4x1::IfcAnnotationFillArea::OuterBoundary() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x1::IfcCurve>(true); } void Ifc4x1::IfcAnnotationFillArea::setOuterBoundary(::Ifc4x1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcCurve >::ptr > Ifc4x1::IfcAnnotationFillArea::InnerBoundaries() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x1::IfcCurve >(); } -void Ifc4x1::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x1::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x1::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x1::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x1::IfcAnnotationFillArea::declaration() const { return *IFC4X1_IfcAnnotationFillArea_type; } @@ -11610,25 +11610,25 @@ Ifc4x1::IfcApplication::IfcApplication(::Ifc4x1::IfcOrganization* v1_Application // Function implementations for IfcAppliedValue boost::optional< std::string > Ifc4x1::IfcAppliedValue::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcAppliedValue::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x1::IfcAppliedValueSelect* Ifc4x1::IfcAppliedValue::AppliedValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x1::IfcAppliedValueSelect>(true); } void Ifc4x1::IfcAppliedValue::setAppliedValue(::Ifc4x1::IfcAppliedValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x1::IfcMeasureWithUnit* Ifc4x1::IfcAppliedValue::UnitBasis() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcMeasureWithUnit>(true); } void Ifc4x1::IfcAppliedValue::setUnitBasis(::Ifc4x1::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcAppliedValue::ApplicableDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcAppliedValue::FixedUntilDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcAppliedValue::Category() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcAppliedValue::Condition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x1::IfcArithmeticOperatorEnum::Value > Ifc4x1::IfcAppliedValue::ArithmeticOperator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcArithmeticOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x1::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcArithmeticOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x1::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcArithmeticOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcAppliedValue >::ptr > Ifc4x1::IfcAppliedValue::Components() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x1::IfcAppliedValue >(); } -void Ifc4x1::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x1::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x1::IfcExternalReferenceRelationship::list::ptr Ifc4x1::IfcAppliedValue::HasExternalReference() const { return data_->getInverse(IFC4X1_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -11639,19 +11639,19 @@ Ifc4x1::IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_Name, // Function implementations for IfcApproval boost::optional< std::string > Ifc4x1::IfcApproval::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcApproval::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcApproval::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x1::IfcApproval::TimeOfApproval() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcApproval::Status() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcApproval::Level() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcApproval::Qualifier() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x1::IfcActorSelect* Ifc4x1::IfcApproval::RequestingApproval() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x1::IfcActorSelect>(true); } void Ifc4x1::IfcApproval::setRequestingApproval(::Ifc4x1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x1::IfcActorSelect* Ifc4x1::IfcApproval::GivingApproval() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x1::IfcActorSelect>(true); } @@ -11712,7 +11712,7 @@ Ifc4x1::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::Ifc4x // Function implementations for IfcAsset boost::optional< std::string > Ifc4x1::IfcAsset::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x1::IfcCostValue* Ifc4x1::IfcAsset::OriginalValue() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcCostValue>(true); } void Ifc4x1::IfcAsset::setOriginalValue(::Ifc4x1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } ::Ifc4x1::IfcCostValue* Ifc4x1::IfcAsset::CurrentValue() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x1::IfcCostValue>(true); } @@ -11726,7 +11726,7 @@ void Ifc4x1::IfcAsset::setUser(::Ifc4x1::IfcActorSelect* v) { {IfcWrite::IfcWrit ::Ifc4x1::IfcPerson* Ifc4x1::IfcAsset::ResponsiblePerson() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x1::IfcPerson>(true); } void Ifc4x1::IfcAsset::setResponsiblePerson(::Ifc4x1::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x1::IfcAsset::IncorporationDate() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x1::IfcCostValue* Ifc4x1::IfcAsset::DepreciatedValue() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x1::IfcCostValue>(true); } void Ifc4x1::IfcAsset::setDepreciatedValue(::Ifc4x1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -11746,21 +11746,21 @@ void Ifc4x1::IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { {IfcWrit double Ifc4x1::IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x1::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } double Ifc4x1::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { double v = *data_->getArgument(8); return v; } void Ifc4x1::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< double > Ifc4x1::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x1::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x1::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x1::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x1::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x1::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x1::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x1::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } const IfcParse::entity& Ifc4x1::IfcAsymmetricIShapeProfileDef::declaration() const { return *IFC4X1_IfcAsymmetricIShapeProfileDef_type; } @@ -11770,7 +11770,7 @@ Ifc4x1::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4x1::I // Function implementations for IfcAudioVisualAppliance boost::optional< ::Ifc4x1::IfcAudioVisualApplianceTypeEnum::Value > Ifc4x1::IfcAudioVisualAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x1::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAudioVisualApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x1::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAudioVisualApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcAudioVisualAppliance::declaration() const { return *IFC4X1_IfcAudioVisualAppliance_type; } @@ -11894,7 +11894,7 @@ Ifc4x1::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegree, i // Function implementations for IfcBeam boost::optional< ::Ifc4x1::IfcBeamTypeEnum::Value > Ifc4x1::IfcBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x1::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x1::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcBeam::declaration() const { return *IFC4X1_IfcBeam_type; } @@ -11948,7 +11948,7 @@ Ifc4x1::IfcBlock::IfcBlock(::Ifc4x1::IfcAxis2Placement3D* v1_Position, double v2 // Function implementations for IfcBoiler boost::optional< ::Ifc4x1::IfcBoilerTypeEnum::Value > Ifc4x1::IfcBoiler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcBoilerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x1::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBoilerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x1::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBoilerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcBoiler::declaration() const { return *IFC4X1_IfcBoiler_type; } @@ -11990,7 +11990,7 @@ Ifc4x1::IfcBooleanResult::IfcBooleanResult(::Ifc4x1::IfcBooleanOperator::Value v // Function implementations for IfcBoundaryCondition boost::optional< std::string > Ifc4x1::IfcBoundaryCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x1::IfcBoundaryCondition::declaration() const { return *IFC4X1_IfcBoundaryCondition_type; } @@ -12114,9 +12114,9 @@ Ifc4x1::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4x1::IfcSurface* v1_BaseSurfac // Function implementations for IfcBuilding boost::optional< double > Ifc4x1::IfcBuilding::ElevationOfRefHeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcBuilding::ElevationOfTerrain() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x1::IfcPostalAddress* Ifc4x1::IfcBuilding::BuildingAddress() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x1::IfcPostalAddress>(true); } void Ifc4x1::IfcBuilding::setBuildingAddress(::Ifc4x1::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } @@ -12136,7 +12136,7 @@ Ifc4x1::IfcBuildingElement::IfcBuildingElement(std::string v1_GlobalId, ::Ifc4x1 // Function implementations for IfcBuildingElementPart boost::optional< ::Ifc4x1::IfcBuildingElementPartTypeEnum::Value > Ifc4x1::IfcBuildingElementPart::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x1::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBuildingElementPartTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x1::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBuildingElementPartTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcBuildingElementPart::declaration() const { return *IFC4X1_IfcBuildingElementPart_type; } @@ -12156,7 +12156,7 @@ Ifc4x1::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v1_Gl // Function implementations for IfcBuildingElementProxy boost::optional< ::Ifc4x1::IfcBuildingElementProxyTypeEnum::Value > Ifc4x1::IfcBuildingElementProxy::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x1::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBuildingElementProxyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x1::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBuildingElementProxyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcBuildingElementProxy::declaration() const { return *IFC4X1_IfcBuildingElementProxy_type; } @@ -12184,7 +12184,7 @@ Ifc4x1::IfcBuildingElementType::IfcBuildingElementType(std::string v1_GlobalId, // Function implementations for IfcBuildingStorey boost::optional< double > Ifc4x1::IfcBuildingStorey::Elevation() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcBuildingStorey::declaration() const { return *IFC4X1_IfcBuildingStorey_type; } @@ -12194,9 +12194,9 @@ Ifc4x1::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4x1:: // Function implementations for IfcBuildingSystem boost::optional< ::Ifc4x1::IfcBuildingSystemTypeEnum::Value > Ifc4x1::IfcBuildingSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x1::IfcBuildingSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x1::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x1::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBuildingSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x1::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x1::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBuildingSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcBuildingSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x1::IfcBuildingSystem::declaration() const { return *IFC4X1_IfcBuildingSystem_type; } @@ -12206,7 +12206,7 @@ Ifc4x1::IfcBuildingSystem::IfcBuildingSystem(std::string v1_GlobalId, ::Ifc4x1:: // Function implementations for IfcBurner boost::optional< ::Ifc4x1::IfcBurnerTypeEnum::Value > Ifc4x1::IfcBurner::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcBurnerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x1::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBurnerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x1::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcBurnerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcBurner::declaration() const { return *IFC4X1_IfcBurner_type; } @@ -12234,7 +12234,7 @@ void Ifc4x1::IfcCShapeProfileDef::setWallThickness(double v) { {IfcWrite::IfcWri double Ifc4x1::IfcCShapeProfileDef::Girth() const { double v = *data_->getArgument(6); return v; } void Ifc4x1::IfcCShapeProfileDef::setGirth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcCShapeProfileDef::InternalFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x1::IfcCShapeProfileDef::declaration() const { return *IFC4X1_IfcCShapeProfileDef_type; } @@ -12244,7 +12244,7 @@ Ifc4x1::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4x1::IfcProfileTypeEnum::V // Function implementations for IfcCableCarrierFitting boost::optional< ::Ifc4x1::IfcCableCarrierFittingTypeEnum::Value > Ifc4x1::IfcCableCarrierFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x1::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCableCarrierFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x1::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCableCarrierFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCableCarrierFitting::declaration() const { return *IFC4X1_IfcCableCarrierFitting_type; } @@ -12264,7 +12264,7 @@ Ifc4x1::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v1_Gl // Function implementations for IfcCableCarrierSegment boost::optional< ::Ifc4x1::IfcCableCarrierSegmentTypeEnum::Value > Ifc4x1::IfcCableCarrierSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x1::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCableCarrierSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x1::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCableCarrierSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCableCarrierSegment::declaration() const { return *IFC4X1_IfcCableCarrierSegment_type; } @@ -12284,7 +12284,7 @@ Ifc4x1::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v1_Gl // Function implementations for IfcCableFitting boost::optional< ::Ifc4x1::IfcCableFittingTypeEnum::Value > Ifc4x1::IfcCableFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCableFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x1::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCableFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x1::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCableFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCableFitting::declaration() const { return *IFC4X1_IfcCableFitting_type; } @@ -12304,7 +12304,7 @@ Ifc4x1::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCableSegment boost::optional< ::Ifc4x1::IfcCableSegmentTypeEnum::Value > Ifc4x1::IfcCableSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x1::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCableSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x1::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCableSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCableSegment::declaration() const { return *IFC4X1_IfcCableSegment_type; } @@ -12344,7 +12344,7 @@ Ifc4x1::IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricRepresentat std::vector< std::vector< double > > Ifc4x1::IfcCartesianPointList2D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x1::IfcCartesianPointList2D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcCartesianPointList2D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x1::IfcCartesianPointList2D::declaration() const { return *IFC4X1_IfcCartesianPointList2D_type; } @@ -12356,7 +12356,7 @@ Ifc4x1::IfcCartesianPointList2D::IfcCartesianPointList2D(std::vector< std::vecto std::vector< std::vector< double > > Ifc4x1::IfcCartesianPointList3D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x1::IfcCartesianPointList3D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcCartesianPointList3D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x1::IfcCartesianPointList3D::declaration() const { return *IFC4X1_IfcCartesianPointList3D_type; } @@ -12372,7 +12372,7 @@ void Ifc4x1::IfcCartesianTransformationOperator::setAxis2(::Ifc4x1::IfcDirection ::Ifc4x1::IfcCartesianPoint* Ifc4x1::IfcCartesianTransformationOperator::LocalOrigin() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x1::IfcCartesianPoint>(true); } void Ifc4x1::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc4x1::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcCartesianTransformationOperator::Scale() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcCartesianTransformationOperator::declaration() const { return *IFC4X1_IfcCartesianTransformationOperator_type; } @@ -12390,7 +12390,7 @@ Ifc4x1::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator // Function implementations for IfcCartesianTransformationOperator2DnonUniform boost::optional< double > Ifc4x1::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IFC4X1_IfcCartesianTransformationOperator2DnonUniform_type; } @@ -12410,9 +12410,9 @@ Ifc4x1::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator // Function implementations for IfcCartesianTransformationOperator3DnonUniform boost::optional< double > Ifc4x1::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x1::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IFC4X1_IfcCartesianTransformationOperator3DnonUniform_type; } @@ -12432,7 +12432,7 @@ Ifc4x1::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4x1::IfcProfileTyp // Function implementations for IfcChiller boost::optional< ::Ifc4x1::IfcChillerTypeEnum::Value > Ifc4x1::IfcChiller::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcChillerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x1::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcChillerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x1::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcChillerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcChiller::declaration() const { return *IFC4X1_IfcChiller_type; } @@ -12452,7 +12452,7 @@ Ifc4x1::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4x1::IfcOwn // Function implementations for IfcChimney boost::optional< ::Ifc4x1::IfcChimneyTypeEnum::Value > Ifc4x1::IfcChimney::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcChimneyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x1::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcChimneyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x1::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcChimneyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcChimney::declaration() const { return *IFC4X1_IfcChimney_type; } @@ -12530,19 +12530,19 @@ Ifc4x1::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcClassification boost::optional< std::string > Ifc4x1::IfcClassification::Source() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcClassification::Edition() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcClassification::EditionDate() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::string Ifc4x1::IfcClassification::Name() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x1::IfcClassification::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcClassification::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcClassification::Location() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcClassification::ReferenceTokens() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x1::IfcRelAssociatesClassification::list::ptr Ifc4x1::IfcClassification::ClassificationForObjects() const { return data_->getInverse(IFC4X1_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x1::IfcClassificationReference::list::ptr Ifc4x1::IfcClassification::HasReferences() const { return data_->getInverse(IFC4X1_IfcClassificationReference_type, 3)->as(); } @@ -12556,9 +12556,9 @@ Ifc4x1::IfcClassification::IfcClassification(boost::optional< std::string > v1_S ::Ifc4x1::IfcClassificationReferenceSelect* Ifc4x1::IfcClassificationReference::ReferencedSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcClassificationReferenceSelect>(true); } void Ifc4x1::IfcClassificationReference::setReferencedSource(::Ifc4x1::IfcClassificationReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcClassificationReference::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcClassificationReference::Sort() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x1::IfcRelAssociatesClassification::list::ptr Ifc4x1::IfcClassificationReference::ClassificationRefForObjects() const { return data_->getInverse(IFC4X1_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x1::IfcClassificationReference::list::ptr Ifc4x1::IfcClassificationReference::HasReferences() const { return data_->getInverse(IFC4X1_IfcClassificationReference_type, 3)->as(); } @@ -12578,7 +12578,7 @@ Ifc4x1::IfcClosedShell::IfcClosedShell(aggregate_of< ::Ifc4x1::IfcFace >::ptr v1 // Function implementations for IfcCoil boost::optional< ::Ifc4x1::IfcCoilTypeEnum::Value > Ifc4x1::IfcCoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x1::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x1::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCoil::declaration() const { return *IFC4X1_IfcCoil_type; } @@ -12622,7 +12622,7 @@ Ifc4x1::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double > > // Function implementations for IfcColourSpecification boost::optional< std::string > Ifc4x1::IfcColourSpecification::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x1::IfcColourSpecification::declaration() const { return *IFC4X1_IfcColourSpecification_type; } @@ -12632,7 +12632,7 @@ Ifc4x1::IfcColourSpecification::IfcColourSpecification(boost::optional< std::str // Function implementations for IfcColumn boost::optional< ::Ifc4x1::IfcColumnTypeEnum::Value > Ifc4x1::IfcColumn::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcColumnTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x1::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcColumnTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x1::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcColumnTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcColumn::declaration() const { return *IFC4X1_IfcColumn_type; } @@ -12660,7 +12660,7 @@ Ifc4x1::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4x1::IfcOwner // Function implementations for IfcCommunicationsAppliance boost::optional< ::Ifc4x1::IfcCommunicationsApplianceTypeEnum::Value > Ifc4x1::IfcCommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x1::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x1::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCommunicationsAppliance::declaration() const { return *IFC4X1_IfcCommunicationsAppliance_type; } @@ -12692,11 +12692,11 @@ Ifc4x1::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::optio // Function implementations for IfcComplexPropertyTemplate boost::optional< std::string > Ifc4x1::IfcComplexPropertyTemplate::UsageName() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< ::Ifc4x1::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4x1::IfcComplexPropertyTemplate::TemplateType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x1::IfcComplexPropertyTemplateTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x1::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x1::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x1::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x1::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcPropertyTemplate >::ptr > Ifc4x1::IfcComplexPropertyTemplate::HasPropertyTemplates() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x1::IfcPropertyTemplate >(); } -void Ifc4x1::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x1::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x1::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x1::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x1::IfcComplexPropertyTemplate::declaration() const { return *IFC4X1_IfcComplexPropertyTemplate_type; } @@ -12743,7 +12743,7 @@ Ifc4x1::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4x1::IfcTransiti aggregate_of< ::Ifc4x1::IfcProfileDef >::ptr Ifc4x1::IfcCompositeProfileDef::Profiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x1::IfcProfileDef >(); } void Ifc4x1::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc4x1::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x1::IfcCompositeProfileDef::Label() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcCompositeProfileDef::declaration() const { return *IFC4X1_IfcCompositeProfileDef_type; } @@ -12753,7 +12753,7 @@ Ifc4x1::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4x1::IfcProfileTypeE // Function implementations for IfcCompressor boost::optional< ::Ifc4x1::IfcCompressorTypeEnum::Value > Ifc4x1::IfcCompressor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCompressorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x1::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCompressorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x1::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCompressorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCompressor::declaration() const { return *IFC4X1_IfcCompressor_type; } @@ -12773,7 +12773,7 @@ Ifc4x1::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4x1:: // Function implementations for IfcCondenser boost::optional< ::Ifc4x1::IfcCondenserTypeEnum::Value > Ifc4x1::IfcCondenser::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCondenserTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x1::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCondenserTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x1::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCondenserTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCondenser::declaration() const { return *IFC4X1_IfcCondenser_type; } @@ -12833,11 +12833,11 @@ Ifc4x1::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEntity( // Function implementations for IfcConnectionPointEccentricity boost::optional< double > Ifc4x1::IfcConnectionPointEccentricity::EccentricityInX() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcConnectionPointEccentricity::EccentricityInY() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcConnectionPointEccentricity::EccentricityInZ() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcConnectionPointEccentricity::declaration() const { return *IFC4X1_IfcConnectionPointEccentricity_type; } @@ -12885,17 +12885,17 @@ Ifc4x1::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4x1::IfcSo std::string Ifc4x1::IfcConstraint::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x1::IfcConstraint::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcConstraint::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x1::IfcConstraintEnum::Value Ifc4x1::IfcConstraint::ConstraintGrade() const { return ::Ifc4x1::IfcConstraintEnum::FromString(*data_->getArgument(2)); } void Ifc4x1::IfcConstraint::setConstraintGrade(::Ifc4x1::IfcConstraintEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcConstraintEnum::ToString(v)));data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x1::IfcConstraint::ConstraintSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x1::IfcActorSelect* Ifc4x1::IfcConstraint::CreatingActor() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x1::IfcActorSelect>(true); } void Ifc4x1::IfcConstraint::setCreatingActor(::Ifc4x1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcConstraint::CreationTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcConstraint::UserDefinedGrade() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x1::IfcExternalReferenceRelationship::list::ptr Ifc4x1::IfcConstraint::HasExternalReferences() const { return data_->getInverse(IFC4X1_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x1::IfcResourceConstraintRelationship::list::ptr Ifc4x1::IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(IFC4X1_IfcResourceConstraintRelationship_type, 2)->as(); } @@ -12907,7 +12907,7 @@ Ifc4x1::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< std:: // Function implementations for IfcConstructionEquipmentResource boost::optional< ::Ifc4x1::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4x1::IfcConstructionEquipmentResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcConstructionEquipmentResource::declaration() const { return *IFC4X1_IfcConstructionEquipmentResource_type; } @@ -12927,7 +12927,7 @@ Ifc4x1::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceTy // Function implementations for IfcConstructionMaterialResource boost::optional< ::Ifc4x1::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4x1::IfcConstructionMaterialResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcConstructionMaterialResource::declaration() const { return *IFC4X1_IfcConstructionMaterialResource_type; } @@ -12947,7 +12947,7 @@ Ifc4x1::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType // Function implementations for IfcConstructionProductResource boost::optional< ::Ifc4x1::IfcConstructionProductResourceTypeEnum::Value > Ifc4x1::IfcConstructionProductResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcConstructionProductResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcConstructionProductResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcConstructionProductResource::declaration() const { return *IFC4X1_IfcConstructionProductResource_type; } @@ -12969,7 +12969,7 @@ Ifc4x1::IfcConstructionProductResourceType::IfcConstructionProductResourceType(s ::Ifc4x1::IfcResourceTime* Ifc4x1::IfcConstructionResource::Usage() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x1::IfcResourceTime>(true); } void Ifc4x1::IfcConstructionResource::setUsage(::Ifc4x1::IfcResourceTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcAppliedValue >::ptr > Ifc4x1::IfcConstructionResource::BaseCosts() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x1::IfcAppliedValue >(); } -void Ifc4x1::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x1::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x1::IfcPhysicalQuantity* Ifc4x1::IfcConstructionResource::BaseQuantity() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x1::IfcPhysicalQuantity>(true); } void Ifc4x1::IfcConstructionResource::setBaseQuantity(::Ifc4x1::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -12981,7 +12981,7 @@ Ifc4x1::IfcConstructionResource::IfcConstructionResource(std::string v1_GlobalId // Function implementations for IfcConstructionResourceType boost::optional< aggregate_of< ::Ifc4x1::IfcAppliedValue >::ptr > Ifc4x1::IfcConstructionResourceType::BaseCosts() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x1::IfcAppliedValue >(); } -void Ifc4x1::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x1::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x1::IfcPhysicalQuantity* Ifc4x1::IfcConstructionResourceType::BaseQuantity() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x1::IfcPhysicalQuantity>(true); } void Ifc4x1::IfcConstructionResourceType::setBaseQuantity(::Ifc4x1::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -12993,13 +12993,13 @@ Ifc4x1::IfcConstructionResourceType::IfcConstructionResourceType(std::string v1_ // Function implementations for IfcContext boost::optional< std::string > Ifc4x1::IfcContext::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcContext::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcContext::Phase() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcRepresentationContext >::ptr > Ifc4x1::IfcContext::RepresentationContexts() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x1::IfcRepresentationContext >(); } -void Ifc4x1::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x1::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x1::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x1::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x1::IfcUnitAssignment* Ifc4x1::IfcContext::UnitsInContext() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x1::IfcUnitAssignment>(true); } void Ifc4x1::IfcContext::setUnitsInContext(::Ifc4x1::IfcUnitAssignment* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -13024,7 +13024,7 @@ Ifc4x1::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4x1::IfcDimensiona // Function implementations for IfcControl boost::optional< std::string > Ifc4x1::IfcControl::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x1::IfcRelAssignsToControl::list::ptr Ifc4x1::IfcControl::Controls() const { return data_->getInverse(IFC4X1_IfcRelAssignsToControl_type, 6)->as(); } @@ -13035,7 +13035,7 @@ Ifc4x1::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistor // Function implementations for IfcController boost::optional< ::Ifc4x1::IfcControllerTypeEnum::Value > Ifc4x1::IfcController::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcControllerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcController::setPredefinedType(boost::optional< ::Ifc4x1::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcControllerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcController::setPredefinedType(boost::optional< ::Ifc4x1::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcControllerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcController::declaration() const { return *IFC4X1_IfcController_type; } @@ -13078,7 +13078,7 @@ Ifc4x1::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(::Ifc // Function implementations for IfcCooledBeam boost::optional< ::Ifc4x1::IfcCooledBeamTypeEnum::Value > Ifc4x1::IfcCooledBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x1::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCooledBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x1::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCooledBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCooledBeam::declaration() const { return *IFC4X1_IfcCooledBeam_type; } @@ -13098,7 +13098,7 @@ Ifc4x1::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4x1:: // Function implementations for IfcCoolingTower boost::optional< ::Ifc4x1::IfcCoolingTowerTypeEnum::Value > Ifc4x1::IfcCoolingTower::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x1::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCoolingTowerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x1::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCoolingTowerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCoolingTower::declaration() const { return *IFC4X1_IfcCoolingTower_type; } @@ -13132,11 +13132,11 @@ Ifc4x1::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4x1::IfcCoordinateRe std::string Ifc4x1::IfcCoordinateReferenceSystem::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x1::IfcCoordinateReferenceSystem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcCoordinateReferenceSystem::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x1::IfcCoordinateReferenceSystem::VerticalDatum() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x1::IfcCoordinateOperation::list::ptr Ifc4x1::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return data_->getInverse(IFC4X1_IfcCoordinateOperation_type, 0)->as(); } @@ -13147,11 +13147,11 @@ Ifc4x1::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(std::string v // Function implementations for IfcCostItem boost::optional< ::Ifc4x1::IfcCostItemTypeEnum::Value > Ifc4x1::IfcCostItem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCostItemTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x1::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x1::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCostItemTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x1::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x1::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCostItemTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcCostValue >::ptr > Ifc4x1::IfcCostItem::CostValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x1::IfcCostValue >(); } -void Ifc4x1::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x1::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x1::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x1::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcPhysicalQuantity >::ptr > Ifc4x1::IfcCostItem::CostQuantities() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x1::IfcPhysicalQuantity >(); } -void Ifc4x1::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x1::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x1::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x1::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCostItem::declaration() const { return *IFC4X1_IfcCostItem_type; } @@ -13161,13 +13161,13 @@ Ifc4x1::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHist // Function implementations for IfcCostSchedule boost::optional< ::Ifc4x1::IfcCostScheduleTypeEnum::Value > Ifc4x1::IfcCostSchedule::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCostScheduleTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x1::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x1::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCostScheduleTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x1::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x1::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCostScheduleTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcCostSchedule::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcCostSchedule::SubmittedOn() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x1::IfcCostSchedule::UpdateDate() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcCostSchedule::declaration() const { return *IFC4X1_IfcCostSchedule_type; } @@ -13185,7 +13185,7 @@ Ifc4x1::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, boost // Function implementations for IfcCovering boost::optional< ::Ifc4x1::IfcCoveringTypeEnum::Value > Ifc4x1::IfcCovering::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x1::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCoveringTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x1::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCoveringTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x1::IfcRelCoversSpaces::list::ptr Ifc4x1::IfcCovering::CoversSpaces() const { return data_->getInverse(IFC4X1_IfcRelCoversSpaces_type, 5)->as(); } ::Ifc4x1::IfcRelCoversBldgElements::list::ptr Ifc4x1::IfcCovering::CoversElements() const { return data_->getInverse(IFC4X1_IfcRelCoversBldgElements_type, 5)->as(); } @@ -13207,7 +13207,7 @@ Ifc4x1::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4x1::IfcO // Function implementations for IfcCrewResource boost::optional< ::Ifc4x1::IfcCrewResourceTypeEnum::Value > Ifc4x1::IfcCrewResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCrewResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCrewResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcCrewResource::declaration() const { return *IFC4X1_IfcCrewResource_type; } @@ -13253,7 +13253,7 @@ void Ifc4x1::IfcCurrencyRelationship::setRelatedMonetaryUnit(::Ifc4x1::IfcMoneta double Ifc4x1::IfcCurrencyRelationship::ExchangeRate() const { double v = *data_->getArgument(4); return v; } void Ifc4x1::IfcCurrencyRelationship::setExchangeRate(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcCurrencyRelationship::RateDateTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x1::IfcLibraryInformation* Ifc4x1::IfcCurrencyRelationship::RateSource() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcLibraryInformation>(true); } void Ifc4x1::IfcCurrencyRelationship::setRateSource(::Ifc4x1::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -13265,7 +13265,7 @@ Ifc4x1::IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< std::s // Function implementations for IfcCurtainWall boost::optional< ::Ifc4x1::IfcCurtainWallTypeEnum::Value > Ifc4x1::IfcCurtainWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x1::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCurtainWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x1::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCurtainWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcCurtainWall::declaration() const { return *IFC4X1_IfcCurtainWall_type; } @@ -13341,7 +13341,7 @@ void Ifc4x1::IfcCurveStyle::setCurveWidth(::Ifc4x1::IfcSizeSelect* v) { {IfcWrit ::Ifc4x1::IfcColour* Ifc4x1::IfcCurveStyle::CurveColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcColour>(true); } void Ifc4x1::IfcCurveStyle::setCurveColour(::Ifc4x1::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x1::IfcCurveStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcCurveStyle::declaration() const { return *IFC4X1_IfcCurveStyle_type; } @@ -13351,7 +13351,7 @@ Ifc4x1::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, ::I // Function implementations for IfcCurveStyleFont boost::optional< std::string > Ifc4x1::IfcCurveStyleFont::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc4x1::IfcCurveStyleFontPattern >::ptr Ifc4x1::IfcCurveStyleFont::PatternList() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x1::IfcCurveStyleFontPattern >(); } void Ifc4x1::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc4x1::IfcCurveStyleFontPattern >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -13363,7 +13363,7 @@ Ifc4x1::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > v1_N // Function implementations for IfcCurveStyleFontAndScaling boost::optional< std::string > Ifc4x1::IfcCurveStyleFontAndScaling::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x1::IfcCurveStyleFontSelect* Ifc4x1::IfcCurveStyleFontAndScaling::CurveFont() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x1::IfcCurveStyleFontSelect>(true); } void Ifc4x1::IfcCurveStyleFontAndScaling::setCurveFont(::Ifc4x1::IfcCurveStyleFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } double Ifc4x1::IfcCurveStyleFontAndScaling::CurveFontScaling() const { double v = *data_->getArgument(2); return v; } @@ -13399,7 +13399,7 @@ Ifc4x1::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4x1::IfcAxis2Placement // Function implementations for IfcDamper boost::optional< ::Ifc4x1::IfcDamperTypeEnum::Value > Ifc4x1::IfcDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x1::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x1::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcDamper::declaration() const { return *IFC4X1_IfcDamper_type; } @@ -13423,7 +13423,7 @@ void Ifc4x1::IfcDerivedProfileDef::setParentProfile(::Ifc4x1::IfcProfileDef* v) ::Ifc4x1::IfcCartesianTransformationOperator2D* Ifc4x1::IfcDerivedProfileDef::Operator() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcCartesianTransformationOperator2D>(true); } void Ifc4x1::IfcDerivedProfileDef::setOperator(::Ifc4x1::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcDerivedProfileDef::Label() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcDerivedProfileDef::declaration() const { return *IFC4X1_IfcDerivedProfileDef_type; } @@ -13437,7 +13437,7 @@ void Ifc4x1::IfcDerivedUnit::setElements(aggregate_of< ::Ifc4x1::IfcDerivedUnitE ::Ifc4x1::IfcDerivedUnitEnum::Value Ifc4x1::IfcDerivedUnit::UnitType() const { return ::Ifc4x1::IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); } void Ifc4x1::IfcDerivedUnit::setUnitType(::Ifc4x1::IfcDerivedUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcDerivedUnitEnum::ToString(v)));data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcDerivedUnit::UserDefinedType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcDerivedUnit::declaration() const { return *IFC4X1_IfcDerivedUnit_type; } @@ -13491,7 +13491,7 @@ Ifc4x1::IfcDirection::IfcDirection(std::vector< double > /*[2:3]*/ v1_DirectionR // Function implementations for IfcDiscreteAccessory boost::optional< ::Ifc4x1::IfcDiscreteAccessoryTypeEnum::Value > Ifc4x1::IfcDiscreteAccessory::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x1::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDiscreteAccessoryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x1::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDiscreteAccessoryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcDiscreteAccessory::declaration() const { return *IFC4X1_IfcDiscreteAccessory_type; } @@ -13513,13 +13513,13 @@ Ifc4x1::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_Global double Ifc4x1::IfcDistanceExpression::DistanceAlong() const { double v = *data_->getArgument(0); return v; } void Ifc4x1::IfcDistanceExpression::setDistanceAlong(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x1::IfcDistanceExpression::OffsetLateral() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcDistanceExpression::OffsetVertical() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcDistanceExpression::OffsetLongitudinal() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x1::IfcDistanceExpression::AlongHorizontal() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcDistanceExpression::setAlongHorizontal(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcDistanceExpression::setAlongHorizontal(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcDistanceExpression::declaration() const { return *IFC4X1_IfcDistanceExpression_type; } @@ -13529,7 +13529,7 @@ Ifc4x1::IfcDistanceExpression::IfcDistanceExpression(double v1_DistanceAlong, bo // Function implementations for IfcDistributionChamberElement boost::optional< ::Ifc4x1::IfcDistributionChamberElementTypeEnum::Value > Ifc4x1::IfcDistributionChamberElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDistributionChamberElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDistributionChamberElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcDistributionChamberElement::declaration() const { return *IFC4X1_IfcDistributionChamberElement_type; } @@ -13608,11 +13608,11 @@ Ifc4x1::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std::stri // Function implementations for IfcDistributionPort boost::optional< ::Ifc4x1::IfcFlowDirectionEnum::Value > Ifc4x1::IfcDistributionPort::FlowDirection() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x1::IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); } -void Ifc4x1::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x1::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFlowDirectionEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x1::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x1::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFlowDirectionEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x1::IfcDistributionPortTypeEnum::Value > Ifc4x1::IfcDistributionPort::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDistributionPortTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x1::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDistributionPortTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x1::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDistributionPortTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x1::IfcDistributionSystemEnum::Value > Ifc4x1::IfcDistributionPort::SystemType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDistributionSystemEnum::FromString(*data_->getArgument(9)); } -void Ifc4x1::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x1::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x1::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x1::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcDistributionPort::declaration() const { return *IFC4X1_IfcDistributionPort_type; } @@ -13622,9 +13622,9 @@ Ifc4x1::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcDistributionSystem boost::optional< std::string > Ifc4x1::IfcDistributionSystem::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< ::Ifc4x1::IfcDistributionSystemEnum::Value > Ifc4x1::IfcDistributionSystem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDistributionSystemEnum::FromString(*data_->getArgument(6)); } -void Ifc4x1::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x1::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x1::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x1::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x1::IfcDistributionSystem::declaration() const { return *IFC4X1_IfcDistributionSystem_type; } @@ -13638,35 +13638,35 @@ void Ifc4x1::IfcDocumentInformation::setIdentification(std::string v) { {IfcWrit std::string Ifc4x1::IfcDocumentInformation::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x1::IfcDocumentInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::Location() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::Purpose() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::IntendedUse() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::Scope() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::Revision() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x1::IfcActorSelect* Ifc4x1::IfcDocumentInformation::DocumentOwner() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x1::IfcActorSelect>(true); } void Ifc4x1::IfcDocumentInformation::setDocumentOwner(::Ifc4x1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x1::IfcDocumentInformation::Editors() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::CreationTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::LastRevisionTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::ElectronicFormat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::ValidFrom() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x1::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x1::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformation::ValidUntil() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x1::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x1::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< ::Ifc4x1::IfcDocumentConfidentialityEnum::Value > Ifc4x1::IfcDocumentInformation::Confidentiality() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); } -void Ifc4x1::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x1::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDocumentConfidentialityEnum::ToString(*v)));data_->setArgument(15,attr);} } +void Ifc4x1::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x1::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDocumentConfidentialityEnum::ToString(*v)));}data_->setArgument(15,attr);} } boost::optional< ::Ifc4x1::IfcDocumentStatusEnum::Value > Ifc4x1::IfcDocumentInformation::Status() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); } -void Ifc4x1::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x1::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDocumentStatusEnum::ToString(*v)));data_->setArgument(16,attr);} } +void Ifc4x1::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x1::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDocumentStatusEnum::ToString(*v)));}data_->setArgument(16,attr);} } ::Ifc4x1::IfcRelAssociatesDocument::list::ptr Ifc4x1::IfcDocumentInformation::DocumentInfoForObjects() const { return data_->getInverse(IFC4X1_IfcRelAssociatesDocument_type, 5)->as(); } ::Ifc4x1::IfcDocumentReference::list::ptr Ifc4x1::IfcDocumentInformation::HasDocumentReferences() const { return data_->getInverse(IFC4X1_IfcDocumentReference_type, 4)->as(); } @@ -13684,7 +13684,7 @@ void Ifc4x1::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc4x1::I aggregate_of< ::Ifc4x1::IfcDocumentInformation >::ptr Ifc4x1::IfcDocumentInformationRelationship::RelatedDocuments() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x1::IfcDocumentInformation >(); } void Ifc4x1::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc4x1::IfcDocumentInformation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcDocumentInformationRelationship::RelationshipType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcDocumentInformationRelationship::declaration() const { return *IFC4X1_IfcDocumentInformationRelationship_type; } @@ -13694,7 +13694,7 @@ Ifc4x1::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(b // Function implementations for IfcDocumentReference boost::optional< std::string > Ifc4x1::IfcDocumentReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x1::IfcDocumentInformation* Ifc4x1::IfcDocumentReference::ReferencedDocument() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x1::IfcDocumentInformation>(true); } void Ifc4x1::IfcDocumentReference::setReferencedDocument(::Ifc4x1::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -13707,15 +13707,15 @@ Ifc4x1::IfcDocumentReference::IfcDocumentReference(boost::optional< std::string // Function implementations for IfcDoor boost::optional< double > Ifc4x1::IfcDoor::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x1::IfcDoor::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x1::IfcDoorTypeEnum::Value > Ifc4x1::IfcDoor::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDoorTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x1::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDoorTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x1::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDoorTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x1::IfcDoorTypeOperationEnum::Value > Ifc4x1::IfcDoor::OperationType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(11)); } -void Ifc4x1::IfcDoor::setOperationType(boost::optional< ::Ifc4x1::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDoorTypeOperationEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x1::IfcDoor::setOperationType(boost::optional< ::Ifc4x1::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDoorTypeOperationEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x1::IfcDoor::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x1::IfcDoor::declaration() const { return *IFC4X1_IfcDoor_type; } @@ -13725,31 +13725,31 @@ Ifc4x1::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* v2_ // Function implementations for IfcDoorLiningProperties boost::optional< double > Ifc4x1::IfcDoorLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::ThresholdDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::ThresholdThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::TransomThickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::TransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::LiningOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::ThresholdOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::CasingThickness() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::CasingDepth() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x1::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } ::Ifc4x1::IfcShapeAspect* Ifc4x1::IfcDoorLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc4x1::IfcShapeAspect>(true); } void Ifc4x1::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc4x1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x1::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x1::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x1::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x1::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x1::IfcDoorLiningProperties::declaration() const { return *IFC4X1_IfcDoorLiningProperties_type; } @@ -13759,11 +13759,11 @@ Ifc4x1::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_GlobalId // Function implementations for IfcDoorPanelProperties boost::optional< double > Ifc4x1::IfcDoorPanelProperties::PanelDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x1::IfcDoorPanelOperationEnum::Value Ifc4x1::IfcDoorPanelProperties::PanelOperation() const { return ::Ifc4x1::IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); } void Ifc4x1::IfcDoorPanelProperties::setPanelOperation(::Ifc4x1::IfcDoorPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcDoorPanelOperationEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcDoorPanelProperties::PanelWidth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x1::IfcDoorPanelPositionEnum::Value Ifc4x1::IfcDoorPanelProperties::PanelPosition() const { return ::Ifc4x1::IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); } void Ifc4x1::IfcDoorPanelProperties::setPanelPosition(::Ifc4x1::IfcDoorPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcDoorPanelPositionEnum::ToString(v)));data_->setArgument(7,attr);} } ::Ifc4x1::IfcShapeAspect* Ifc4x1::IfcDoorPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x1::IfcShapeAspect>(true); } @@ -13805,9 +13805,9 @@ void Ifc4x1::IfcDoorType::setPredefinedType(::Ifc4x1::IfcDoorTypeEnum::Value v) ::Ifc4x1::IfcDoorTypeOperationEnum::Value Ifc4x1::IfcDoorType::OperationType() const { return ::Ifc4x1::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(10)); } void Ifc4x1::IfcDoorType::setOperationType(::Ifc4x1::IfcDoorTypeOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcDoorTypeOperationEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x1::IfcDoorType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x1::IfcDoorType::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x1::IfcDoorType::declaration() const { return *IFC4X1_IfcDoorType_type; } @@ -13833,7 +13833,7 @@ Ifc4x1::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(std:: // Function implementations for IfcDuctFitting boost::optional< ::Ifc4x1::IfcDuctFittingTypeEnum::Value > Ifc4x1::IfcDuctFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x1::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDuctFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x1::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDuctFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcDuctFitting::declaration() const { return *IFC4X1_IfcDuctFitting_type; } @@ -13853,7 +13853,7 @@ Ifc4x1::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::Ifc4x1 // Function implementations for IfcDuctSegment boost::optional< ::Ifc4x1::IfcDuctSegmentTypeEnum::Value > Ifc4x1::IfcDuctSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x1::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDuctSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x1::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDuctSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcDuctSegment::declaration() const { return *IFC4X1_IfcDuctSegment_type; } @@ -13873,7 +13873,7 @@ Ifc4x1::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::Ifc4x1 // Function implementations for IfcDuctSilencer boost::optional< ::Ifc4x1::IfcDuctSilencerTypeEnum::Value > Ifc4x1::IfcDuctSilencer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x1::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDuctSilencerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x1::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDuctSilencerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcDuctSilencer::declaration() const { return *IFC4X1_IfcDuctSilencer_type; } @@ -13927,7 +13927,7 @@ Ifc4x1::IfcEdgeLoop::IfcEdgeLoop(aggregate_of< ::Ifc4x1::IfcOrientedEdge >::ptr // Function implementations for IfcElectricAppliance boost::optional< ::Ifc4x1::IfcElectricApplianceTypeEnum::Value > Ifc4x1::IfcElectricAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcElectricAppliance::declaration() const { return *IFC4X1_IfcElectricAppliance_type; } @@ -13947,7 +13947,7 @@ Ifc4x1::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_Global // Function implementations for IfcElectricDistributionBoard boost::optional< ::Ifc4x1::IfcElectricDistributionBoardTypeEnum::Value > Ifc4x1::IfcElectricDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcElectricDistributionBoard::declaration() const { return *IFC4X1_IfcElectricDistributionBoard_type; } @@ -13967,7 +13967,7 @@ Ifc4x1::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(std:: // Function implementations for IfcElectricFlowStorageDevice boost::optional< ::Ifc4x1::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4x1::IfcElectricFlowStorageDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcElectricFlowStorageDevice::declaration() const { return *IFC4X1_IfcElectricFlowStorageDevice_type; } @@ -13987,7 +13987,7 @@ Ifc4x1::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(std:: // Function implementations for IfcElectricGenerator boost::optional< ::Ifc4x1::IfcElectricGeneratorTypeEnum::Value > Ifc4x1::IfcElectricGenerator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricGeneratorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricGeneratorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcElectricGenerator::declaration() const { return *IFC4X1_IfcElectricGenerator_type; } @@ -14007,7 +14007,7 @@ Ifc4x1::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_Global // Function implementations for IfcElectricMotor boost::optional< ::Ifc4x1::IfcElectricMotorTypeEnum::Value > Ifc4x1::IfcElectricMotor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricMotorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricMotorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcElectricMotor::declaration() const { return *IFC4X1_IfcElectricMotor_type; } @@ -14027,7 +14027,7 @@ Ifc4x1::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, ::If // Function implementations for IfcElectricTimeControl boost::optional< ::Ifc4x1::IfcElectricTimeControlTypeEnum::Value > Ifc4x1::IfcElectricTimeControl::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricTimeControlTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x1::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElectricTimeControlTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcElectricTimeControl::declaration() const { return *IFC4X1_IfcElectricTimeControl_type; } @@ -14047,7 +14047,7 @@ Ifc4x1::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v1_Gl // Function implementations for IfcElement boost::optional< std::string > Ifc4x1::IfcElement::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x1::IfcRelFillsElement::list::ptr Ifc4x1::IfcElement::FillsVoids() const { return data_->getInverse(IFC4X1_IfcRelFillsElement_type, 5)->as(); } ::Ifc4x1::IfcRelConnectsElements::list::ptr Ifc4x1::IfcElement::ConnectedTo() const { return data_->getInverse(IFC4X1_IfcRelConnectsElements_type, 5)->as(); } @@ -14069,9 +14069,9 @@ Ifc4x1::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistor // Function implementations for IfcElementAssembly boost::optional< ::Ifc4x1::IfcAssemblyPlaceEnum::Value > Ifc4x1::IfcElementAssembly::AssemblyPlace() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x1::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAssemblyPlaceEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x1::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcAssemblyPlaceEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x1::IfcElementAssemblyTypeEnum::Value > Ifc4x1::IfcElementAssembly::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x1::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x1::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x1::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElementAssemblyTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x1::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x1::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElementAssemblyTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcElementAssembly::declaration() const { return *IFC4X1_IfcElementAssembly_type; } @@ -14107,7 +14107,7 @@ Ifc4x1::IfcElementComponentType::IfcElementComponentType(std::string v1_GlobalId // Function implementations for IfcElementQuantity boost::optional< std::string > Ifc4x1::IfcElementQuantity::MethodOfMeasurement() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x1::IfcPhysicalQuantity >::ptr Ifc4x1::IfcElementQuantity::Quantities() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x1::IfcPhysicalQuantity >(); } void Ifc4x1::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc4x1::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -14119,7 +14119,7 @@ Ifc4x1::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::Ifc4x1 // Function implementations for IfcElementType boost::optional< std::string > Ifc4x1::IfcElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcElementType::declaration() const { return *IFC4X1_IfcElementType_type; } @@ -14179,7 +14179,7 @@ Ifc4x1::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::string // Function implementations for IfcEngine boost::optional< ::Ifc4x1::IfcEngineTypeEnum::Value > Ifc4x1::IfcEngine::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcEngineTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x1::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcEngineTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x1::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcEngineTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcEngine::declaration() const { return *IFC4X1_IfcEngine_type; } @@ -14199,7 +14199,7 @@ Ifc4x1::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4x1::IfcOwner // Function implementations for IfcEvaporativeCooler boost::optional< ::Ifc4x1::IfcEvaporativeCoolerTypeEnum::Value > Ifc4x1::IfcEvaporativeCooler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x1::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcEvaporativeCoolerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x1::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcEvaporativeCoolerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcEvaporativeCooler::declaration() const { return *IFC4X1_IfcEvaporativeCooler_type; } @@ -14219,7 +14219,7 @@ Ifc4x1::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_Global // Function implementations for IfcEvaporator boost::optional< ::Ifc4x1::IfcEvaporatorTypeEnum::Value > Ifc4x1::IfcEvaporator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x1::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcEvaporatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x1::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcEvaporatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcEvaporator::declaration() const { return *IFC4X1_IfcEvaporator_type; } @@ -14239,11 +14239,11 @@ Ifc4x1::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4x1:: // Function implementations for IfcEvent boost::optional< ::Ifc4x1::IfcEventTypeEnum::Value > Ifc4x1::IfcEvent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x1::IfcEventTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x1::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x1::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcEventTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x1::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x1::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcEventTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x1::IfcEventTriggerTypeEnum::Value > Ifc4x1::IfcEvent::EventTriggerType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x1::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcEventTriggerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x1::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcEventTriggerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x1::IfcEvent::UserDefinedEventTriggerType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x1::IfcEventTime* Ifc4x1::IfcEvent::EventOccurenceTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x1::IfcEventTime>(true); } void Ifc4x1::IfcEvent::setEventOccurenceTime(::Ifc4x1::IfcEventTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -14255,13 +14255,13 @@ Ifc4x1::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* v // Function implementations for IfcEventTime boost::optional< std::string > Ifc4x1::IfcEventTime::ActualDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcEventTime::EarlyDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcEventTime::LateDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcEventTime::ScheduleDate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x1::IfcEventTime::declaration() const { return *IFC4X1_IfcEventTime_type; } @@ -14275,7 +14275,7 @@ void Ifc4x1::IfcEventType::setPredefinedType(::Ifc4x1::IfcEventTypeEnum::Value v ::Ifc4x1::IfcEventTriggerTypeEnum::Value Ifc4x1::IfcEventType::EventTriggerType() const { return ::Ifc4x1::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(10)); } void Ifc4x1::IfcEventType::setEventTriggerType(::Ifc4x1::IfcEventTriggerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcEventTriggerTypeEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x1::IfcEventType::UserDefinedEventTriggerType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x1::IfcEventType::declaration() const { return *IFC4X1_IfcEventType_type; } @@ -14285,9 +14285,9 @@ Ifc4x1::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHi // Function implementations for IfcExtendedProperties boost::optional< std::string > Ifc4x1::IfcExtendedProperties::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcExtendedProperties::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x1::IfcProperty >::ptr Ifc4x1::IfcExtendedProperties::Properties() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x1::IfcProperty >(); } void Ifc4x1::IfcExtendedProperties::setProperties(aggregate_of< ::Ifc4x1::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -14307,11 +14307,11 @@ Ifc4x1::IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseEntit // Function implementations for IfcExternalReference boost::optional< std::string > Ifc4x1::IfcExternalReference::Location() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcExternalReference::Identification() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcExternalReference::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcExternalReferenceRelationship::list::ptr Ifc4x1::IfcExternalReference::ExternalReferenceForResources() const { return data_->getInverse(IFC4X1_IfcExternalReferenceRelationship_type, 2)->as(); } @@ -14334,7 +14334,7 @@ Ifc4x1::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(boost // Function implementations for IfcExternalSpatialElement boost::optional< ::Ifc4x1::IfcExternalSpatialElementTypeEnum::Value > Ifc4x1::IfcExternalSpatialElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcExternalSpatialElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcExternalSpatialElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcExternalSpatialElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x1::IfcRelSpaceBoundary::list::ptr Ifc4x1::IfcExternalSpatialElement::BoundedBy() const { return data_->getInverse(IFC4X1_IfcRelSpaceBoundary_type, 4)->as(); } @@ -14470,17 +14470,17 @@ Ifc4x1::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(::Ifc4x1::IfcClosedShel // Function implementations for IfcFailureConnectionCondition boost::optional< double > Ifc4x1::IfcFailureConnectionCondition::TensionFailureX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcFailureConnectionCondition::TensionFailureY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcFailureConnectionCondition::TensionFailureZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcFailureConnectionCondition::CompressionFailureX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x1::IfcFailureConnectionCondition::CompressionFailureY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcFailureConnectionCondition::CompressionFailureZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x1::IfcFailureConnectionCondition::declaration() const { return *IFC4X1_IfcFailureConnectionCondition_type; } @@ -14490,7 +14490,7 @@ Ifc4x1::IfcFailureConnectionCondition::IfcFailureConnectionCondition(boost::opti // Function implementations for IfcFan boost::optional< ::Ifc4x1::IfcFanTypeEnum::Value > Ifc4x1::IfcFan::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcFanTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcFan::setPredefinedType(boost::optional< ::Ifc4x1::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFanTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcFan::setPredefinedType(boost::optional< ::Ifc4x1::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFanTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcFan::declaration() const { return *IFC4X1_IfcFan_type; } @@ -14510,7 +14510,7 @@ Ifc4x1::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistor // Function implementations for IfcFastener boost::optional< ::Ifc4x1::IfcFastenerTypeEnum::Value > Ifc4x1::IfcFastener::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcFastenerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x1::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFastenerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x1::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFastenerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcFastener::declaration() const { return *IFC4X1_IfcFastener_type; } @@ -14558,7 +14558,7 @@ Ifc4x1::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::string v aggregate_of_instance::ptr Ifc4x1::IfcFillAreaStyle::FillStyles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4x1::IfcFillAreaStyle::setFillStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x1::IfcFillAreaStyle::ModelorDraughting() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcFillAreaStyle::setModelorDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcFillAreaStyle::setModelorDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcFillAreaStyle::declaration() const { return *IFC4X1_IfcFillAreaStyle_type; } @@ -14600,7 +14600,7 @@ Ifc4x1::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(aggregate_of< ::Ifc4x1::Ifc // Function implementations for IfcFilter boost::optional< ::Ifc4x1::IfcFilterTypeEnum::Value > Ifc4x1::IfcFilter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcFilterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x1::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFilterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x1::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFilterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcFilter::declaration() const { return *IFC4X1_IfcFilter_type; } @@ -14620,7 +14620,7 @@ Ifc4x1::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4x1::IfcOwner // Function implementations for IfcFireSuppressionTerminal boost::optional< ::Ifc4x1::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4x1::IfcFireSuppressionTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x1::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x1::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcFireSuppressionTerminal::declaration() const { return *IFC4X1_IfcFireSuppressionTerminal_type; } @@ -14642,9 +14642,9 @@ Ifc4x1::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(std::stri ::Ifc4x1::IfcCurve* Ifc4x1::IfcFixedReferenceSweptAreaSolid::Directrix() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x1::IfcCurve>(true); } void Ifc4x1::IfcFixedReferenceSweptAreaSolid::setDirectrix(::Ifc4x1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcFixedReferenceSweptAreaSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcFixedReferenceSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcFixedReferenceSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcFixedReferenceSweptAreaSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcFixedReferenceSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcFixedReferenceSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x1::IfcDirection* Ifc4x1::IfcFixedReferenceSweptAreaSolid::FixedReference() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x1::IfcDirection>(true); } void Ifc4x1::IfcFixedReferenceSweptAreaSolid::setFixedReference(::Ifc4x1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -14688,7 +14688,7 @@ Ifc4x1::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::Ifc4x1 // Function implementations for IfcFlowInstrument boost::optional< ::Ifc4x1::IfcFlowInstrumentTypeEnum::Value > Ifc4x1::IfcFlowInstrument::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x1::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFlowInstrumentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x1::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFlowInstrumentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcFlowInstrument::declaration() const { return *IFC4X1_IfcFlowInstrument_type; } @@ -14708,7 +14708,7 @@ Ifc4x1::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId, :: // Function implementations for IfcFlowMeter boost::optional< ::Ifc4x1::IfcFlowMeterTypeEnum::Value > Ifc4x1::IfcFlowMeter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x1::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFlowMeterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x1::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFlowMeterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcFlowMeter::declaration() const { return *IFC4X1_IfcFlowMeter_type; } @@ -14808,7 +14808,7 @@ Ifc4x1::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v1_Gl // Function implementations for IfcFooting boost::optional< ::Ifc4x1::IfcFootingTypeEnum::Value > Ifc4x1::IfcFooting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcFootingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x1::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFootingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x1::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFootingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcFooting::declaration() const { return *IFC4X1_IfcFooting_type; } @@ -14844,7 +14844,7 @@ Ifc4x1::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_Global // Function implementations for IfcFurniture boost::optional< ::Ifc4x1::IfcFurnitureTypeEnum::Value > Ifc4x1::IfcFurniture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcFurnitureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x1::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x1::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcFurniture::declaration() const { return *IFC4X1_IfcFurniture_type; } @@ -14856,7 +14856,7 @@ Ifc4x1::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHi ::Ifc4x1::IfcAssemblyPlaceEnum::Value Ifc4x1::IfcFurnitureType::AssemblyPlace() const { return ::Ifc4x1::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); } void Ifc4x1::IfcFurnitureType::setAssemblyPlace(::Ifc4x1::IfcAssemblyPlaceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcAssemblyPlaceEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< ::Ifc4x1::IfcFurnitureTypeEnum::Value > Ifc4x1::IfcFurnitureType::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcFurnitureTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x1::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x1::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcFurnitureType::declaration() const { return *IFC4X1_IfcFurnitureType_type; } @@ -14866,7 +14866,7 @@ Ifc4x1::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4x1::If // Function implementations for IfcGeographicElement boost::optional< ::Ifc4x1::IfcGeographicElementTypeEnum::Value > Ifc4x1::IfcGeographicElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcGeographicElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcGeographicElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcGeographicElement::declaration() const { return *IFC4X1_IfcGeographicElement_type; } @@ -14896,7 +14896,7 @@ Ifc4x1::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of_instance::ptr v1 int Ifc4x1::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { int v = *data_->getArgument(2); return v; } void Ifc4x1::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcGeometricRepresentationContext::Precision() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x1::IfcAxis2Placement* Ifc4x1::IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x1::IfcAxis2Placement>(true); } void Ifc4x1::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc4x1::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } ::Ifc4x1::IfcDirection* Ifc4x1::IfcGeometricRepresentationContext::TrueNorth() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x1::IfcDirection>(true); } @@ -14922,11 +14922,11 @@ Ifc4x1::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : IfcRe ::Ifc4x1::IfcGeometricRepresentationContext* Ifc4x1::IfcGeometricRepresentationSubContext::ParentContext() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcGeometricRepresentationContext>(true); } void Ifc4x1::IfcGeometricRepresentationSubContext::setParentContext(::Ifc4x1::IfcGeometricRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcGeometricRepresentationSubContext::TargetScale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x1::IfcGeometricProjectionEnum::Value Ifc4x1::IfcGeometricRepresentationSubContext::TargetView() const { return ::Ifc4x1::IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); } void Ifc4x1::IfcGeometricRepresentationSubContext::setTargetView(::Ifc4x1::IfcGeometricProjectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcGeometricProjectionEnum::ToString(v)));data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x1::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcGeometricRepresentationSubContext::declaration() const { return *IFC4X1_IfcGeometricRepresentationSubContext_type; } @@ -14950,9 +14950,9 @@ void Ifc4x1::IfcGrid::setUAxes(aggregate_of< ::Ifc4x1::IfcGridAxis >::ptr v) { { aggregate_of< ::Ifc4x1::IfcGridAxis >::ptr Ifc4x1::IfcGrid::VAxes() const { aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x1::IfcGridAxis >(); } void Ifc4x1::IfcGrid::setVAxes(aggregate_of< ::Ifc4x1::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcGridAxis >::ptr > Ifc4x1::IfcGrid::WAxes() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x1::IfcGridAxis >(); } -void Ifc4x1::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x1::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x1::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x1::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x1::IfcGridTypeEnum::Value > Ifc4x1::IfcGrid::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcGridTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x1::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcGridTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x1::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcGridTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcGrid::declaration() const { return *IFC4X1_IfcGrid_type; } @@ -14962,7 +14962,7 @@ Ifc4x1::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* v2_ // Function implementations for IfcGridAxis boost::optional< std::string > Ifc4x1::IfcGridAxis::AxisTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x1::IfcCurve* Ifc4x1::IfcGridAxis::AxisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x1::IfcCurve>(true); } void Ifc4x1::IfcGridAxis::setAxisCurve(::Ifc4x1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } bool Ifc4x1::IfcGridAxis::SameSense() const { bool v = *data_->getArgument(2); return v; } @@ -15013,7 +15013,7 @@ Ifc4x1::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4x1::IfcSurface* v1_BaseSurfac // Function implementations for IfcHeatExchanger boost::optional< ::Ifc4x1::IfcHeatExchangerTypeEnum::Value > Ifc4x1::IfcHeatExchanger::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x1::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcHeatExchangerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x1::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcHeatExchangerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcHeatExchanger::declaration() const { return *IFC4X1_IfcHeatExchanger_type; } @@ -15033,7 +15033,7 @@ Ifc4x1::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, ::If // Function implementations for IfcHumidifier boost::optional< ::Ifc4x1::IfcHumidifierTypeEnum::Value > Ifc4x1::IfcHumidifier::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcHumidifierTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x1::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcHumidifierTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x1::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcHumidifierTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcHumidifier::declaration() const { return *IFC4X1_IfcHumidifier_type; } @@ -15061,11 +15061,11 @@ void Ifc4x1::IfcIShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc4x1::IfcIShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x1::IfcIShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcIShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x1::IfcIShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcIShapeProfileDef::declaration() const { return *IFC4X1_IfcIShapeProfileDef_type; } @@ -15087,7 +15087,7 @@ Ifc4x1::IfcImageTexture::IfcImageTexture(bool v1_RepeatS, bool v2_RepeatT, boost ::Ifc4x1::IfcTessellatedFaceSet* Ifc4x1::IfcIndexedColourMap::MappedTo() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x1::IfcTessellatedFaceSet>(true); } void Ifc4x1::IfcIndexedColourMap::setMappedTo(::Ifc4x1::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x1::IfcIndexedColourMap::Opacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x1::IfcColourRgbList* Ifc4x1::IfcIndexedColourMap::Colours() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x1::IfcColourRgbList>(true); } void Ifc4x1::IfcIndexedColourMap::setColours(::Ifc4x1::IfcColourRgbList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::vector< int > /*[1:?]*/ Ifc4x1::IfcIndexedColourMap::ColourIndex() const { std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } @@ -15103,9 +15103,9 @@ Ifc4x1::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4x1::IfcTessellatedFaceSet ::Ifc4x1::IfcCartesianPointList* Ifc4x1::IfcIndexedPolyCurve::Points() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x1::IfcCartesianPointList>(true); } void Ifc4x1::IfcIndexedPolyCurve::setPoints(::Ifc4x1::IfcCartesianPointList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x1::IfcIndexedPolyCurve::Segments() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x1::IfcIndexedPolyCurve::SelfIntersect() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcIndexedPolyCurve::declaration() const { return *IFC4X1_IfcIndexedPolyCurve_type; } @@ -15148,7 +15148,7 @@ Ifc4x1::IfcIndexedTextureMap::IfcIndexedTextureMap(aggregate_of< ::Ifc4x1::IfcSu // Function implementations for IfcIndexedTriangleTextureMap boost::optional< std::vector< std::vector< int > > > Ifc4x1::IfcIndexedTriangleTextureMap::TexCoordIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcIndexedTriangleTextureMap::declaration() const { return *IFC4X1_IfcIndexedTriangleTextureMap_type; } @@ -15158,7 +15158,7 @@ Ifc4x1::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(aggregate_of< // Function implementations for IfcInterceptor boost::optional< ::Ifc4x1::IfcInterceptorTypeEnum::Value > Ifc4x1::IfcInterceptor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcInterceptorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x1::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcInterceptorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x1::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcInterceptorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcInterceptor::declaration() const { return *IFC4X1_IfcInterceptor_type; } @@ -15186,13 +15186,13 @@ Ifc4x1::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4x1::IfcCurve* v1_Curve3 // Function implementations for IfcInventory boost::optional< ::Ifc4x1::IfcInventoryTypeEnum::Value > Ifc4x1::IfcInventory::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x1::IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x1::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x1::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcInventoryTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x1::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x1::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcInventoryTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } ::Ifc4x1::IfcActorSelect* Ifc4x1::IfcInventory::Jurisdiction() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcActorSelect>(true); } void Ifc4x1::IfcInventory::setJurisdiction(::Ifc4x1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcPerson >::ptr > Ifc4x1::IfcInventory::ResponsiblePersons() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x1::IfcPerson >(); } -void Ifc4x1::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x1::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x1::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x1::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcInventory::LastUpdateDate() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x1::IfcCostValue* Ifc4x1::IfcInventory::CurrentValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x1::IfcCostValue>(true); } void Ifc4x1::IfcInventory::setCurrentValue(::Ifc4x1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x1::IfcCostValue* Ifc4x1::IfcInventory::OriginalValue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x1::IfcCostValue>(true); } @@ -15228,7 +15228,7 @@ Ifc4x1::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string v1_ // Function implementations for IfcJunctionBox boost::optional< ::Ifc4x1::IfcJunctionBoxTypeEnum::Value > Ifc4x1::IfcJunctionBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x1::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcJunctionBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x1::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcJunctionBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcJunctionBox::declaration() const { return *IFC4X1_IfcJunctionBox_type; } @@ -15250,15 +15250,15 @@ Ifc4x1::IfcJunctionBoxType::IfcJunctionBoxType(std::string v1_GlobalId, ::Ifc4x1 double Ifc4x1::IfcLShapeProfileDef::Depth() const { double v = *data_->getArgument(3); return v; } void Ifc4x1::IfcLShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcLShapeProfileDef::Width() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } double Ifc4x1::IfcLShapeProfileDef::Thickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x1::IfcLShapeProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcLShapeProfileDef::FilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcLShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcLShapeProfileDef::LegSlope() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcLShapeProfileDef::declaration() const { return *IFC4X1_IfcLShapeProfileDef_type; } @@ -15268,7 +15268,7 @@ Ifc4x1::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4x1::IfcProfileTypeEnum::V // Function implementations for IfcLaborResource boost::optional< ::Ifc4x1::IfcLaborResourceTypeEnum::Value > Ifc4x1::IfcLaborResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcLaborResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcLaborResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcLaborResource::declaration() const { return *IFC4X1_IfcLaborResource_type; } @@ -15300,7 +15300,7 @@ Ifc4x1::IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost::op // Function implementations for IfcLamp boost::optional< ::Ifc4x1::IfcLampTypeEnum::Value > Ifc4x1::IfcLamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcLampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x1::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcLampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x1::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcLampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcLamp::declaration() const { return *IFC4X1_IfcLamp_type; } @@ -15322,15 +15322,15 @@ Ifc4x1::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHist std::string Ifc4x1::IfcLibraryInformation::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x1::IfcLibraryInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcLibraryInformation::Version() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x1::IfcActorSelect* Ifc4x1::IfcLibraryInformation::Publisher() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x1::IfcActorSelect>(true); } void Ifc4x1::IfcLibraryInformation::setPublisher(::Ifc4x1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x1::IfcLibraryInformation::VersionDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcLibraryInformation::Location() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcLibraryInformation::Description() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x1::IfcRelAssociatesLibrary::list::ptr Ifc4x1::IfcLibraryInformation::LibraryInfoForObjects() const { return data_->getInverse(IFC4X1_IfcRelAssociatesLibrary_type, 5)->as(); } ::Ifc4x1::IfcLibraryReference::list::ptr Ifc4x1::IfcLibraryInformation::HasLibraryReferences() const { return data_->getInverse(IFC4X1_IfcLibraryReference_type, 5)->as(); } @@ -15342,9 +15342,9 @@ Ifc4x1::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, boost: // Function implementations for IfcLibraryReference boost::optional< std::string > Ifc4x1::IfcLibraryReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcLibraryReference::Language() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x1::IfcLibraryInformation* Ifc4x1::IfcLibraryReference::ReferencedLibrary() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x1::IfcLibraryInformation>(true); } void Ifc4x1::IfcLibraryReference::setReferencedLibrary(::Ifc4x1::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -15371,7 +15371,7 @@ Ifc4x1::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPlaneAn // Function implementations for IfcLightFixture boost::optional< ::Ifc4x1::IfcLightFixtureTypeEnum::Value > Ifc4x1::IfcLightFixture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x1::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcLightFixtureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x1::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcLightFixtureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcLightFixture::declaration() const { return *IFC4X1_IfcLightFixture_type; } @@ -15403,13 +15403,13 @@ Ifc4x1::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4x1::I // Function implementations for IfcLightSource boost::optional< std::string > Ifc4x1::IfcLightSource::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x1::IfcColourRgb* Ifc4x1::IfcLightSource::LightColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x1::IfcColourRgb>(true); } void Ifc4x1::IfcLightSource::setLightColour(::Ifc4x1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcLightSource::AmbientIntensity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcLightSource::Intensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcLightSource::declaration() const { return *IFC4X1_IfcLightSource_type; } @@ -15477,7 +15477,7 @@ Ifc4x1::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< std: ::Ifc4x1::IfcDirection* Ifc4x1::IfcLightSourceSpot::Orientation() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x1::IfcDirection>(true); } void Ifc4x1::IfcLightSourceSpot::setOrientation(::Ifc4x1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcLightSourceSpot::ConcentrationExponent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } double Ifc4x1::IfcLightSourceSpot::SpreadAngle() const { double v = *data_->getArgument(11); return v; } void Ifc4x1::IfcLightSourceSpot::setSpreadAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } double Ifc4x1::IfcLightSourceSpot::BeamWidthAngle() const { double v = *data_->getArgument(12); return v; } @@ -15573,11 +15573,11 @@ void Ifc4x1::IfcMapConversion::setNorthings(double v) { {IfcWrite::IfcWriteArgum double Ifc4x1::IfcMapConversion::OrthogonalHeight() const { double v = *data_->getArgument(4); return v; } void Ifc4x1::IfcMapConversion::setOrthogonalHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc4x1::IfcMapConversion::XAxisAbscissa() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcMapConversion::XAxisOrdinate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcMapConversion::Scale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x1::IfcMapConversion::declaration() const { return *IFC4X1_IfcMapConversion_type; } @@ -15601,9 +15601,9 @@ Ifc4x1::IfcMappedItem::IfcMappedItem(::Ifc4x1::IfcRepresentationMap* v1_MappingS std::string Ifc4x1::IfcMaterial::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x1::IfcMaterial::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterial::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterial::Category() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcMaterialDefinitionRepresentation::list::ptr Ifc4x1::IfcMaterial::HasRepresentation() const { return data_->getInverse(IFC4X1_IfcMaterialDefinitionRepresentation_type, 3)->as(); } ::Ifc4x1::IfcMaterialRelationship::list::ptr Ifc4x1::IfcMaterial::IsRelatedWith() const { return data_->getInverse(IFC4X1_IfcMaterialRelationship_type, 3)->as(); } @@ -15628,15 +15628,15 @@ Ifc4x1::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelation // Function implementations for IfcMaterialConstituent boost::optional< std::string > Ifc4x1::IfcMaterialConstituent::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialConstituent::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x1::IfcMaterial* Ifc4x1::IfcMaterialConstituent::Material() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x1::IfcMaterial>(true); } void Ifc4x1::IfcMaterialConstituent::setMaterial(::Ifc4x1::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcMaterialConstituent::Fraction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialConstituent::Category() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x1::IfcMaterialConstituentSet::list::ptr Ifc4x1::IfcMaterialConstituent::ToMaterialConstituentSet() const { return data_->getInverse(IFC4X1_IfcMaterialConstituentSet_type, 2)->as(); } @@ -15647,11 +15647,11 @@ Ifc4x1::IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std::str // Function implementations for IfcMaterialConstituentSet boost::optional< std::string > Ifc4x1::IfcMaterialConstituentSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialConstituentSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcMaterialConstituent >::ptr > Ifc4x1::IfcMaterialConstituentSet::MaterialConstituents() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x1::IfcMaterialConstituent >(); } -void Ifc4x1::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x1::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x1::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x1::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcMaterialConstituentSet::declaration() const { return *IFC4X1_IfcMaterialConstituentSet_type; } @@ -15686,15 +15686,15 @@ void Ifc4x1::IfcMaterialLayer::setMaterial(::Ifc4x1::IfcMaterial* v) { {IfcWrite double Ifc4x1::IfcMaterialLayer::LayerThickness() const { double v = *data_->getArgument(1); return v; } void Ifc4x1::IfcMaterialLayer::setLayerThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< boost::logic::tribool > Ifc4x1::IfcMaterialLayer::IsVentilated() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } boost::logic::tribool v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialLayer::Name() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialLayer::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialLayer::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x1::IfcMaterialLayer::Priority() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x1::IfcMaterialLayerSet::list::ptr Ifc4x1::IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(IFC4X1_IfcMaterialLayerSet_type, 0)->as(); } @@ -15707,9 +15707,9 @@ Ifc4x1::IfcMaterialLayer::IfcMaterialLayer(::Ifc4x1::IfcMaterial* v1_Material, d aggregate_of< ::Ifc4x1::IfcMaterialLayer >::ptr Ifc4x1::IfcMaterialLayerSet::MaterialLayers() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x1::IfcMaterialLayer >(); } void Ifc4x1::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc4x1::IfcMaterialLayer >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialLayerSet::LayerSetName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialLayerSet::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcMaterialLayerSet::declaration() const { return *IFC4X1_IfcMaterialLayerSet_type; } @@ -15727,7 +15727,7 @@ void Ifc4x1::IfcMaterialLayerSetUsage::setDirectionSense(::Ifc4x1::IfcDirectionS double Ifc4x1::IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const { double v = *data_->getArgument(3); return v; } void Ifc4x1::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcMaterialLayerSetUsage::declaration() const { return *IFC4X1_IfcMaterialLayerSetUsage_type; } @@ -15759,17 +15759,17 @@ Ifc4x1::IfcMaterialList::IfcMaterialList(aggregate_of< ::Ifc4x1::IfcMaterial >:: // Function implementations for IfcMaterialProfile boost::optional< std::string > Ifc4x1::IfcMaterialProfile::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialProfile::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x1::IfcMaterial* Ifc4x1::IfcMaterialProfile::Material() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x1::IfcMaterial>(true); } void Ifc4x1::IfcMaterialProfile::setMaterial(::Ifc4x1::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x1::IfcProfileDef* Ifc4x1::IfcMaterialProfile::Profile() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcProfileDef>(true); } void Ifc4x1::IfcMaterialProfile::setProfile(::Ifc4x1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x1::IfcMaterialProfile::Priority() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialProfile::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x1::IfcMaterialProfileSet::list::ptr Ifc4x1::IfcMaterialProfile::ToMaterialProfileSet() const { return data_->getInverse(IFC4X1_IfcMaterialProfileSet_type, 2)->as(); } @@ -15780,9 +15780,9 @@ Ifc4x1::IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string > v1 // Function implementations for IfcMaterialProfileSet boost::optional< std::string > Ifc4x1::IfcMaterialProfileSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialProfileSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x1::IfcMaterialProfile >::ptr Ifc4x1::IfcMaterialProfileSet::MaterialProfiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x1::IfcMaterialProfile >(); } void Ifc4x1::IfcMaterialProfileSet::setMaterialProfiles(aggregate_of< ::Ifc4x1::IfcMaterialProfile >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } ::Ifc4x1::IfcCompositeProfileDef* Ifc4x1::IfcMaterialProfileSet::CompositeProfile() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcCompositeProfileDef>(true); } @@ -15798,9 +15798,9 @@ Ifc4x1::IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::strin ::Ifc4x1::IfcMaterialProfileSet* Ifc4x1::IfcMaterialProfileSetUsage::ForProfileSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x1::IfcMaterialProfileSet>(true); } void Ifc4x1::IfcMaterialProfileSetUsage::setForProfileSet(::Ifc4x1::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< int > Ifc4x1::IfcMaterialProfileSetUsage::CardinalPoint() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcMaterialProfileSetUsage::declaration() const { return *IFC4X1_IfcMaterialProfileSetUsage_type; } @@ -15812,7 +15812,7 @@ Ifc4x1::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4x1::IfcMate ::Ifc4x1::IfcMaterialProfileSet* Ifc4x1::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcMaterialProfileSet>(true); } void Ifc4x1::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(::Ifc4x1::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x1::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcMaterialProfileSetUsageTapering::declaration() const { return *IFC4X1_IfcMaterialProfileSetUsageTapering_type; } @@ -15846,7 +15846,7 @@ void Ifc4x1::IfcMaterialRelationship::setRelatingMaterial(::Ifc4x1::IfcMaterial* aggregate_of< ::Ifc4x1::IfcMaterial >::ptr Ifc4x1::IfcMaterialRelationship::RelatedMaterials() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x1::IfcMaterial >(); } void Ifc4x1::IfcMaterialRelationship::setRelatedMaterials(aggregate_of< ::Ifc4x1::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcMaterialRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcMaterialRelationship::declaration() const { return *IFC4X1_IfcMaterialRelationship_type; } @@ -15877,11 +15877,11 @@ Ifc4x1::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4x1::IfcValue* v1_ValueCompo // Function implementations for IfcMechanicalFastener boost::optional< double > Ifc4x1::IfcMechanicalFastener::NominalDiameter() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x1::IfcMechanicalFastener::NominalLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x1::IfcMechanicalFastenerTypeEnum::Value > Ifc4x1::IfcMechanicalFastener::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x1::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcMechanicalFastenerTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x1::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcMechanicalFastenerTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcMechanicalFastener::declaration() const { return *IFC4X1_IfcMechanicalFastener_type; } @@ -15893,9 +15893,9 @@ Ifc4x1::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId, :: ::Ifc4x1::IfcMechanicalFastenerTypeEnum::Value Ifc4x1::IfcMechanicalFastenerType::PredefinedType() const { return ::Ifc4x1::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x1::IfcMechanicalFastenerType::setPredefinedType(::Ifc4x1::IfcMechanicalFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcMechanicalFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcMechanicalFastenerType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcMechanicalFastenerType::NominalLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x1::IfcMechanicalFastenerType::declaration() const { return *IFC4X1_IfcMechanicalFastenerType_type; } @@ -15905,7 +15905,7 @@ Ifc4x1::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_Glob // Function implementations for IfcMedicalDevice boost::optional< ::Ifc4x1::IfcMedicalDeviceTypeEnum::Value > Ifc4x1::IfcMedicalDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcMedicalDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcMedicalDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcMedicalDevice::declaration() const { return *IFC4X1_IfcMedicalDevice_type; } @@ -15925,7 +15925,7 @@ Ifc4x1::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, ::If // Function implementations for IfcMember boost::optional< ::Ifc4x1::IfcMemberTypeEnum::Value > Ifc4x1::IfcMember::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcMemberTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcMember::setPredefinedType(boost::optional< ::Ifc4x1::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcMemberTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcMember::setPredefinedType(boost::optional< ::Ifc4x1::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcMemberTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcMember::declaration() const { return *IFC4X1_IfcMember_type; } @@ -15955,7 +15955,7 @@ Ifc4x1::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4x1::IfcOwner ::Ifc4x1::IfcBenchmarkEnum::Value Ifc4x1::IfcMetric::Benchmark() const { return ::Ifc4x1::IfcBenchmarkEnum::FromString(*data_->getArgument(7)); } void Ifc4x1::IfcMetric::setBenchmark(::Ifc4x1::IfcBenchmarkEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcBenchmarkEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcMetric::ValueSource() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x1::IfcMetricValueSelect* Ifc4x1::IfcMetric::DataValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x1::IfcMetricValueSelect>(true); } void Ifc4x1::IfcMetric::setDataValue(::Ifc4x1::IfcMetricValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x1::IfcReference* Ifc4x1::IfcMetric::ReferencePath() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x1::IfcReference>(true); } @@ -15987,7 +15987,7 @@ Ifc4x1::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil::Ifc // Function implementations for IfcMotorConnection boost::optional< ::Ifc4x1::IfcMotorConnectionTypeEnum::Value > Ifc4x1::IfcMotorConnection::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x1::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcMotorConnectionTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x1::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcMotorConnectionTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcMotorConnection::declaration() const { return *IFC4X1_IfcMotorConnection_type; } @@ -16019,7 +16019,7 @@ Ifc4x1::IfcNamedUnit::IfcNamedUnit(::Ifc4x1::IfcDimensionalExponents* v1_Dimensi // Function implementations for IfcObject boost::optional< std::string > Ifc4x1::IfcObject::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x1::IfcRelDefinesByObject::list::ptr Ifc4x1::IfcObject::IsDeclaredBy() const { return data_->getInverse(IFC4X1_IfcRelDefinesByObject_type, 4)->as(); } ::Ifc4x1::IfcRelDefinesByObject::list::ptr Ifc4x1::IfcObject::Declares() const { return data_->getInverse(IFC4X1_IfcRelDefinesByObject_type, 5)->as(); } @@ -16058,13 +16058,13 @@ Ifc4x1::IfcObjectPlacement::IfcObjectPlacement() : IfcUtil::IfcBaseEntity() {dat // Function implementations for IfcObjective boost::optional< aggregate_of< ::Ifc4x1::IfcConstraint >::ptr > Ifc4x1::IfcObjective::BenchmarkValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x1::IfcConstraint >(); } -void Ifc4x1::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x1::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x1::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x1::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x1::IfcLogicalOperatorEnum::Value > Ifc4x1::IfcObjective::LogicalAggregator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcLogicalOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x1::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcLogicalOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x1::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcLogicalOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x1::IfcObjectiveEnum::Value Ifc4x1::IfcObjective::ObjectiveQualifier() const { return ::Ifc4x1::IfcObjectiveEnum::FromString(*data_->getArgument(9)); } void Ifc4x1::IfcObjective::setObjectiveQualifier(::Ifc4x1::IfcObjectiveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcObjectiveEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x1::IfcObjective::UserDefinedQualifier() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcObjective::declaration() const { return *IFC4X1_IfcObjective_type; } @@ -16074,7 +16074,7 @@ Ifc4x1::IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std::st // Function implementations for IfcOccupant boost::optional< ::Ifc4x1::IfcOccupantTypeEnum::Value > Ifc4x1::IfcOccupant::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x1::IfcOccupantTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x1::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x1::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcOccupantTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x1::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x1::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcOccupantTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x1::IfcOccupant::declaration() const { return *IFC4X1_IfcOccupant_type; } @@ -16122,7 +16122,7 @@ Ifc4x1::IfcOffsetCurve3D::IfcOffsetCurve3D(::Ifc4x1::IfcCurve* v1_BasisCurve, do aggregate_of< ::Ifc4x1::IfcDistanceExpression >::ptr Ifc4x1::IfcOffsetCurveByDistances::OffsetValues() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x1::IfcDistanceExpression >(); } void Ifc4x1::IfcOffsetCurveByDistances::setOffsetValues(aggregate_of< ::Ifc4x1::IfcDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcOffsetCurveByDistances::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcOffsetCurveByDistances::declaration() const { return *IFC4X1_IfcOffsetCurveByDistances_type; } @@ -16140,7 +16140,7 @@ Ifc4x1::IfcOpenShell::IfcOpenShell(aggregate_of< ::Ifc4x1::IfcFace >::ptr v1_Cfs // Function implementations for IfcOpeningElement boost::optional< ::Ifc4x1::IfcOpeningElementTypeEnum::Value > Ifc4x1::IfcOpeningElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcOpeningElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcOpeningElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcOpeningElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x1::IfcRelFillsElement::list::ptr Ifc4x1::IfcOpeningElement::HasFillings() const { return data_->getInverse(IFC4X1_IfcRelFillsElement_type, 4)->as(); } @@ -16159,15 +16159,15 @@ Ifc4x1::IfcOpeningStandardCase::IfcOpeningStandardCase(std::string v1_GlobalId, // Function implementations for IfcOrganization boost::optional< std::string > Ifc4x1::IfcOrganization::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } std::string Ifc4x1::IfcOrganization::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x1::IfcOrganization::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcOrganization::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcActorRole >::ptr > Ifc4x1::IfcOrganization::Roles() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x1::IfcActorRole >(); } -void Ifc4x1::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(3,attr);} } +void Ifc4x1::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcAddress >::ptr > Ifc4x1::IfcOrganization::Addresses() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x1::IfcAddress >(); } -void Ifc4x1::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x1::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(4,attr);} } +void Ifc4x1::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x1::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(4,attr);} } ::Ifc4x1::IfcOrganizationRelationship::list::ptr Ifc4x1::IfcOrganization::IsRelatedBy() const { return data_->getInverse(IFC4X1_IfcOrganizationRelationship_type, 3)->as(); } ::Ifc4x1::IfcOrganizationRelationship::list::ptr Ifc4x1::IfcOrganization::Relates() const { return data_->getInverse(IFC4X1_IfcOrganizationRelationship_type, 2)->as(); } @@ -16224,7 +16224,7 @@ Ifc4x1::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(aggregate_of< ::Ifc4x1::Ifc // Function implementations for IfcOutlet boost::optional< ::Ifc4x1::IfcOutletTypeEnum::Value > Ifc4x1::IfcOutlet::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcOutletTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x1::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcOutletTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x1::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcOutletTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcOutlet::declaration() const { return *IFC4X1_IfcOutlet_type; } @@ -16248,11 +16248,11 @@ void Ifc4x1::IfcOwnerHistory::setOwningUser(::Ifc4x1::IfcPersonAndOrganization* ::Ifc4x1::IfcApplication* Ifc4x1::IfcOwnerHistory::OwningApplication() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x1::IfcApplication>(true); } void Ifc4x1::IfcOwnerHistory::setOwningApplication(::Ifc4x1::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x1::IfcStateEnum::Value > Ifc4x1::IfcOwnerHistory::State() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x1::IfcStateEnum::FromString(*data_->getArgument(2)); } -void Ifc4x1::IfcOwnerHistory::setState(boost::optional< ::Ifc4x1::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcStateEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x1::IfcOwnerHistory::setState(boost::optional< ::Ifc4x1::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcStateEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< ::Ifc4x1::IfcChangeActionEnum::Value > Ifc4x1::IfcOwnerHistory::ChangeAction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x1::IfcChangeActionEnum::FromString(*data_->getArgument(3)); } -void Ifc4x1::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x1::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcChangeActionEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x1::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x1::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcChangeActionEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x1::IfcOwnerHistory::LastModifiedDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x1::IfcPersonAndOrganization* Ifc4x1::IfcOwnerHistory::LastModifyingUser() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x1::IfcPersonAndOrganization>(true); } void Ifc4x1::IfcOwnerHistory::setLastModifyingUser(::Ifc4x1::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x1::IfcApplication* Ifc4x1::IfcOwnerHistory::LastModifyingApplication() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcApplication>(true); } @@ -16302,7 +16302,7 @@ Ifc4x1::IfcPcurve::IfcPcurve(::Ifc4x1::IfcSurface* v1_BasisSurface, ::Ifc4x1::If std::string Ifc4x1::IfcPerformanceHistory::LifeCyclePhase() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x1::IfcPerformanceHistory::setLifeCyclePhase(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x1::IfcPerformanceHistoryTypeEnum::Value > Ifc4x1::IfcPerformanceHistory::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x1::IfcPerformanceHistoryTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x1::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x1::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPerformanceHistoryTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x1::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x1::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPerformanceHistoryTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x1::IfcPerformanceHistory::declaration() const { return *IFC4X1_IfcPerformanceHistory_type; } @@ -16316,9 +16316,9 @@ void Ifc4x1::IfcPermeableCoveringProperties::setOperationType(::Ifc4x1::IfcPerme ::Ifc4x1::IfcWindowPanelPositionEnum::Value Ifc4x1::IfcPermeableCoveringProperties::PanelPosition() const { return ::Ifc4x1::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x1::IfcPermeableCoveringProperties::setPanelPosition(::Ifc4x1::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcPermeableCoveringProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcPermeableCoveringProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x1::IfcShapeAspect* Ifc4x1::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x1::IfcShapeAspect>(true); } void Ifc4x1::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc4x1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -16330,11 +16330,11 @@ Ifc4x1::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std::stri // Function implementations for IfcPermit boost::optional< ::Ifc4x1::IfcPermitTypeEnum::Value > Ifc4x1::IfcPermit::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x1::IfcPermitTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x1::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x1::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPermitTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x1::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x1::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPermitTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcPermit::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcPermit::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcPermit::declaration() const { return *IFC4X1_IfcPermit_type; } @@ -16344,21 +16344,21 @@ Ifc4x1::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* // Function implementations for IfcPerson boost::optional< std::string > Ifc4x1::IfcPerson::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcPerson::FamilyName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcPerson::GivenName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcPerson::MiddleNames() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcPerson::PrefixTitles() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcPerson::SuffixTitles() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcActorRole >::ptr > Ifc4x1::IfcPerson::Roles() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x1::IfcActorRole >(); } -void Ifc4x1::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x1::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcAddress >::ptr > Ifc4x1::IfcPerson::Addresses() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x1::IfcAddress >(); } -void Ifc4x1::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x1::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x1::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x1::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x1::IfcPersonAndOrganization::list::ptr Ifc4x1::IfcPerson::EngagedIn() const { return data_->getInverse(IFC4X1_IfcPersonAndOrganization_type, 0)->as(); } @@ -16373,7 +16373,7 @@ void Ifc4x1::IfcPersonAndOrganization::setThePerson(::Ifc4x1::IfcPerson* v) { {I ::Ifc4x1::IfcOrganization* Ifc4x1::IfcPersonAndOrganization::TheOrganization() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x1::IfcOrganization>(true); } void Ifc4x1::IfcPersonAndOrganization::setTheOrganization(::Ifc4x1::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcActorRole >::ptr > Ifc4x1::IfcPersonAndOrganization::Roles() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x1::IfcActorRole >(); } -void Ifc4x1::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x1::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcPersonAndOrganization::declaration() const { return *IFC4X1_IfcPersonAndOrganization_type; } @@ -16387,9 +16387,9 @@ void Ifc4x1::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::Ifc4x1 std::string Ifc4x1::IfcPhysicalComplexQuantity::Discrimination() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x1::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcPhysicalComplexQuantity::Quality() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcPhysicalComplexQuantity::Usage() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x1::IfcPhysicalComplexQuantity::declaration() const { return *IFC4X1_IfcPhysicalComplexQuantity_type; } @@ -16401,7 +16401,7 @@ Ifc4x1::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v1_Na std::string Ifc4x1::IfcPhysicalQuantity::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x1::IfcPhysicalQuantity::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcPhysicalQuantity::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x1::IfcExternalReferenceRelationship::list::ptr Ifc4x1::IfcPhysicalQuantity::HasExternalReferences() const { return data_->getInverse(IFC4X1_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x1::IfcPhysicalComplexQuantity::list::ptr Ifc4x1::IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(IFC4X1_IfcPhysicalComplexQuantity_type, 2)->as(); } @@ -16423,9 +16423,9 @@ Ifc4x1::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_Name // Function implementations for IfcPile boost::optional< ::Ifc4x1::IfcPileTypeEnum::Value > Ifc4x1::IfcPile::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcPileTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcPile::setPredefinedType(boost::optional< ::Ifc4x1::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPileTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcPile::setPredefinedType(boost::optional< ::Ifc4x1::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPileTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x1::IfcPileConstructionEnum::Value > Ifc4x1::IfcPile::ConstructionType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x1::IfcPileConstructionEnum::FromString(*data_->getArgument(9)); } -void Ifc4x1::IfcPile::setConstructionType(boost::optional< ::Ifc4x1::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPileConstructionEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x1::IfcPile::setConstructionType(boost::optional< ::Ifc4x1::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPileConstructionEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcPile::declaration() const { return *IFC4X1_IfcPile_type; } @@ -16445,7 +16445,7 @@ Ifc4x1::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHist // Function implementations for IfcPipeFitting boost::optional< ::Ifc4x1::IfcPipeFittingTypeEnum::Value > Ifc4x1::IfcPipeFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x1::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPipeFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x1::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPipeFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcPipeFitting::declaration() const { return *IFC4X1_IfcPipeFitting_type; } @@ -16465,7 +16465,7 @@ Ifc4x1::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::Ifc4x1 // Function implementations for IfcPipeSegment boost::optional< ::Ifc4x1::IfcPipeSegmentTypeEnum::Value > Ifc4x1::IfcPipeSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x1::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPipeSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x1::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPipeSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcPipeSegment::declaration() const { return *IFC4X1_IfcPipeSegment_type; } @@ -16541,7 +16541,7 @@ Ifc4x1::IfcPlane::IfcPlane(::Ifc4x1::IfcAxis2Placement3D* v1_Position) : IfcElem // Function implementations for IfcPlate boost::optional< ::Ifc4x1::IfcPlateTypeEnum::Value > Ifc4x1::IfcPlate::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcPlateTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x1::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPlateTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x1::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPlateTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcPlate::declaration() const { return *IFC4X1_IfcPlate_type; } @@ -16625,11 +16625,11 @@ Ifc4x1::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4x1::Ifc // Function implementations for IfcPolygonalFaceSet boost::optional< bool > Ifc4x1::IfcPolygonalFaceSet::Closed() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x1::IfcIndexedPolygonalFace >::ptr Ifc4x1::IfcPolygonalFaceSet::Faces() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x1::IfcIndexedPolygonalFace >(); } void Ifc4x1::IfcPolygonalFaceSet::setFaces(aggregate_of< ::Ifc4x1::IfcIndexedPolygonalFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x1::IfcPolygonalFaceSet::PnIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcPolygonalFaceSet::declaration() const { return *IFC4X1_IfcPolygonalFaceSet_type; } @@ -16669,19 +16669,19 @@ Ifc4x1::IfcPositioningElement::IfcPositioningElement(std::string v1_GlobalId, :: // Function implementations for IfcPostalAddress boost::optional< std::string > Ifc4x1::IfcPostalAddress::InternalLocation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcPostalAddress::AddressLines() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcPostalAddress::PostalBox() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcPostalAddress::Town() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcPostalAddress::Region() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcPostalAddress::PostalCode() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x1::IfcPostalAddress::Country() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcPostalAddress::declaration() const { return *IFC4X1_IfcPostalAddress_type; } @@ -16751,11 +16751,11 @@ Ifc4x1::IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity() {d std::string Ifc4x1::IfcPresentationLayerAssignment::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x1::IfcPresentationLayerAssignment::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcPresentationLayerAssignment::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of_instance::ptr Ifc4x1::IfcPresentationLayerAssignment::AssignedItems() const { aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } void Ifc4x1::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x1::IfcPresentationLayerAssignment::Identifier() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcPresentationLayerAssignment::declaration() const { return *IFC4X1_IfcPresentationLayerAssignment_type; } @@ -16781,7 +16781,7 @@ Ifc4x1::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::string // Function implementations for IfcPresentationStyle boost::optional< std::string > Ifc4x1::IfcPresentationStyle::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x1::IfcPresentationStyle::declaration() const { return *IFC4X1_IfcPresentationStyle_type; } @@ -16801,7 +16801,7 @@ Ifc4x1::IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(aggregate // Function implementations for IfcProcedure boost::optional< ::Ifc4x1::IfcProcedureTypeEnum::Value > Ifc4x1::IfcProcedure::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x1::IfcProcedureTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x1::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x1::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProcedureTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x1::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x1::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProcedureTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x1::IfcProcedure::declaration() const { return *IFC4X1_IfcProcedure_type; } @@ -16821,9 +16821,9 @@ Ifc4x1::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4x1::If // Function implementations for IfcProcess boost::optional< std::string > Ifc4x1::IfcProcess::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcProcess::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x1::IfcRelSequence::list::ptr Ifc4x1::IfcProcess::IsPredecessorTo() const { return data_->getInverse(IFC4X1_IfcRelSequence_type, 4)->as(); } ::Ifc4x1::IfcRelSequence::list::ptr Ifc4x1::IfcProcess::IsSuccessorFrom() const { return data_->getInverse(IFC4X1_IfcRelSequence_type, 5)->as(); } @@ -16859,9 +16859,9 @@ Ifc4x1::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional< st // Function implementations for IfcProductRepresentation boost::optional< std::string > Ifc4x1::IfcProductRepresentation::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcProductRepresentation::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x1::IfcRepresentation >::ptr Ifc4x1::IfcProductRepresentation::Representations() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x1::IfcRepresentation >(); } void Ifc4x1::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc4x1::IfcRepresentation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -16875,7 +16875,7 @@ Ifc4x1::IfcProductRepresentation::IfcProductRepresentation(boost::optional< std: ::Ifc4x1::IfcProfileTypeEnum::Value Ifc4x1::IfcProfileDef::ProfileType() const { return ::Ifc4x1::IfcProfileTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x1::IfcProfileDef::setProfileType(::Ifc4x1::IfcProfileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcProfileTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcProfileDef::ProfileName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x1::IfcExternalReferenceRelationship::list::ptr Ifc4x1::IfcProfileDef::HasExternalReference() const { return data_->getInverse(IFC4X1_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x1::IfcProfileProperties::list::ptr Ifc4x1::IfcProfileDef::HasProperties() const { return data_->getInverse(IFC4X1_IfcProfileProperties_type, 3)->as(); } @@ -16913,11 +16913,11 @@ Ifc4x1::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4x1:: // Function implementations for IfcProjectOrder boost::optional< ::Ifc4x1::IfcProjectOrderTypeEnum::Value > Ifc4x1::IfcProjectOrder::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x1::IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x1::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x1::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProjectOrderTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x1::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x1::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProjectOrderTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcProjectOrder::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcProjectOrder::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcProjectOrder::declaration() const { return *IFC4X1_IfcProjectOrder_type; } @@ -16927,9 +16927,9 @@ Ifc4x1::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4x1::IfcO // Function implementations for IfcProjectedCRS boost::optional< std::string > Ifc4x1::IfcProjectedCRS::MapProjection() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcProjectedCRS::MapZone() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x1::IfcNamedUnit* Ifc4x1::IfcProjectedCRS::MapUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcNamedUnit>(true); } void Ifc4x1::IfcProjectedCRS::setMapUnit(::Ifc4x1::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -16941,7 +16941,7 @@ Ifc4x1::IfcProjectedCRS::IfcProjectedCRS(std::string v1_Name, boost::optional< s // Function implementations for IfcProjectionElement boost::optional< ::Ifc4x1::IfcProjectionElementTypeEnum::Value > Ifc4x1::IfcProjectionElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcProjectionElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProjectionElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProjectionElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcProjectionElement::declaration() const { return *IFC4X1_IfcProjectionElement_type; } @@ -16953,7 +16953,7 @@ Ifc4x1::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, ::If std::string Ifc4x1::IfcProperty::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x1::IfcProperty::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcProperty::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x1::IfcPropertySet::list::ptr Ifc4x1::IfcProperty::PartOfPset() const { return data_->getInverse(IFC4X1_IfcPropertySet_type, 4)->as(); } ::Ifc4x1::IfcPropertyDependencyRelationship::list::ptr Ifc4x1::IfcProperty::PropertyForDependance() const { return data_->getInverse(IFC4X1_IfcPropertyDependencyRelationship_type, 2)->as(); } @@ -17008,7 +17008,7 @@ void Ifc4x1::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc4x1::I ::Ifc4x1::IfcProperty* Ifc4x1::IfcPropertyDependencyRelationship::DependantProperty() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcProperty>(true); } void Ifc4x1::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc4x1::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcPropertyDependencyRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcPropertyDependencyRelationship::declaration() const { return *IFC4X1_IfcPropertyDependencyRelationship_type; } @@ -17018,7 +17018,7 @@ Ifc4x1::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(boo // Function implementations for IfcPropertyEnumeratedValue boost::optional< aggregate_of_instance::ptr > Ifc4x1::IfcPropertyEnumeratedValue::EnumerationValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcPropertyEnumeration* Ifc4x1::IfcPropertyEnumeratedValue::EnumerationReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcPropertyEnumeration>(true); } void Ifc4x1::IfcPropertyEnumeratedValue::setEnumerationReference(::Ifc4x1::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -17044,7 +17044,7 @@ Ifc4x1::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, aggr // Function implementations for IfcPropertyListValue boost::optional< aggregate_of_instance::ptr > Ifc4x1::IfcPropertyListValue::ListValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcUnit* Ifc4x1::IfcPropertyListValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcUnit>(true); } void Ifc4x1::IfcPropertyListValue::setUnit(::Ifc4x1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -17056,7 +17056,7 @@ Ifc4x1::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boost::o // Function implementations for IfcPropertyReferenceValue boost::optional< std::string > Ifc4x1::IfcPropertyReferenceValue::UsageName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcObjectReferenceSelect* Ifc4x1::IfcPropertyReferenceValue::PropertyReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcObjectReferenceSelect>(true); } void Ifc4x1::IfcPropertyReferenceValue::setPropertyReference(::Ifc4x1::IfcObjectReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -17089,9 +17089,9 @@ Ifc4x1::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_Global // Function implementations for IfcPropertySetTemplate boost::optional< ::Ifc4x1::IfcPropertySetTemplateTypeEnum::Value > Ifc4x1::IfcPropertySetTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x1::IfcPropertySetTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x1::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x1::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPropertySetTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x1::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x1::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPropertySetTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcPropertySetTemplate::ApplicableEntity() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } aggregate_of< ::Ifc4x1::IfcPropertyTemplate >::ptr Ifc4x1::IfcPropertySetTemplate::HasPropertyTemplates() const { aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x1::IfcPropertyTemplate >(); } void Ifc4x1::IfcPropertySetTemplate::setHasPropertyTemplates(aggregate_of< ::Ifc4x1::IfcPropertyTemplate >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(6,attr);} } @@ -17116,17 +17116,17 @@ Ifc4x1::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, boos // Function implementations for IfcPropertyTableValue boost::optional< aggregate_of_instance::ptr > Ifc4x1::IfcPropertyTableValue::DefiningValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x1::IfcPropertyTableValue::DefinedValues() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcPropertyTableValue::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x1::IfcUnit* Ifc4x1::IfcPropertyTableValue::DefiningUnit() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x1::IfcUnit>(true); } void Ifc4x1::IfcPropertyTableValue::setDefiningUnit(::Ifc4x1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x1::IfcUnit* Ifc4x1::IfcPropertyTableValue::DefinedUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcUnit>(true); } void Ifc4x1::IfcPropertyTableValue::setDefinedUnit(::Ifc4x1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x1::IfcCurveInterpolationEnum::Value > Ifc4x1::IfcPropertyTableValue::CurveInterpolation() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x1::IfcCurveInterpolationEnum::FromString(*data_->getArgument(7)); } -void Ifc4x1::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x1::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCurveInterpolationEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x1::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x1::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcCurveInterpolationEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x1::IfcPropertyTableValue::declaration() const { return *IFC4X1_IfcPropertyTableValue_type; } @@ -17154,7 +17154,7 @@ Ifc4x1::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::string // Function implementations for IfcProtectiveDevice boost::optional< ::Ifc4x1::IfcProtectiveDeviceTypeEnum::Value > Ifc4x1::IfcProtectiveDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProtectiveDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProtectiveDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcProtectiveDevice::declaration() const { return *IFC4X1_IfcProtectiveDevice_type; } @@ -17164,7 +17164,7 @@ Ifc4x1::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcProtectiveDeviceTrippingUnit boost::optional< ::Ifc4x1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4x1::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcProtectiveDeviceTrippingUnit::declaration() const { return *IFC4X1_IfcProtectiveDeviceTrippingUnit_type; } @@ -17196,7 +17196,7 @@ Ifc4x1::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_GlobalId ::Ifc4x1::IfcObjectTypeEnum::Value Ifc4x1::IfcProxy::ProxyType() const { return ::Ifc4x1::IfcObjectTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x1::IfcProxy::setProxyType(::Ifc4x1::IfcObjectTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcObjectTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcProxy::Tag() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcProxy::declaration() const { return *IFC4X1_IfcProxy_type; } @@ -17206,7 +17206,7 @@ Ifc4x1::IfcProxy::IfcProxy(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* v // Function implementations for IfcPump boost::optional< ::Ifc4x1::IfcPumpTypeEnum::Value > Ifc4x1::IfcPump::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcPumpTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcPump::setPredefinedType(boost::optional< ::Ifc4x1::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPumpTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcPump::setPredefinedType(boost::optional< ::Ifc4x1::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcPumpTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcPump::declaration() const { return *IFC4X1_IfcPump_type; } @@ -17228,7 +17228,7 @@ Ifc4x1::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHist double Ifc4x1::IfcQuantityArea::AreaValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x1::IfcQuantityArea::setAreaValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcQuantityArea::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcQuantityArea::declaration() const { return *IFC4X1_IfcQuantityArea_type; } @@ -17240,7 +17240,7 @@ Ifc4x1::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optional< s double Ifc4x1::IfcQuantityCount::CountValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x1::IfcQuantityCount::setCountValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcQuantityCount::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcQuantityCount::declaration() const { return *IFC4X1_IfcQuantityCount_type; } @@ -17252,7 +17252,7 @@ Ifc4x1::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optional< double Ifc4x1::IfcQuantityLength::LengthValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x1::IfcQuantityLength::setLengthValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcQuantityLength::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcQuantityLength::declaration() const { return *IFC4X1_IfcQuantityLength_type; } @@ -17272,7 +17272,7 @@ Ifc4x1::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4x1::IfcOwn double Ifc4x1::IfcQuantityTime::TimeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x1::IfcQuantityTime::setTimeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcQuantityTime::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcQuantityTime::declaration() const { return *IFC4X1_IfcQuantityTime_type; } @@ -17284,7 +17284,7 @@ Ifc4x1::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optional< s double Ifc4x1::IfcQuantityVolume::VolumeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x1::IfcQuantityVolume::setVolumeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcQuantityVolume::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcQuantityVolume::declaration() const { return *IFC4X1_IfcQuantityVolume_type; } @@ -17296,7 +17296,7 @@ Ifc4x1::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::optiona double Ifc4x1::IfcQuantityWeight::WeightValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x1::IfcQuantityWeight::setWeightValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcQuantityWeight::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcQuantityWeight::declaration() const { return *IFC4X1_IfcQuantityWeight_type; } @@ -17306,7 +17306,7 @@ Ifc4x1::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::optiona // Function implementations for IfcRailing boost::optional< ::Ifc4x1::IfcRailingTypeEnum::Value > Ifc4x1::IfcRailing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcRailingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x1::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcRailingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x1::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcRailingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcRailing::declaration() const { return *IFC4X1_IfcRailing_type; } @@ -17326,7 +17326,7 @@ Ifc4x1::IfcRailingType::IfcRailingType(std::string v1_GlobalId, ::Ifc4x1::IfcOwn // Function implementations for IfcRamp boost::optional< ::Ifc4x1::IfcRampTypeEnum::Value > Ifc4x1::IfcRamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcRampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x1::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcRampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x1::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcRampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcRamp::declaration() const { return *IFC4X1_IfcRamp_type; } @@ -17336,7 +17336,7 @@ Ifc4x1::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* v2_ // Function implementations for IfcRampFlight boost::optional< ::Ifc4x1::IfcRampFlightTypeEnum::Value > Ifc4x1::IfcRampFlight::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcRampFlightTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x1::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcRampFlightTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x1::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcRampFlightTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcRampFlight::declaration() const { return *IFC4X1_IfcRampFlight_type; } @@ -17388,9 +17388,9 @@ Ifc4x1::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(i double Ifc4x1::IfcRectangleHollowProfileDef::WallThickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x1::IfcRectangleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x1::IfcRectangleHollowProfileDef::declaration() const { return *IFC4X1_IfcRectangleHollowProfileDef_type; } @@ -17450,19 +17450,19 @@ Ifc4x1::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4x1::Ifc ::Ifc4x1::IfcRecurrenceTypeEnum::Value Ifc4x1::IfcRecurrencePattern::RecurrenceType() const { return ::Ifc4x1::IfcRecurrenceTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x1::IfcRecurrencePattern::setRecurrenceType(::Ifc4x1::IfcRecurrenceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcRecurrenceTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x1::IfcRecurrencePattern::DayComponent() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x1::IfcRecurrencePattern::WeekdayComponent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x1::IfcRecurrencePattern::MonthComponent() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x1::IfcRecurrencePattern::Position() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< int > Ifc4x1::IfcRecurrencePattern::Interval() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } int v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x1::IfcRecurrencePattern::Occurrences() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcTimePeriod >::ptr > Ifc4x1::IfcRecurrencePattern::TimePeriods() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x1::IfcTimePeriod >(); } -void Ifc4x1::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x1::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x1::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x1::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x1::IfcRecurrencePattern::declaration() const { return *IFC4X1_IfcRecurrencePattern_type; } @@ -17472,13 +17472,13 @@ Ifc4x1::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4x1::IfcRecurrenceTypeEn // Function implementations for IfcReference boost::optional< std::string > Ifc4x1::IfcReference::TypeIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcReference::AttributeIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcReference::InstanceName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x1::IfcReference::ListPositions() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x1::IfcReference* Ifc4x1::IfcReference::InnerReference() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x1::IfcReference>(true); } void Ifc4x1::IfcReference::setInnerReference(::Ifc4x1::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -17490,9 +17490,9 @@ Ifc4x1::IfcReference::IfcReference(boost::optional< std::string > v1_TypeIdentif // Function implementations for IfcReferent boost::optional< ::Ifc4x1::IfcReferentTypeEnum::Value > Ifc4x1::IfcReferent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x1::IfcReferentTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x1::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x1::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReferentTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x1::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x1::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReferentTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcReferent::RestartDistance() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcReferent::declaration() const { return *IFC4X1_IfcReferent_type; } @@ -17518,13 +17518,13 @@ void Ifc4x1::IfcReinforcementBarProperties::setTotalCrossSectionArea(double v) { std::string Ifc4x1::IfcReinforcementBarProperties::SteelGrade() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x1::IfcReinforcementBarProperties::setSteelGrade(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x1::IfcReinforcingBarSurfaceEnum::Value > Ifc4x1::IfcReinforcementBarProperties::BarSurface() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x1::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); } -void Ifc4x1::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x1::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcReinforcementBarProperties::EffectiveDepth() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcReinforcementBarProperties::NominalBarDiameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x1::IfcReinforcementBarProperties::BarCount() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x1::IfcReinforcementBarProperties::declaration() const { return *IFC4X1_IfcReinforcementBarProperties_type; } @@ -17534,7 +17534,7 @@ Ifc4x1::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double v1_T // Function implementations for IfcReinforcementDefinitionProperties boost::optional< std::string > Ifc4x1::IfcReinforcementDefinitionProperties::DefinitionType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x1::IfcSectionReinforcementProperties >::ptr Ifc4x1::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x1::IfcSectionReinforcementProperties >(); } void Ifc4x1::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc4x1::IfcSectionReinforcementProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -17546,15 +17546,15 @@ Ifc4x1::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperti // Function implementations for IfcReinforcingBar boost::optional< double > Ifc4x1::IfcReinforcingBar::NominalDiameter() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingBar::CrossSectionArea() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingBar::BarLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x1::IfcReinforcingBarTypeEnum::Value > Ifc4x1::IfcReinforcingBar::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x1::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x1::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x1::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReinforcingBarTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x1::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x1::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReinforcingBarTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x1::IfcReinforcingBarSurfaceEnum::Value > Ifc4x1::IfcReinforcingBar::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x1::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x1::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x1::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x1::IfcReinforcingBar::declaration() const { return *IFC4X1_IfcReinforcingBar_type; } @@ -17566,17 +17566,17 @@ Ifc4x1::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4x1:: ::Ifc4x1::IfcReinforcingBarTypeEnum::Value Ifc4x1::IfcReinforcingBarType::PredefinedType() const { return ::Ifc4x1::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x1::IfcReinforcingBarType::setPredefinedType(::Ifc4x1::IfcReinforcingBarTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcReinforcingBarTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingBarType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingBarType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingBarType::BarLength() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x1::IfcReinforcingBarSurfaceEnum::Value > Ifc4x1::IfcReinforcingBarType::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x1::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x1::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x1::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x1::IfcReinforcingBarType::BendingShapeCode() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x1::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x1::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x1::IfcReinforcingBarType::BendingParameters() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(15); return v; } -void Ifc4x1::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x1::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x1::IfcReinforcingBarType::declaration() const { return *IFC4X1_IfcReinforcingBarType_type; } @@ -17586,7 +17586,7 @@ Ifc4x1::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId, :: // Function implementations for IfcReinforcingElement boost::optional< std::string > Ifc4x1::IfcReinforcingElement::SteelGrade() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcReinforcingElement::declaration() const { return *IFC4X1_IfcReinforcingElement_type; } @@ -17604,23 +17604,23 @@ Ifc4x1::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_Glob // Function implementations for IfcReinforcingMesh boost::optional< double > Ifc4x1::IfcReinforcingMesh::MeshLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMesh::MeshWidth() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x1::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x1::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x1::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x1::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x1::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x1::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMesh::TransverseBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x1::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x1::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< ::Ifc4x1::IfcReinforcingMeshTypeEnum::Value > Ifc4x1::IfcReinforcingMesh::PredefinedType() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } return ::Ifc4x1::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(17)); } -void Ifc4x1::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x1::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReinforcingMeshTypeEnum::ToString(*v)));data_->setArgument(17,attr);} } +void Ifc4x1::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x1::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcReinforcingMeshTypeEnum::ToString(*v)));}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x1::IfcReinforcingMesh::declaration() const { return *IFC4X1_IfcReinforcingMesh_type; } @@ -17632,25 +17632,25 @@ Ifc4x1::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::Ifc4x1 ::Ifc4x1::IfcReinforcingMeshTypeEnum::Value Ifc4x1::IfcReinforcingMeshType::PredefinedType() const { return ::Ifc4x1::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x1::IfcReinforcingMeshType::setPredefinedType(::Ifc4x1::IfcReinforcingMeshTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcReinforcingMeshTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMeshType::MeshLength() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMeshType::MeshWidth() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x1::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x1::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x1::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x1::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x1::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x1::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x1::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x1::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x1::IfcReinforcingMeshType::TransverseBarSpacing() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x1::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x1::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x1::IfcReinforcingMeshType::BendingShapeCode() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x1::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x1::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x1::IfcReinforcingMeshType::BendingParameters() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(19); return v; } -void Ifc4x1::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x1::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x1::IfcReinforcingMeshType::declaration() const { return *IFC4X1_IfcReinforcingMeshType_type; } @@ -17674,7 +17674,7 @@ Ifc4x1::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4x1::If aggregate_of< ::Ifc4x1::IfcObjectDefinition >::ptr Ifc4x1::IfcRelAssigns::RelatedObjects() const { aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x1::IfcObjectDefinition >(); } void Ifc4x1::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc4x1::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} } boost::optional< ::Ifc4x1::IfcObjectTypeEnum::Value > Ifc4x1::IfcRelAssigns::RelatedObjectsType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x1::IfcObjectTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x1::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x1::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcObjectTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x1::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x1::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcObjectTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x1::IfcRelAssigns::declaration() const { return *IFC4X1_IfcRelAssigns_type; } @@ -17788,7 +17788,7 @@ Ifc4x1::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std::stri // Function implementations for IfcRelAssociatesConstraint boost::optional< std::string > Ifc4x1::IfcRelAssociatesConstraint::Intent() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x1::IfcConstraint* Ifc4x1::IfcRelAssociatesConstraint::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcConstraint>(true); } void Ifc4x1::IfcRelAssociatesConstraint::setRelatingConstraint(::Ifc4x1::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -17914,7 +17914,7 @@ void Ifc4x1::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc4x1::IfcBo ::Ifc4x1::IfcStructuralConnectionCondition* Ifc4x1::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x1::IfcStructuralConnectionCondition>(true); } void Ifc4x1::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc4x1::IfcStructuralConnectionCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcRelConnectsStructuralMember::SupportedLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x1::IfcAxis2Placement3D* Ifc4x1::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x1::IfcAxis2Placement3D>(true); } void Ifc4x1::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc4x1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -17938,7 +17938,7 @@ Ifc4x1::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std::stri aggregate_of< ::Ifc4x1::IfcElement >::ptr Ifc4x1::IfcRelConnectsWithRealizingElements::RealizingElements() const { aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x1::IfcElement >(); } void Ifc4x1::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc4x1::IfcElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcRelConnectsWithRealizingElements::declaration() const { return *IFC4X1_IfcRelConnectsWithRealizingElements_type; } @@ -18090,7 +18090,7 @@ void Ifc4x1::IfcRelInterferesElements::setRelatedElement(::Ifc4x1::IfcElement* v ::Ifc4x1::IfcConnectionGeometry* Ifc4x1::IfcRelInterferesElements::InterferenceGeometry() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcConnectionGeometry>(true); } void Ifc4x1::IfcRelInterferesElements::setInterferenceGeometry(::Ifc4x1::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcRelInterferesElements::InterferenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::logic::tribool Ifc4x1::IfcRelInterferesElements::ImpliedOrder() const { boost::logic::tribool v = *data_->getArgument(8); return v; } void Ifc4x1::IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -18144,9 +18144,9 @@ void Ifc4x1::IfcRelSequence::setRelatedProcess(::Ifc4x1::IfcProcess* v) { {IfcWr ::Ifc4x1::IfcLagTime* Ifc4x1::IfcRelSequence::TimeLag() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcLagTime>(true); } void Ifc4x1::IfcRelSequence::setTimeLag(::Ifc4x1::IfcLagTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x1::IfcSequenceEnum::Value > Ifc4x1::IfcRelSequence::SequenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSequenceEnum::FromString(*data_->getArgument(7)); } -void Ifc4x1::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x1::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSequenceEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x1::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x1::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSequenceEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcRelSequence::UserDefinedSequenceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcRelSequence::declaration() const { return *IFC4X1_IfcRelSequence_type; } @@ -18240,9 +18240,9 @@ Ifc4x1::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveS ::Ifc4x1::IfcRepresentationContext* Ifc4x1::IfcRepresentation::ContextOfItems() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x1::IfcRepresentationContext>(true); } void Ifc4x1::IfcRepresentation::setContextOfItems(::Ifc4x1::IfcRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcRepresentation::RepresentationIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcRepresentation::RepresentationType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } aggregate_of< ::Ifc4x1::IfcRepresentationItem >::ptr Ifc4x1::IfcRepresentation::Items() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x1::IfcRepresentationItem >(); } void Ifc4x1::IfcRepresentation::setItems(aggregate_of< ::Ifc4x1::IfcRepresentationItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } @@ -18257,9 +18257,9 @@ Ifc4x1::IfcRepresentation::IfcRepresentation(::Ifc4x1::IfcRepresentationContext* // Function implementations for IfcRepresentationContext boost::optional< std::string > Ifc4x1::IfcRepresentationContext::ContextIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcRepresentationContext::ContextType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x1::IfcRepresentation::list::ptr Ifc4x1::IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(IFC4X1_IfcRepresentation_type, 0)->as(); } @@ -18294,9 +18294,9 @@ Ifc4x1::IfcRepresentationMap::IfcRepresentationMap(::Ifc4x1::IfcAxis2Placement* // Function implementations for IfcResource boost::optional< std::string > Ifc4x1::IfcResource::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcResource::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x1::IfcRelAssignsToResource::list::ptr Ifc4x1::IfcResource::ResourceOf() const { return data_->getInverse(IFC4X1_IfcRelAssignsToResource_type, 6)->as(); } @@ -18331,9 +18331,9 @@ Ifc4x1::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(boo // Function implementations for IfcResourceLevelRelationship boost::optional< std::string > Ifc4x1::IfcResourceLevelRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcResourceLevelRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x1::IfcResourceLevelRelationship::declaration() const { return *IFC4X1_IfcResourceLevelRelationship_type; } @@ -18343,35 +18343,35 @@ Ifc4x1::IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::option // Function implementations for IfcResourceTime boost::optional< std::string > Ifc4x1::IfcResourceTime::ScheduleWork() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcResourceTime::ScheduleUsage() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcResourceTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcResourceTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcResourceTime::ScheduleContour() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcResourceTime::LevelingDelay() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< bool > Ifc4x1::IfcResourceTime::IsOverAllocated() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x1::IfcResourceTime::StatusTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x1::IfcResourceTime::ActualWork() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x1::IfcResourceTime::ActualUsage() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x1::IfcResourceTime::ActualStart() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x1::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x1::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x1::IfcResourceTime::ActualFinish() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x1::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x1::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x1::IfcResourceTime::RemainingWork() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x1::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x1::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x1::IfcResourceTime::RemainingUsage() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x1::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x1::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x1::IfcResourceTime::Completion() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x1::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x1::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x1::IfcResourceTime::declaration() const { return *IFC4X1_IfcResourceTime_type; } @@ -18427,7 +18427,7 @@ Ifc4x1::IfcRightCircularCylinder::IfcRightCircularCylinder(::Ifc4x1::IfcAxis2Pla // Function implementations for IfcRoof boost::optional< ::Ifc4x1::IfcRoofTypeEnum::Value > Ifc4x1::IfcRoof::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcRoofTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x1::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcRoofTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x1::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcRoofTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcRoof::declaration() const { return *IFC4X1_IfcRoof_type; } @@ -18451,9 +18451,9 @@ void Ifc4x1::IfcRoot::setGlobalId(std::string v) { {IfcWrite::IfcWriteArgument* ::Ifc4x1::IfcOwnerHistory* Ifc4x1::IfcRoot::OwnerHistory() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x1::IfcOwnerHistory>(true); } void Ifc4x1::IfcRoot::setOwnerHistory(::Ifc4x1::IfcOwnerHistory* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcRoot::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x1::IfcRoot::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcRoot::declaration() const { return *IFC4X1_IfcRoot_type; } @@ -18473,7 +18473,7 @@ Ifc4x1::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4x1::I // Function implementations for IfcSIUnit boost::optional< ::Ifc4x1::IfcSIPrefix::Value > Ifc4x1::IfcSIUnit::Prefix() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSIPrefix::FromString(*data_->getArgument(2)); } -void Ifc4x1::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x1::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSIPrefix::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x1::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x1::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSIPrefix::ToString(*v)));}data_->setArgument(2,attr);} } ::Ifc4x1::IfcSIUnitName::Value Ifc4x1::IfcSIUnit::Name() const { return ::Ifc4x1::IfcSIUnitName::FromString(*data_->getArgument(3)); } void Ifc4x1::IfcSIUnit::setName(::Ifc4x1::IfcSIUnitName::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcSIUnitName::ToString(v)));data_->setArgument(3,attr);} } @@ -18485,7 +18485,7 @@ Ifc4x1::IfcSIUnit::IfcSIUnit(::Ifc4x1::IfcUnitEnum::Value v2_UnitType, boost::op // Function implementations for IfcSanitaryTerminal boost::optional< ::Ifc4x1::IfcSanitaryTerminalTypeEnum::Value > Ifc4x1::IfcSanitaryTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x1::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSanitaryTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x1::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSanitaryTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSanitaryTerminal::declaration() const { return *IFC4X1_IfcSanitaryTerminal_type; } @@ -18505,11 +18505,11 @@ Ifc4x1::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_GlobalId // Function implementations for IfcSchedulingTime boost::optional< std::string > Ifc4x1::IfcSchedulingTime::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< ::Ifc4x1::IfcDataOriginEnum::Value > Ifc4x1::IfcSchedulingTime::DataOrigin() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } return ::Ifc4x1::IfcDataOriginEnum::FromString(*data_->getArgument(1)); } -void Ifc4x1::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x1::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDataOriginEnum::ToString(*v)));data_->setArgument(1,attr);} } +void Ifc4x1::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x1::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcDataOriginEnum::ToString(*v)));}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcSchedulingTime::UserDefinedDataOrigin() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcSchedulingTime::declaration() const { return *IFC4X1_IfcSchedulingTime_type; } @@ -18545,7 +18545,7 @@ void Ifc4x1::IfcSectionReinforcementProperties::setLongitudinalStartPosition(dou double Ifc4x1::IfcSectionReinforcementProperties::LongitudinalEndPosition() const { double v = *data_->getArgument(1); return v; } void Ifc4x1::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcSectionReinforcementProperties::TransversePosition() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcReinforcingBarRoleEnum::Value Ifc4x1::IfcSectionReinforcementProperties::ReinforcementRole() const { return ::Ifc4x1::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); } void Ifc4x1::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc4x1::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(3,attr);} } ::Ifc4x1::IfcSectionProperties* Ifc4x1::IfcSectionReinforcementProperties::SectionDefinition() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x1::IfcSectionProperties>(true); } @@ -18599,7 +18599,7 @@ Ifc4x1::IfcSectionedSpine::IfcSectionedSpine(::Ifc4x1::IfcCompositeCurve* v1_Spi // Function implementations for IfcSensor boost::optional< ::Ifc4x1::IfcSensorTypeEnum::Value > Ifc4x1::IfcSensor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSensorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x1::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSensorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x1::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSensorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSensor::declaration() const { return *IFC4X1_IfcSensor_type; } @@ -18619,7 +18619,7 @@ Ifc4x1::IfcSensorType::IfcSensorType(std::string v1_GlobalId, ::Ifc4x1::IfcOwner // Function implementations for IfcShadingDevice boost::optional< ::Ifc4x1::IfcShadingDeviceTypeEnum::Value > Ifc4x1::IfcShadingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcShadingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcShadingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcShadingDevice::declaration() const { return *IFC4X1_IfcShadingDevice_type; } @@ -18641,9 +18641,9 @@ Ifc4x1::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, ::If aggregate_of< ::Ifc4x1::IfcShapeModel >::ptr Ifc4x1::IfcShapeAspect::ShapeRepresentations() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x1::IfcShapeModel >(); } void Ifc4x1::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc4x1::IfcShapeModel >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcShapeAspect::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcShapeAspect::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::logic::tribool Ifc4x1::IfcShapeAspect::ProductDefinitional() const { boost::logic::tribool v = *data_->getArgument(3); return v; } void Ifc4x1::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x1::IfcProductRepresentationSelect* Ifc4x1::IfcShapeAspect::PartOfProductDefinitionShape() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x1::IfcProductRepresentationSelect>(true); } @@ -18693,11 +18693,11 @@ Ifc4x1::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::optiona // Function implementations for IfcSimplePropertyTemplate boost::optional< ::Ifc4x1::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4x1::IfcSimplePropertyTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSimplePropertyTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x1::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x1::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x1::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x1::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x1::IfcPropertyEnumeration* Ifc4x1::IfcSimplePropertyTemplate::Enumerators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x1::IfcPropertyEnumeration>(true); } void Ifc4x1::IfcSimplePropertyTemplate::setEnumerators(::Ifc4x1::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x1::IfcUnit* Ifc4x1::IfcSimplePropertyTemplate::PrimaryUnit() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x1::IfcUnit>(true); } @@ -18705,9 +18705,9 @@ void Ifc4x1::IfcSimplePropertyTemplate::setPrimaryUnit(::Ifc4x1::IfcUnit* v) { { ::Ifc4x1::IfcUnit* Ifc4x1::IfcSimplePropertyTemplate::SecondaryUnit() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x1::IfcUnit>(true); } void Ifc4x1::IfcSimplePropertyTemplate::setSecondaryUnit(::Ifc4x1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x1::IfcSimplePropertyTemplate::Expression() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x1::IfcStateEnum::Value > Ifc4x1::IfcSimplePropertyTemplate::AccessState() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x1::IfcStateEnum::FromString(*data_->getArgument(11)); } -void Ifc4x1::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x1::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcStateEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x1::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x1::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcStateEnum::ToString(*v)));}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x1::IfcSimplePropertyTemplate::declaration() const { return *IFC4X1_IfcSimplePropertyTemplate_type; } @@ -18717,13 +18717,13 @@ Ifc4x1::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_Glob // Function implementations for IfcSite boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x1::IfcSite::RefLatitude() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x1::IfcSite::RefLongitude() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcSite::RefElevation() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x1::IfcSite::LandTitleNumber() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x1::IfcPostalAddress* Ifc4x1::IfcSite::SiteAddress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x1::IfcPostalAddress>(true); } void Ifc4x1::IfcSite::setSiteAddress(::Ifc4x1::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -18735,7 +18735,7 @@ Ifc4x1::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* v2_ // Function implementations for IfcSlab boost::optional< ::Ifc4x1::IfcSlabTypeEnum::Value > Ifc4x1::IfcSlab::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSlabTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x1::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSlabTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x1::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSlabTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSlab::declaration() const { return *IFC4X1_IfcSlab_type; } @@ -18771,11 +18771,11 @@ Ifc4x1::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHist // Function implementations for IfcSlippageConnectionCondition boost::optional< double > Ifc4x1::IfcSlippageConnectionCondition::SlippageX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcSlippageConnectionCondition::SlippageY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcSlippageConnectionCondition::SlippageZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcSlippageConnectionCondition::declaration() const { return *IFC4X1_IfcSlippageConnectionCondition_type; } @@ -18785,7 +18785,7 @@ Ifc4x1::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost::op // Function implementations for IfcSolarDevice boost::optional< ::Ifc4x1::IfcSolarDeviceTypeEnum::Value > Ifc4x1::IfcSolarDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSolarDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSolarDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSolarDevice::declaration() const { return *IFC4X1_IfcSolarDevice_type; } @@ -18813,9 +18813,9 @@ Ifc4x1::IfcSolidModel::IfcSolidModel() : IfcGeometricRepresentationItem((IfcEnti // Function implementations for IfcSpace boost::optional< ::Ifc4x1::IfcSpaceTypeEnum::Value > Ifc4x1::IfcSpace::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x1::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x1::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSpaceTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x1::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x1::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSpaceTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcSpace::ElevationWithFlooring() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x1::IfcRelCoversSpaces::list::ptr Ifc4x1::IfcSpace::HasCoverings() const { return data_->getInverse(IFC4X1_IfcRelCoversSpaces_type, 4)->as(); } ::Ifc4x1::IfcRelSpaceBoundary::list::ptr Ifc4x1::IfcSpace::BoundedBy() const { return data_->getInverse(IFC4X1_IfcRelSpaceBoundary_type, 4)->as(); } @@ -18827,7 +18827,7 @@ Ifc4x1::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* v // Function implementations for IfcSpaceHeater boost::optional< ::Ifc4x1::IfcSpaceHeaterTypeEnum::Value > Ifc4x1::IfcSpaceHeater::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x1::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSpaceHeaterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x1::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSpaceHeaterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSpaceHeater::declaration() const { return *IFC4X1_IfcSpaceHeater_type; } @@ -18849,7 +18849,7 @@ Ifc4x1::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::Ifc4x1 ::Ifc4x1::IfcSpaceTypeEnum::Value Ifc4x1::IfcSpaceType::PredefinedType() const { return ::Ifc4x1::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x1::IfcSpaceType::setPredefinedType(::Ifc4x1::IfcSpaceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcSpaceTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x1::IfcSpaceType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcSpaceType::declaration() const { return *IFC4X1_IfcSpaceType_type; } @@ -18859,7 +18859,7 @@ Ifc4x1::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHi // Function implementations for IfcSpatialElement boost::optional< std::string > Ifc4x1::IfcSpatialElement::LongName() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x1::IfcRelContainedInSpatialStructure::list::ptr Ifc4x1::IfcSpatialElement::ContainsElements() const { return data_->getInverse(IFC4X1_IfcRelContainedInSpatialStructure_type, 5)->as(); } ::Ifc4x1::IfcRelServicesBuildings::list::ptr Ifc4x1::IfcSpatialElement::ServicedBySystems() const { return data_->getInverse(IFC4X1_IfcRelServicesBuildings_type, 5)->as(); } @@ -18872,7 +18872,7 @@ Ifc4x1::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4x1:: // Function implementations for IfcSpatialElementType boost::optional< std::string > Ifc4x1::IfcSpatialElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSpatialElementType::declaration() const { return *IFC4X1_IfcSpatialElementType_type; } @@ -18882,7 +18882,7 @@ Ifc4x1::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId, :: // Function implementations for IfcSpatialStructureElement boost::optional< ::Ifc4x1::IfcElementCompositionEnum::Value > Ifc4x1::IfcSpatialStructureElement::CompositionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x1::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElementCompositionEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x1::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcElementCompositionEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSpatialStructureElement::declaration() const { return *IFC4X1_IfcSpatialStructureElement_type; } @@ -18900,7 +18900,7 @@ Ifc4x1::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std::stri // Function implementations for IfcSpatialZone boost::optional< ::Ifc4x1::IfcSpatialZoneTypeEnum::Value > Ifc4x1::IfcSpatialZone::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x1::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSpatialZoneTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x1::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSpatialZoneTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSpatialZone::declaration() const { return *IFC4X1_IfcSpatialZone_type; } @@ -18912,7 +18912,7 @@ Ifc4x1::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4x1::IfcOwn ::Ifc4x1::IfcSpatialZoneTypeEnum::Value Ifc4x1::IfcSpatialZoneType::PredefinedType() const { return ::Ifc4x1::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x1::IfcSpatialZoneType::setPredefinedType(::Ifc4x1::IfcSpatialZoneTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcSpatialZoneTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x1::IfcSpatialZoneType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcSpatialZoneType::declaration() const { return *IFC4X1_IfcSpatialZoneType_type; } @@ -18942,7 +18942,7 @@ Ifc4x1::IfcSphericalSurface::IfcSphericalSurface(::Ifc4x1::IfcAxis2Placement3D* // Function implementations for IfcStackTerminal boost::optional< ::Ifc4x1::IfcStackTerminalTypeEnum::Value > Ifc4x1::IfcStackTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x1::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcStackTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x1::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcStackTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcStackTerminal::declaration() const { return *IFC4X1_IfcStackTerminal_type; } @@ -18962,7 +18962,7 @@ Ifc4x1::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, ::If // Function implementations for IfcStair boost::optional< ::Ifc4x1::IfcStairTypeEnum::Value > Ifc4x1::IfcStair::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcStairTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcStair::setPredefinedType(boost::optional< ::Ifc4x1::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcStairTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcStair::setPredefinedType(boost::optional< ::Ifc4x1::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcStairTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcStair::declaration() const { return *IFC4X1_IfcStair_type; } @@ -18972,15 +18972,15 @@ Ifc4x1::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* v // Function implementations for IfcStairFlight boost::optional< int > Ifc4x1::IfcStairFlight::NumberOfRisers() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } int v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< int > Ifc4x1::IfcStairFlight::NumberOfTreads() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcStairFlight::RiserHeight() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcStairFlight::TreadLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x1::IfcStairFlightTypeEnum::Value > Ifc4x1::IfcStairFlight::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x1::IfcStairFlightTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x1::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x1::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcStairFlightTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x1::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x1::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcStairFlightTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x1::IfcStairFlight::declaration() const { return *IFC4X1_IfcStairFlight_type; } @@ -19010,7 +19010,7 @@ Ifc4x1::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHi // Function implementations for IfcStructuralAction boost::optional< bool > Ifc4x1::IfcStructuralAction::DestabilizingLoad() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralAction::declaration() const { return *IFC4X1_IfcStructuralAction_type; } @@ -19037,9 +19037,9 @@ void Ifc4x1::IfcStructuralAnalysisModel::setPredefinedType(::Ifc4x1::IfcAnalysis ::Ifc4x1::IfcAxis2Placement3D* Ifc4x1::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcAxis2Placement3D>(true); } void Ifc4x1::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc4x1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcStructuralLoadGroup >::ptr > Ifc4x1::IfcStructuralAnalysisModel::LoadedBy() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x1::IfcStructuralLoadGroup >(); } -void Ifc4x1::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x1::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x1::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x1::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcStructuralResultGroup >::ptr > Ifc4x1::IfcStructuralAnalysisModel::HasResults() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x1::IfcStructuralResultGroup >(); } -void Ifc4x1::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x1::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x1::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x1::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x1::IfcObjectPlacement* Ifc4x1::IfcStructuralAnalysisModel::SharedPlacement() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x1::IfcObjectPlacement>(true); } void Ifc4x1::IfcStructuralAnalysisModel::setSharedPlacement(::Ifc4x1::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -19062,7 +19062,7 @@ Ifc4x1::IfcStructuralConnection::IfcStructuralConnection(std::string v1_GlobalId // Function implementations for IfcStructuralConnectionCondition boost::optional< std::string > Ifc4x1::IfcStructuralConnectionCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralConnectionCondition::declaration() const { return *IFC4X1_IfcStructuralConnectionCondition_type; } @@ -19072,7 +19072,7 @@ Ifc4x1::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(boost // Function implementations for IfcStructuralCurveAction boost::optional< ::Ifc4x1::IfcProjectedOrTrueLengthEnum::Value > Ifc4x1::IfcStructuralCurveAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x1::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x1::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x1::IfcStructuralCurveActivityTypeEnum::Value Ifc4x1::IfcStructuralCurveAction::PredefinedType() const { return ::Ifc4x1::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x1::IfcStructuralCurveAction::setPredefinedType(::Ifc4x1::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -19141,7 +19141,7 @@ Ifc4x1::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_Glob // Function implementations for IfcStructuralLoad boost::optional< std::string > Ifc4x1::IfcStructuralLoad::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralLoad::declaration() const { return *IFC4X1_IfcStructuralLoad_type; } @@ -19151,7 +19151,7 @@ Ifc4x1::IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > v1_N // Function implementations for IfcStructuralLoadCase boost::optional< std::vector< double > /*[3:3]*/ > Ifc4x1::IfcStructuralLoadCase::SelfWeightCoefficients() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< double > /*[3:3]*/ v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralLoadCase::declaration() const { return *IFC4X1_IfcStructuralLoadCase_type; } @@ -19163,7 +19163,7 @@ Ifc4x1::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId, :: aggregate_of< ::Ifc4x1::IfcStructuralLoadOrResult >::ptr Ifc4x1::IfcStructuralLoadConfiguration::Values() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x1::IfcStructuralLoadOrResult >(); } void Ifc4x1::IfcStructuralLoadConfiguration::setValues(aggregate_of< ::Ifc4x1::IfcStructuralLoadOrResult >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::vector< std::vector< double > > > Ifc4x1::IfcStructuralLoadConfiguration::Locations() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralLoadConfiguration::declaration() const { return *IFC4X1_IfcStructuralLoadConfiguration_type; } @@ -19179,9 +19179,9 @@ void Ifc4x1::IfcStructuralLoadGroup::setActionType(::Ifc4x1::IfcActionTypeEnum:: ::Ifc4x1::IfcActionSourceTypeEnum::Value Ifc4x1::IfcStructuralLoadGroup::ActionSource() const { return ::Ifc4x1::IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x1::IfcStructuralLoadGroup::setActionSource(::Ifc4x1::IfcActionSourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcActionSourceTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadGroup::Coefficient() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x1::IfcStructuralLoadGroup::Purpose() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x1::IfcStructuralResultGroup::list::ptr Ifc4x1::IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(IFC4X1_IfcStructuralResultGroup_type, 6)->as(); } ::Ifc4x1::IfcStructuralAnalysisModel::list::ptr Ifc4x1::IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(IFC4X1_IfcStructuralAnalysisModel_type, 7)->as(); } @@ -19193,17 +19193,17 @@ Ifc4x1::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_GlobalId, // Function implementations for IfcStructuralLoadLinearForce boost::optional< double > Ifc4x1::IfcStructuralLoadLinearForce::LinearForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadLinearForce::LinearForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadLinearForce::LinearForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadLinearForce::LinearMomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadLinearForce::LinearMomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralLoadLinearForce::declaration() const { return *IFC4X1_IfcStructuralLoadLinearForce_type; } @@ -19221,11 +19221,11 @@ Ifc4x1::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional< st // Function implementations for IfcStructuralLoadPlanarForce boost::optional< double > Ifc4x1::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralLoadPlanarForce::declaration() const { return *IFC4X1_IfcStructuralLoadPlanarForce_type; } @@ -19235,17 +19235,17 @@ Ifc4x1::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::option // Function implementations for IfcStructuralLoadSingleDisplacement boost::optional< double > Ifc4x1::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralLoadSingleDisplacement::declaration() const { return *IFC4X1_IfcStructuralLoadSingleDisplacement_type; } @@ -19255,7 +19255,7 @@ Ifc4x1::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement // Function implementations for IfcStructuralLoadSingleDisplacementDistortion boost::optional< double > Ifc4x1::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IFC4X1_IfcStructuralLoadSingleDisplacementDistortion_type; } @@ -19265,17 +19265,17 @@ Ifc4x1::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDi // Function implementations for IfcStructuralLoadSingleForce boost::optional< double > Ifc4x1::IfcStructuralLoadSingleForce::ForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadSingleForce::ForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadSingleForce::ForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadSingleForce::MomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadSingleForce::MomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadSingleForce::MomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralLoadSingleForce::declaration() const { return *IFC4X1_IfcStructuralLoadSingleForce_type; } @@ -19285,7 +19285,7 @@ Ifc4x1::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::option // Function implementations for IfcStructuralLoadSingleForceWarping boost::optional< double > Ifc4x1::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralLoadSingleForceWarping::declaration() const { return *IFC4X1_IfcStructuralLoadSingleForceWarping_type; } @@ -19303,11 +19303,11 @@ Ifc4x1::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< std::s // Function implementations for IfcStructuralLoadTemperature boost::optional< double > Ifc4x1::IfcStructuralLoadTemperature::DeltaTConstant() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadTemperature::DeltaTY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcStructuralLoadTemperature::DeltaTZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralLoadTemperature::declaration() const { return *IFC4X1_IfcStructuralLoadTemperature_type; } @@ -19383,7 +19383,7 @@ Ifc4x1::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_Global // Function implementations for IfcStructuralSurfaceAction boost::optional< ::Ifc4x1::IfcProjectedOrTrueLengthEnum::Value > Ifc4x1::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x1::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x1::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x1::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x1::IfcStructuralSurfaceAction::PredefinedType() const { return ::Ifc4x1::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x1::IfcStructuralSurfaceAction::setPredefinedType(::Ifc4x1::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -19405,7 +19405,7 @@ Ifc4x1::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std::stri ::Ifc4x1::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4x1::IfcStructuralSurfaceMember::PredefinedType() const { return ::Ifc4x1::IfcStructuralSurfaceMemberTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x1::IfcStructuralSurfaceMember::setPredefinedType(::Ifc4x1::IfcStructuralSurfaceMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcStructuralSurfaceMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcStructuralSurfaceMember::Thickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcStructuralSurfaceMember::declaration() const { return *IFC4X1_IfcStructuralSurfaceMember_type; } @@ -19445,7 +19445,7 @@ void Ifc4x1::IfcStyledItem::setItem(::Ifc4x1::IfcRepresentationItem* v) { {IfcWr aggregate_of_instance::ptr Ifc4x1::IfcStyledItem::Styles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4x1::IfcStyledItem::setStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcStyledItem::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcStyledItem::declaration() const { return *IFC4X1_IfcStyledItem_type; } @@ -19463,7 +19463,7 @@ Ifc4x1::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4x1::IfcRepresenta // Function implementations for IfcSubContractResource boost::optional< ::Ifc4x1::IfcSubContractResourceTypeEnum::Value > Ifc4x1::IfcSubContractResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSubContractResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x1::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSubContractResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcSubContractResource::declaration() const { return *IFC4X1_IfcSubContractResource_type; } @@ -19517,9 +19517,9 @@ Ifc4x1::IfcSurfaceCurve::IfcSurfaceCurve(::Ifc4x1::IfcCurve* v1_Curve3D, aggrega ::Ifc4x1::IfcCurve* Ifc4x1::IfcSurfaceCurveSweptAreaSolid::Directrix() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x1::IfcCurve>(true); } void Ifc4x1::IfcSurfaceCurveSweptAreaSolid::setDirectrix(::Ifc4x1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcSurfaceCurveSweptAreaSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcSurfaceCurveSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcSurfaceCurveSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcSurfaceCurveSweptAreaSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcSurfaceCurveSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcSurfaceCurveSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x1::IfcSurface* Ifc4x1::IfcSurfaceCurveSweptAreaSolid::ReferenceSurface() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x1::IfcSurface>(true); } void Ifc4x1::IfcSurfaceCurveSweptAreaSolid::setReferenceSurface(::Ifc4x1::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -19531,7 +19531,7 @@ Ifc4x1::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4x1::I // Function implementations for IfcSurfaceFeature boost::optional< ::Ifc4x1::IfcSurfaceFeatureTypeEnum::Value > Ifc4x1::IfcSurfaceFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSurfaceFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x1::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSurfaceFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x1::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSurfaceFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSurfaceFeature::declaration() const { return *IFC4X1_IfcSurfaceFeature_type; } @@ -19563,11 +19563,11 @@ Ifc4x1::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4x1::IfcProfileDef* // Function implementations for IfcSurfaceReinforcementArea boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x1::IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x1::IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x1::IfcSurfaceReinforcementArea::declaration() const { return *IFC4X1_IfcSurfaceReinforcementArea_type; } @@ -19605,9 +19605,9 @@ Ifc4x1::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4x1::IfcColourRgb* // Function implementations for IfcSurfaceStyleRefraction boost::optional< double > Ifc4x1::IfcSurfaceStyleRefraction::RefractionIndex() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< double > Ifc4x1::IfcSurfaceStyleRefraction::DispersionFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x1::IfcSurfaceStyleRefraction::declaration() const { return *IFC4X1_IfcSurfaceStyleRefraction_type; } @@ -19641,7 +19641,7 @@ Ifc4x1::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4x1::IfcColourRg ::Ifc4x1::IfcColourRgb* Ifc4x1::IfcSurfaceStyleShading::SurfaceColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x1::IfcColourRgb>(true); } void Ifc4x1::IfcSurfaceStyleShading::setSurfaceColour(::Ifc4x1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x1::IfcSurfaceStyleShading::Transparency() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x1::IfcSurfaceStyleShading::declaration() const { return *IFC4X1_IfcSurfaceStyleShading_type; } @@ -19665,11 +19665,11 @@ void Ifc4x1::IfcSurfaceTexture::setRepeatS(bool v) { {IfcWrite::IfcWriteArgument bool Ifc4x1::IfcSurfaceTexture::RepeatT() const { bool v = *data_->getArgument(1); return v; } void Ifc4x1::IfcSurfaceTexture::setRepeatT(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcSurfaceTexture::Mode() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcCartesianTransformationOperator2D* Ifc4x1::IfcSurfaceTexture::TextureTransform() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcCartesianTransformationOperator2D>(true); } void Ifc4x1::IfcSurfaceTexture::setTextureTransform(::Ifc4x1::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcSurfaceTexture::Parameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x1::IfcTextureCoordinate::list::ptr Ifc4x1::IfcSurfaceTexture::IsMappedBy() const { return data_->getInverse(IFC4X1_IfcTextureCoordinate_type, 0)->as(); } ::Ifc4x1::IfcSurfaceStyleWithTextures::list::ptr Ifc4x1::IfcSurfaceTexture::UsedInStyles() const { return data_->getInverse(IFC4X1_IfcSurfaceStyleWithTextures_type, 0)->as(); } @@ -19697,11 +19697,11 @@ void Ifc4x1::IfcSweptDiskSolid::setDirectrix(::Ifc4x1::IfcCurve* v) { {IfcWrite: double Ifc4x1::IfcSweptDiskSolid::Radius() const { double v = *data_->getArgument(1); return v; } void Ifc4x1::IfcSweptDiskSolid::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x1::IfcSweptDiskSolid::InnerRadius() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x1::IfcSweptDiskSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcSweptDiskSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcSweptDiskSolid::declaration() const { return *IFC4X1_IfcSweptDiskSolid_type; } @@ -19711,7 +19711,7 @@ Ifc4x1::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4x1::IfcCurve* v1_Directrix, d // Function implementations for IfcSweptDiskSolidPolygonal boost::optional< double > Ifc4x1::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x1::IfcSweptDiskSolidPolygonal::declaration() const { return *IFC4X1_IfcSweptDiskSolidPolygonal_type; } @@ -19733,7 +19733,7 @@ Ifc4x1::IfcSweptSurface::IfcSweptSurface(::Ifc4x1::IfcProfileDef* v1_SweptCurve, // Function implementations for IfcSwitchingDevice boost::optional< ::Ifc4x1::IfcSwitchingDeviceTypeEnum::Value > Ifc4x1::IfcSwitchingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSwitchingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x1::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSwitchingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSwitchingDevice::declaration() const { return *IFC4X1_IfcSwitchingDevice_type; } @@ -19762,7 +19762,7 @@ Ifc4x1::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* // Function implementations for IfcSystemFurnitureElement boost::optional< ::Ifc4x1::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x1::IfcSystemFurnitureElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcSystemFurnitureElement::declaration() const { return *IFC4X1_IfcSystemFurnitureElement_type; } @@ -19772,7 +19772,7 @@ Ifc4x1::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_Glob // Function implementations for IfcSystemFurnitureElementType boost::optional< ::Ifc4x1::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x1::IfcSystemFurnitureElementType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x1::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x1::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x1::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x1::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x1::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcSystemFurnitureElementType::declaration() const { return *IFC4X1_IfcSystemFurnitureElementType_type; } @@ -19790,15 +19790,15 @@ void Ifc4x1::IfcTShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc4x1::IfcTShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x1::IfcTShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcTShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x1::IfcTShapeProfileDef::WebEdgeRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcTShapeProfileDef::WebSlope() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcTShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x1::IfcTShapeProfileDef::declaration() const { return *IFC4X1_IfcTShapeProfileDef_type; } @@ -19808,11 +19808,11 @@ Ifc4x1::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4x1::IfcProfileTypeEnum::V // Function implementations for IfcTable boost::optional< std::string > Ifc4x1::IfcTable::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcTableRow >::ptr > Ifc4x1::IfcTable::Rows() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x1::IfcTableRow >(); } -void Ifc4x1::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x1::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x1::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x1::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcTableColumn >::ptr > Ifc4x1::IfcTable::Columns() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x1::IfcTableColumn >(); } -void Ifc4x1::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x1::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x1::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x1::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcTable::declaration() const { return *IFC4X1_IfcTable_type; } @@ -19822,11 +19822,11 @@ Ifc4x1::IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::option // Function implementations for IfcTableColumn boost::optional< std::string > Ifc4x1::IfcTableColumn::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcTableColumn::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcTableColumn::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcUnit* Ifc4x1::IfcTableColumn::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcUnit>(true); } void Ifc4x1::IfcTableColumn::setUnit(::Ifc4x1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x1::IfcReference* Ifc4x1::IfcTableColumn::ReferencePath() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x1::IfcReference>(true); } @@ -19840,9 +19840,9 @@ Ifc4x1::IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Identif // Function implementations for IfcTableRow boost::optional< aggregate_of_instance::ptr > Ifc4x1::IfcTableRow::RowCells() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(0); return v; } -void Ifc4x1::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x1::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< bool > Ifc4x1::IfcTableRow::IsHeading() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x1::IfcTableRow::declaration() const { return *IFC4X1_IfcTableRow_type; } @@ -19852,7 +19852,7 @@ Ifc4x1::IfcTableRow::IfcTableRow(boost::optional< aggregate_of_instance::ptr > v // Function implementations for IfcTank boost::optional< ::Ifc4x1::IfcTankTypeEnum::Value > Ifc4x1::IfcTank::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcTankTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcTank::setPredefinedType(boost::optional< ::Ifc4x1::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTankTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcTank::setPredefinedType(boost::optional< ::Ifc4x1::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTankTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcTank::declaration() const { return *IFC4X1_IfcTank_type; } @@ -19872,17 +19872,17 @@ Ifc4x1::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHist // Function implementations for IfcTask boost::optional< std::string > Ifc4x1::IfcTask::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcTask::WorkMethod() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } bool Ifc4x1::IfcTask::IsMilestone() const { bool v = *data_->getArgument(9); return v; } void Ifc4x1::IfcTask::setIsMilestone(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< int > Ifc4x1::IfcTask::Priority() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } int v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x1::IfcTaskTime* Ifc4x1::IfcTask::TaskTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x1::IfcTaskTime>(true); } void Ifc4x1::IfcTask::setTaskTime(::Ifc4x1::IfcTaskTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< ::Ifc4x1::IfcTaskTypeEnum::Value > Ifc4x1::IfcTask::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x1::IfcTaskTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x1::IfcTask::setPredefinedType(boost::optional< ::Ifc4x1::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTaskTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x1::IfcTask::setPredefinedType(boost::optional< ::Ifc4x1::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTaskTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x1::IfcTask::declaration() const { return *IFC4X1_IfcTask_type; } @@ -19892,39 +19892,39 @@ Ifc4x1::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* v2_ // Function implementations for IfcTaskTime boost::optional< ::Ifc4x1::IfcTaskDurationEnum::Value > Ifc4x1::IfcTaskTime::DurationType() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x1::IfcTaskDurationEnum::FromString(*data_->getArgument(3)); } -void Ifc4x1::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x1::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTaskDurationEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x1::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x1::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTaskDurationEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::ScheduleDuration() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::EarlyStart() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::EarlyFinish() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::LateStart() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::LateFinish() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::FreeFloat() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::TotalFloat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< bool > Ifc4x1::IfcTaskTime::IsCritical() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } bool v = *data_->getArgument(13); return v; } -void Ifc4x1::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x1::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::StatusTime() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x1::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x1::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::ActualDuration() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x1::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x1::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::ActualStart() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } std::string v = *data_->getArgument(16); return v; } -void Ifc4x1::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x1::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::ActualFinish() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } std::string v = *data_->getArgument(17); return v; } -void Ifc4x1::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x1::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskTime::RemainingTime() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x1::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x1::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< double > Ifc4x1::IfcTaskTime::Completion() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } double v = *data_->getArgument(19); return v; } -void Ifc4x1::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x1::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x1::IfcTaskTime::declaration() const { return *IFC4X1_IfcTaskTime_type; } @@ -19946,7 +19946,7 @@ Ifc4x1::IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::string ::Ifc4x1::IfcTaskTypeEnum::Value Ifc4x1::IfcTaskType::PredefinedType() const { return ::Ifc4x1::IfcTaskTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x1::IfcTaskType::setPredefinedType(::Ifc4x1::IfcTaskTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcTaskTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x1::IfcTaskType::WorkMethod() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x1::IfcTaskType::declaration() const { return *IFC4X1_IfcTaskType_type; } @@ -19956,17 +19956,17 @@ Ifc4x1::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHist // Function implementations for IfcTelecomAddress boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcTelecomAddress::TelephoneNumbers() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcTelecomAddress::FacsimileNumbers() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcTelecomAddress::PagerNumber() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcTelecomAddress::ElectronicMailAddresses() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcTelecomAddress::WWWHomePageURL() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x1::IfcTelecomAddress::MessagingIDs() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcTelecomAddress::declaration() const { return *IFC4X1_IfcTelecomAddress_type; } @@ -19976,21 +19976,21 @@ Ifc4x1::IfcTelecomAddress::IfcTelecomAddress(boost::optional< ::Ifc4x1::IfcAddre // Function implementations for IfcTendon boost::optional< ::Ifc4x1::IfcTendonTypeEnum::Value > Ifc4x1::IfcTendon::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x1::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x1::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x1::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTendonTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x1::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x1::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTendonTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcTendon::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcTendon::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x1::IfcTendon::TensionForce() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x1::IfcTendon::PreStress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x1::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x1::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x1::IfcTendon::FrictionCoefficient() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x1::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x1::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x1::IfcTendon::AnchorageSlip() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x1::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x1::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x1::IfcTendon::MinCurvatureRadius() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x1::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x1::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x1::IfcTendon::declaration() const { return *IFC4X1_IfcTendon_type; } @@ -20000,7 +20000,7 @@ Ifc4x1::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* // Function implementations for IfcTendonAnchor boost::optional< ::Ifc4x1::IfcTendonAnchorTypeEnum::Value > Ifc4x1::IfcTendonAnchor::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x1::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x1::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x1::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTendonAnchorTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x1::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x1::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTendonAnchorTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcTendonAnchor::declaration() const { return *IFC4X1_IfcTendonAnchor_type; } @@ -20022,11 +20022,11 @@ Ifc4x1::IfcTendonAnchorType::IfcTendonAnchorType(std::string v1_GlobalId, ::Ifc4 ::Ifc4x1::IfcTendonTypeEnum::Value Ifc4x1::IfcTendonType::PredefinedType() const { return ::Ifc4x1::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x1::IfcTendonType::setPredefinedType(::Ifc4x1::IfcTendonTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcTendonTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcTendonType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcTendonType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x1::IfcTendonType::SheathDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x1::IfcTendonType::declaration() const { return *IFC4X1_IfcTendonType_type; } @@ -20088,7 +20088,7 @@ void Ifc4x1::IfcTextStyle::setTextStyle(::Ifc4x1::IfcTextStyleTextModel* v) { {I ::Ifc4x1::IfcTextFontSelect* Ifc4x1::IfcTextStyle::TextFontStyle() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcTextFontSelect>(true); } void Ifc4x1::IfcTextStyle::setTextFontStyle(::Ifc4x1::IfcTextFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x1::IfcTextStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcTextStyle::declaration() const { return *IFC4X1_IfcTextStyle_type; } @@ -20100,11 +20100,11 @@ Ifc4x1::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, ::Ifc std::vector< std::string > /*[1:?]*/ Ifc4x1::IfcTextStyleFontModel::FontFamily() const { std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } void Ifc4x1::IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcTextStyleFontModel::FontStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x1::IfcTextStyleFontModel::FontVariant() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcTextStyleFontModel::FontWeight() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x1::IfcSizeSelect* Ifc4x1::IfcTextStyleFontModel::FontSize() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x1::IfcSizeSelect>(true); } void Ifc4x1::IfcTextStyleFontModel::setFontSize(::Ifc4x1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -20130,15 +20130,15 @@ Ifc4x1::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4x1::IfcColo ::Ifc4x1::IfcSizeSelect* Ifc4x1::IfcTextStyleTextModel::TextIndent() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x1::IfcSizeSelect>(true); } void Ifc4x1::IfcTextStyleTextModel::setTextIndent(::Ifc4x1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcTextStyleTextModel::TextAlign() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x1::IfcTextStyleTextModel::TextDecoration() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x1::IfcSizeSelect* Ifc4x1::IfcTextStyleTextModel::LetterSpacing() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcSizeSelect>(true); } void Ifc4x1::IfcTextStyleTextModel::setLetterSpacing(::Ifc4x1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x1::IfcSizeSelect* Ifc4x1::IfcTextStyleTextModel::WordSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x1::IfcSizeSelect>(true); } void Ifc4x1::IfcTextStyleTextModel::setWordSpacing(::Ifc4x1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcTextStyleTextModel::TextTransform() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x1::IfcSizeSelect* Ifc4x1::IfcTextStyleTextModel::LineHeight() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x1::IfcSizeSelect>(true); } void Ifc4x1::IfcTextStyleTextModel::setLineHeight(::Ifc4x1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -20162,7 +20162,7 @@ Ifc4x1::IfcTextureCoordinate::IfcTextureCoordinate(aggregate_of< ::Ifc4x1::IfcSu std::string Ifc4x1::IfcTextureCoordinateGenerator::Mode() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x1::IfcTextureCoordinateGenerator::setMode(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[1:?]*/ > Ifc4x1::IfcTextureCoordinateGenerator::Parameter() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x1::IfcTextureCoordinateGenerator::declaration() const { return *IFC4X1_IfcTextureCoordinateGenerator_type; } @@ -20218,7 +20218,7 @@ Ifc4x1::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v2_En std::string Ifc4x1::IfcTimeSeries::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x1::IfcTimeSeries::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x1::IfcTimeSeries::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } std::string Ifc4x1::IfcTimeSeries::StartTime() const { std::string v = *data_->getArgument(2); return v; } void Ifc4x1::IfcTimeSeries::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::string Ifc4x1::IfcTimeSeries::EndTime() const { std::string v = *data_->getArgument(3); return v; } @@ -20228,7 +20228,7 @@ void Ifc4x1::IfcTimeSeries::setTimeSeriesDataType(::Ifc4x1::IfcTimeSeriesDataTyp ::Ifc4x1::IfcDataOriginEnum::Value Ifc4x1::IfcTimeSeries::DataOrigin() const { return ::Ifc4x1::IfcDataOriginEnum::FromString(*data_->getArgument(5)); } void Ifc4x1::IfcTimeSeries::setDataOrigin(::Ifc4x1::IfcDataOriginEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcDataOriginEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x1::IfcTimeSeries::UserDefinedDataOrigin() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x1::IfcUnit* Ifc4x1::IfcTimeSeries::Unit() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x1::IfcUnit>(true); } void Ifc4x1::IfcTimeSeries::setUnit(::Ifc4x1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } @@ -20279,7 +20279,7 @@ Ifc4x1::IfcToroidalSurface::IfcToroidalSurface(::Ifc4x1::IfcAxis2Placement3D* v1 // Function implementations for IfcTransformer boost::optional< ::Ifc4x1::IfcTransformerTypeEnum::Value > Ifc4x1::IfcTransformer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcTransformerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x1::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTransformerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x1::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTransformerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcTransformer::declaration() const { return *IFC4X1_IfcTransformer_type; } @@ -20299,9 +20299,9 @@ Ifc4x1::IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, ::Ifc4x1 // Function implementations for IfcTransitionCurveSegment2D boost::optional< double > Ifc4x1::IfcTransitionCurveSegment2D::StartRadius() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x1::IfcTransitionCurveSegment2D::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x1::IfcTransitionCurveSegment2D::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x1::IfcTransitionCurveSegment2D::EndRadius() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcTransitionCurveSegment2D::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcTransitionCurveSegment2D::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } bool Ifc4x1::IfcTransitionCurveSegment2D::IsStartRadiusCCW() const { bool v = *data_->getArgument(5); return v; } void Ifc4x1::IfcTransitionCurveSegment2D::setIsStartRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } bool Ifc4x1::IfcTransitionCurveSegment2D::IsEndRadiusCCW() const { bool v = *data_->getArgument(6); return v; } @@ -20317,7 +20317,7 @@ Ifc4x1::IfcTransitionCurveSegment2D::IfcTransitionCurveSegment2D(::Ifc4x1::IfcCa // Function implementations for IfcTransportElement boost::optional< ::Ifc4x1::IfcTransportElementTypeEnum::Value > Ifc4x1::IfcTransportElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcTransportElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcTransportElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcTransportElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTransportElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcTransportElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcTransportElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTransportElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcTransportElement::declaration() const { return *IFC4X1_IfcTransportElement_type; } @@ -20353,13 +20353,13 @@ Ifc4x1::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4x1::IfcProfileTypeE // Function implementations for IfcTriangulatedFaceSet boost::optional< std::vector< std::vector< double > > > Ifc4x1::IfcTriangulatedFaceSet::Normals() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(1); return v; } -void Ifc4x1::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x1::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x1::IfcTriangulatedFaceSet::Closed() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x1::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x1::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::vector< std::vector< int > > Ifc4x1::IfcTriangulatedFaceSet::CoordIndex() const { std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } void Ifc4x1::IfcTriangulatedFaceSet::setCoordIndex(std::vector< std::vector< int > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x1::IfcTriangulatedFaceSet::PnIndex() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x1::IfcTriangulatedFaceSet::declaration() const { return *IFC4X1_IfcTriangulatedFaceSet_type; } @@ -20397,7 +20397,7 @@ Ifc4x1::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4x1::IfcCurve* v1_BasisCurve, aggr // Function implementations for IfcTubeBundle boost::optional< ::Ifc4x1::IfcTubeBundleTypeEnum::Value > Ifc4x1::IfcTubeBundle::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x1::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTubeBundleTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x1::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcTubeBundleTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcTubeBundle::declaration() const { return *IFC4X1_IfcTubeBundle_type; } @@ -20417,9 +20417,9 @@ Ifc4x1::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4x1:: // Function implementations for IfcTypeObject boost::optional< std::string > Ifc4x1::IfcTypeObject::ApplicableOccurrence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcPropertySetDefinition >::ptr > Ifc4x1::IfcTypeObject::HasPropertySets() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x1::IfcPropertySetDefinition >(); } -void Ifc4x1::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x1::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(5,attr);} } +void Ifc4x1::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x1::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(5,attr);} } ::Ifc4x1::IfcRelDefinesByType::list::ptr Ifc4x1::IfcTypeObject::Types() const { return data_->getInverse(IFC4X1_IfcRelDefinesByType_type, 5)->as(); } @@ -20430,11 +20430,11 @@ Ifc4x1::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4x1::IfcOwner // Function implementations for IfcTypeProcess boost::optional< std::string > Ifc4x1::IfcTypeProcess::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcTypeProcess::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcTypeProcess::ProcessType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x1::IfcRelAssignsToProcess::list::ptr Ifc4x1::IfcTypeProcess::OperatesOn() const { return data_->getInverse(IFC4X1_IfcRelAssignsToProcess_type, 6)->as(); } @@ -20445,9 +20445,9 @@ Ifc4x1::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4x1::IfcOwn // Function implementations for IfcTypeProduct boost::optional< aggregate_of< ::Ifc4x1::IfcRepresentationMap >::ptr > Ifc4x1::IfcTypeProduct::RepresentationMaps() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x1::IfcRepresentationMap >(); } -void Ifc4x1::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x1::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x1::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x1::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcTypeProduct::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x1::IfcRelAssignsToProduct::list::ptr Ifc4x1::IfcTypeProduct::ReferencedBy() const { return data_->getInverse(IFC4X1_IfcRelAssignsToProduct_type, 6)->as(); } @@ -20458,11 +20458,11 @@ Ifc4x1::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4x1::IfcOwn // Function implementations for IfcTypeResource boost::optional< std::string > Ifc4x1::IfcTypeResource::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x1::IfcTypeResource::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcTypeResource::ResourceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x1::IfcRelAssignsToResource::list::ptr Ifc4x1::IfcTypeResource::ResourceOf() const { return data_->getInverse(IFC4X1_IfcRelAssignsToResource_type, 6)->as(); } @@ -20481,11 +20481,11 @@ void Ifc4x1::IfcUShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc4x1::IfcUShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x1::IfcUShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcUShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcUShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x1::IfcUShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x1::IfcUShapeProfileDef::declaration() const { return *IFC4X1_IfcUShapeProfileDef_type; } @@ -20505,7 +20505,7 @@ Ifc4x1::IfcUnitAssignment::IfcUnitAssignment(aggregate_of_instance::ptr v1_Units // Function implementations for IfcUnitaryControlElement boost::optional< ::Ifc4x1::IfcUnitaryControlElementTypeEnum::Value > Ifc4x1::IfcUnitaryControlElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcUnitaryControlElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x1::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcUnitaryControlElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcUnitaryControlElement::declaration() const { return *IFC4X1_IfcUnitaryControlElement_type; } @@ -20525,7 +20525,7 @@ Ifc4x1::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::string v // Function implementations for IfcUnitaryEquipment boost::optional< ::Ifc4x1::IfcUnitaryEquipmentTypeEnum::Value > Ifc4x1::IfcUnitaryEquipment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x1::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcUnitaryEquipmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x1::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcUnitaryEquipmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcUnitaryEquipment::declaration() const { return *IFC4X1_IfcUnitaryEquipment_type; } @@ -20545,7 +20545,7 @@ Ifc4x1::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_GlobalId // Function implementations for IfcValve boost::optional< ::Ifc4x1::IfcValveTypeEnum::Value > Ifc4x1::IfcValve::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcValveTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcValve::setPredefinedType(boost::optional< ::Ifc4x1::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcValveTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcValve::setPredefinedType(boost::optional< ::Ifc4x1::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcValveTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcValve::declaration() const { return *IFC4X1_IfcValve_type; } @@ -20605,7 +20605,7 @@ Ifc4x1::IfcVertexPoint::IfcVertexPoint(::Ifc4x1::IfcPoint* v1_VertexGeometry) : // Function implementations for IfcVibrationIsolator boost::optional< ::Ifc4x1::IfcVibrationIsolatorTypeEnum::Value > Ifc4x1::IfcVibrationIsolator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x1::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcVibrationIsolatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x1::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcVibrationIsolatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcVibrationIsolator::declaration() const { return *IFC4X1_IfcVibrationIsolator_type; } @@ -20645,7 +20645,7 @@ Ifc4x1::IfcVirtualGridIntersection::IfcVirtualGridIntersection(aggregate_of< ::I // Function implementations for IfcVoidingFeature boost::optional< ::Ifc4x1::IfcVoidingFeatureTypeEnum::Value > Ifc4x1::IfcVoidingFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcVoidingFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x1::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcVoidingFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x1::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcVoidingFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcVoidingFeature::declaration() const { return *IFC4X1_IfcVoidingFeature_type; } @@ -20655,7 +20655,7 @@ Ifc4x1::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4x1:: // Function implementations for IfcWall boost::optional< ::Ifc4x1::IfcWallTypeEnum::Value > Ifc4x1::IfcWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcWall::setPredefinedType(boost::optional< ::Ifc4x1::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcWall::setPredefinedType(boost::optional< ::Ifc4x1::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcWall::declaration() const { return *IFC4X1_IfcWall_type; } @@ -20691,7 +20691,7 @@ Ifc4x1::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHist // Function implementations for IfcWasteTerminal boost::optional< ::Ifc4x1::IfcWasteTerminalTypeEnum::Value > Ifc4x1::IfcWasteTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x1::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWasteTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x1::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWasteTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcWasteTerminal::declaration() const { return *IFC4X1_IfcWasteTerminal_type; } @@ -20711,15 +20711,15 @@ Ifc4x1::IfcWasteTerminalType::IfcWasteTerminalType(std::string v1_GlobalId, ::If // Function implementations for IfcWindow boost::optional< double > Ifc4x1::IfcWindow::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x1::IfcWindow::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x1::IfcWindowTypeEnum::Value > Ifc4x1::IfcWindow::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x1::IfcWindowTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x1::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x1::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWindowTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x1::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x1::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWindowTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x1::IfcWindowTypePartitioningEnum::Value > Ifc4x1::IfcWindow::PartitioningType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x1::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(11)); } -void Ifc4x1::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x1::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWindowTypePartitioningEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x1::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x1::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWindowTypePartitioningEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x1::IfcWindow::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x1::IfcWindow::declaration() const { return *IFC4X1_IfcWindow_type; } @@ -20729,29 +20729,29 @@ Ifc4x1::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHistory* // Function implementations for IfcWindowLiningProperties boost::optional< double > Ifc4x1::IfcWindowLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x1::IfcWindowLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcWindowLiningProperties::TransomThickness() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcWindowLiningProperties::MullionThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcWindowLiningProperties::FirstTransomOffset() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x1::IfcWindowLiningProperties::SecondTransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x1::IfcWindowLiningProperties::FirstMullionOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x1::IfcWindowLiningProperties::SecondMullionOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } ::Ifc4x1::IfcShapeAspect* Ifc4x1::IfcWindowLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc4x1::IfcShapeAspect>(true); } void Ifc4x1::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc4x1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} } boost::optional< double > Ifc4x1::IfcWindowLiningProperties::LiningOffset() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x1::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x1::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x1::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x1::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x1::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x1::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x1::IfcWindowLiningProperties::declaration() const { return *IFC4X1_IfcWindowLiningProperties_type; } @@ -20765,9 +20765,9 @@ void Ifc4x1::IfcWindowPanelProperties::setOperationType(::Ifc4x1::IfcWindowPanel ::Ifc4x1::IfcWindowPanelPositionEnum::Value Ifc4x1::IfcWindowPanelProperties::PanelPosition() const { return ::Ifc4x1::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x1::IfcWindowPanelProperties::setPanelPosition(::Ifc4x1::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x1::IfcWindowPanelProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x1::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x1::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcWindowPanelProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x1::IfcShapeAspect* Ifc4x1::IfcWindowPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x1::IfcShapeAspect>(true); } void Ifc4x1::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc4x1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -20807,9 +20807,9 @@ void Ifc4x1::IfcWindowType::setPredefinedType(::Ifc4x1::IfcWindowTypeEnum::Value ::Ifc4x1::IfcWindowTypePartitioningEnum::Value Ifc4x1::IfcWindowType::PartitioningType() const { return ::Ifc4x1::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(10)); } void Ifc4x1::IfcWindowType::setPartitioningType(::Ifc4x1::IfcWindowTypePartitioningEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x1::IfcWindowTypePartitioningEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x1::IfcWindowType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x1::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x1::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x1::IfcWindowType::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x1::IfcWindowType::declaration() const { return *IFC4X1_IfcWindowType_type; } @@ -20819,11 +20819,11 @@ Ifc4x1::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4x1::IfcOwner // Function implementations for IfcWorkCalendar boost::optional< aggregate_of< ::Ifc4x1::IfcWorkTime >::ptr > Ifc4x1::IfcWorkCalendar::WorkingTimes() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x1::IfcWorkTime >(); } -void Ifc4x1::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x1::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x1::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x1::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcWorkTime >::ptr > Ifc4x1::IfcWorkCalendar::ExceptionTimes() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x1::IfcWorkTime >(); } -void Ifc4x1::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x1::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x1::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x1::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x1::IfcWorkCalendarTypeEnum::Value > Ifc4x1::IfcWorkCalendar::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x1::IfcWorkCalendarTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x1::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x1::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWorkCalendarTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x1::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x1::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWorkCalendarTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcWorkCalendar::declaration() const { return *IFC4X1_IfcWorkCalendar_type; } @@ -20835,17 +20835,17 @@ Ifc4x1::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4x1::IfcO std::string Ifc4x1::IfcWorkControl::CreationDate() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x1::IfcWorkControl::setCreationDate(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x1::IfcPerson >::ptr > Ifc4x1::IfcWorkControl::Creators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x1::IfcPerson >(); } -void Ifc4x1::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x1::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x1::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x1::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x1::IfcWorkControl::Purpose() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x1::IfcWorkControl::Duration() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x1::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x1::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x1::IfcWorkControl::TotalFloat() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x1::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x1::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } std::string Ifc4x1::IfcWorkControl::StartTime() const { std::string v = *data_->getArgument(11); return v; } void Ifc4x1::IfcWorkControl::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x1::IfcWorkControl::FinishTime() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x1::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x1::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x1::IfcWorkControl::declaration() const { return *IFC4X1_IfcWorkControl_type; } @@ -20855,7 +20855,7 @@ Ifc4x1::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4x1::IfcOwn // Function implementations for IfcWorkPlan boost::optional< ::Ifc4x1::IfcWorkPlanTypeEnum::Value > Ifc4x1::IfcWorkPlan::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x1::IfcWorkPlanTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x1::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x1::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWorkPlanTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x1::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x1::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWorkPlanTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x1::IfcWorkPlan::declaration() const { return *IFC4X1_IfcWorkPlan_type; } @@ -20865,7 +20865,7 @@ Ifc4x1::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4x1::IfcOwnerHist // Function implementations for IfcWorkSchedule boost::optional< ::Ifc4x1::IfcWorkScheduleTypeEnum::Value > Ifc4x1::IfcWorkSchedule::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x1::IfcWorkScheduleTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x1::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x1::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWorkScheduleTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x1::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x1::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x1::IfcWorkScheduleTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x1::IfcWorkSchedule::declaration() const { return *IFC4X1_IfcWorkSchedule_type; } @@ -20877,9 +20877,9 @@ Ifc4x1::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4x1::IfcO ::Ifc4x1::IfcRecurrencePattern* Ifc4x1::IfcWorkTime::RecurrencePattern() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x1::IfcRecurrencePattern>(true); } void Ifc4x1::IfcWorkTime::setRecurrencePattern(::Ifc4x1::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x1::IfcWorkTime::Start() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x1::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x1::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x1::IfcWorkTime::Finish() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x1::IfcWorkTime::declaration() const { return *IFC4X1_IfcWorkTime_type; } @@ -20897,9 +20897,9 @@ void Ifc4x1::IfcZShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc4x1::IfcZShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x1::IfcZShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x1::IfcZShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x1::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x1::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x1::IfcZShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x1::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x1::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x1::IfcZShapeProfileDef::declaration() const { return *IFC4X1_IfcZShapeProfileDef_type; } @@ -20909,7 +20909,7 @@ Ifc4x1::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4x1::IfcProfileTypeEnum::V // Function implementations for IfcZone boost::optional< std::string > Ifc4x1::IfcZone::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x1::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x1::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x1::IfcZone::declaration() const { return *IFC4X1_IfcZone_type; } diff --git a/src/ifcparse/Ifc4x1.h b/src/ifcparse/Ifc4x1.h index b11950332e..c2e6ba7490 100644 --- a/src/ifcparse/Ifc4x1.h +++ b/src/ifcparse/Ifc4x1.h @@ -42,7 +42,9 @@ struct Ifc4x1 { -static const IfcParse::schema_definition& get_schema(); +IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); + +IFC_PARSE_API static void clear_schema(); static const char* const Identifier; diff --git a/src/ifcparse/Ifc4x2-schema.cpp b/src/ifcparse/Ifc4x2-schema.cpp index 100ce7795f..0a9f35563f 100644 --- a/src/ifcparse/Ifc4x2-schema.cpp +++ b/src/ifcparse/Ifc4x2-schema.cpp @@ -15808,9 +15808,16 @@ IfcParse::schema_definition* IFC4X2_populate_schema() { #pragma optimize("", on) #endif -const schema_definition& Ifc4x2::get_schema() { +static std::unique_ptr schema; - static const schema_definition* s = IFC4X2_populate_schema(); - return *s; +void Ifc4x2::clear_schema() { + schema.reset(); +} + +const schema_definition& Ifc4x2::get_schema() { + if (!schema) { + schema.reset(IFC4X2_populate_schema()); + } + return *schema; } diff --git a/src/ifcparse/Ifc4x2.cpp b/src/ifcparse/Ifc4x2.cpp index da2bd2f0c9..3e31975014 100644 --- a/src/ifcparse/Ifc4x2.cpp +++ b/src/ifcparse/Ifc4x2.cpp @@ -11635,11 +11635,11 @@ Ifc4x2::IfcWarpingMomentMeasure::operator double() const { return *data_->getArg // Function implementations for IfcActionRequest boost::optional< ::Ifc4x2::IfcActionRequestTypeEnum::Value > Ifc4x2::IfcActionRequest::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x2::IfcActionRequestTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x2::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x2::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcActionRequestTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x2::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x2::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcActionRequestTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcActionRequest::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcActionRequest::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcActionRequest::declaration() const { return *IFC4X2_IfcActionRequest_type; } @@ -11662,9 +11662,9 @@ Ifc4x2::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* v ::Ifc4x2::IfcRoleEnum::Value Ifc4x2::IfcActorRole::Role() const { return ::Ifc4x2::IfcRoleEnum::FromString(*data_->getArgument(0)); } void Ifc4x2::IfcActorRole::setRole(::Ifc4x2::IfcRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcRoleEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcActorRole::UserDefinedRole() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcActorRole::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcExternalReferenceRelationship::list::ptr Ifc4x2::IfcActorRole::HasExternalReference() const { return data_->getInverse(IFC4X2_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -11675,7 +11675,7 @@ Ifc4x2::IfcActorRole::IfcActorRole(::Ifc4x2::IfcRoleEnum::Value v1_Role, boost:: // Function implementations for IfcActuator boost::optional< ::Ifc4x2::IfcActuatorTypeEnum::Value > Ifc4x2::IfcActuator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcActuatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x2::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcActuatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x2::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcActuatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcActuator::declaration() const { return *IFC4X2_IfcActuator_type; } @@ -11695,11 +11695,11 @@ Ifc4x2::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4x2::IfcO // Function implementations for IfcAddress boost::optional< ::Ifc4x2::IfcAddressTypeEnum::Value > Ifc4x2::IfcAddress::Purpose() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } return ::Ifc4x2::IfcAddressTypeEnum::FromString(*data_->getArgument(0)); } -void Ifc4x2::IfcAddress::setPurpose(boost::optional< ::Ifc4x2::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAddressTypeEnum::ToString(*v)));data_->setArgument(0,attr);} } +void Ifc4x2::IfcAddress::setPurpose(boost::optional< ::Ifc4x2::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAddressTypeEnum::ToString(*v)));}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcAddress::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcAddress::UserDefinedPurpose() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcPerson::list::ptr Ifc4x2::IfcAddress::OfPerson() const { return data_->getInverse(IFC4X2_IfcPerson_type, 7)->as(); } ::Ifc4x2::IfcOrganization::list::ptr Ifc4x2::IfcAddress::OfOrganization() const { return data_->getInverse(IFC4X2_IfcOrganization_type, 4)->as(); } @@ -11737,7 +11737,7 @@ Ifc4x2::IfcAdvancedFace::IfcAdvancedFace(aggregate_of< ::Ifc4x2::IfcFaceBound >: // Function implementations for IfcAirTerminal boost::optional< ::Ifc4x2::IfcAirTerminalTypeEnum::Value > Ifc4x2::IfcAirTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x2::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAirTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x2::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAirTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcAirTerminal::declaration() const { return *IFC4X2_IfcAirTerminal_type; } @@ -11747,7 +11747,7 @@ Ifc4x2::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4x2::IfcOwn // Function implementations for IfcAirTerminalBox boost::optional< ::Ifc4x2::IfcAirTerminalBoxTypeEnum::Value > Ifc4x2::IfcAirTerminalBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x2::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAirTerminalBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x2::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAirTerminalBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcAirTerminalBox::declaration() const { return *IFC4X2_IfcAirTerminalBox_type; } @@ -11777,7 +11777,7 @@ Ifc4x2::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::Ifc4x2 // Function implementations for IfcAirToAirHeatRecovery boost::optional< ::Ifc4x2::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4x2::IfcAirToAirHeatRecovery::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x2::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x2::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcAirToAirHeatRecovery::declaration() const { return *IFC4X2_IfcAirToAirHeatRecovery_type; } @@ -11797,7 +11797,7 @@ Ifc4x2::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string v1_ // Function implementations for IfcAlarm boost::optional< ::Ifc4x2::IfcAlarmTypeEnum::Value > Ifc4x2::IfcAlarm::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcAlarmTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x2::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAlarmTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x2::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAlarmTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcAlarm::declaration() const { return *IFC4X2_IfcAlarm_type; } @@ -11817,7 +11817,7 @@ Ifc4x2::IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHi // Function implementations for IfcAlignment boost::optional< ::Ifc4x2::IfcAlignmentTypeEnum::Value > Ifc4x2::IfcAlignment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcAlignmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x2::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAlignmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x2::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAlignmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcAlignment::declaration() const { return *IFC4X2_IfcAlignment_type; } @@ -11827,7 +11827,7 @@ Ifc4x2::IfcAlignment::IfcAlignment(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHi // Function implementations for IfcAlignment2DHorizontal boost::optional< double > Ifc4x2::IfcAlignment2DHorizontal::StartDistAlong() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcAlignment2DHorizontal::setStartDistAlong(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcAlignment2DHorizontal::setStartDistAlong(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc4x2::IfcAlignment2DHorizontalSegment >::ptr Ifc4x2::IfcAlignment2DHorizontal::Segments() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x2::IfcAlignment2DHorizontalSegment >(); } void Ifc4x2::IfcAlignment2DHorizontal::setSegments(aggregate_of< ::Ifc4x2::IfcAlignment2DHorizontalSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -11851,11 +11851,11 @@ Ifc4x2::IfcAlignment2DHorizontalSegment::IfcAlignment2DHorizontalSegment(boost:: // Function implementations for IfcAlignment2DSegment boost::optional< bool > Ifc4x2::IfcAlignment2DSegment::TangentialContinuity() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } bool v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcAlignment2DSegment::setTangentialContinuity(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcAlignment2DSegment::setTangentialContinuity(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcAlignment2DSegment::StartTag() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcAlignment2DSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcAlignment2DSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcAlignment2DSegment::EndTag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcAlignment2DSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcAlignment2DSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcAlignment2DSegment::declaration() const { return *IFC4X2_IfcAlignment2DSegment_type; } @@ -11929,7 +11929,7 @@ void Ifc4x2::IfcAlignmentCurve::setHorizontal(::Ifc4x2::IfcAlignment2DHorizontal ::Ifc4x2::IfcAlignment2DVertical* Ifc4x2::IfcAlignmentCurve::Vertical() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x2::IfcAlignment2DVertical>(true); } void Ifc4x2::IfcAlignmentCurve::setVertical(::Ifc4x2::IfcAlignment2DVertical* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcAlignmentCurve::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcAlignmentCurve::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcAlignmentCurve::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcAlignmentCurve::declaration() const { return *IFC4X2_IfcAlignmentCurve_type; } @@ -11950,7 +11950,7 @@ Ifc4x2::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4x2::IfcOwner ::Ifc4x2::IfcCurve* Ifc4x2::IfcAnnotationFillArea::OuterBoundary() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x2::IfcCurve>(true); } void Ifc4x2::IfcAnnotationFillArea::setOuterBoundary(::Ifc4x2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcCurve >::ptr > Ifc4x2::IfcAnnotationFillArea::InnerBoundaries() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x2::IfcCurve >(); } -void Ifc4x2::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x2::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x2::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x2::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x2::IfcAnnotationFillArea::declaration() const { return *IFC4X2_IfcAnnotationFillArea_type; } @@ -11976,25 +11976,25 @@ Ifc4x2::IfcApplication::IfcApplication(::Ifc4x2::IfcOrganization* v1_Application // Function implementations for IfcAppliedValue boost::optional< std::string > Ifc4x2::IfcAppliedValue::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcAppliedValue::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x2::IfcAppliedValueSelect* Ifc4x2::IfcAppliedValue::AppliedValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x2::IfcAppliedValueSelect>(true); } void Ifc4x2::IfcAppliedValue::setAppliedValue(::Ifc4x2::IfcAppliedValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x2::IfcMeasureWithUnit* Ifc4x2::IfcAppliedValue::UnitBasis() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcMeasureWithUnit>(true); } void Ifc4x2::IfcAppliedValue::setUnitBasis(::Ifc4x2::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcAppliedValue::ApplicableDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcAppliedValue::FixedUntilDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcAppliedValue::Category() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcAppliedValue::Condition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x2::IfcArithmeticOperatorEnum::Value > Ifc4x2::IfcAppliedValue::ArithmeticOperator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcArithmeticOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x2::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcArithmeticOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x2::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcArithmeticOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcAppliedValue >::ptr > Ifc4x2::IfcAppliedValue::Components() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x2::IfcAppliedValue >(); } -void Ifc4x2::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x2::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x2::IfcExternalReferenceRelationship::list::ptr Ifc4x2::IfcAppliedValue::HasExternalReference() const { return data_->getInverse(IFC4X2_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -12005,19 +12005,19 @@ Ifc4x2::IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_Name, // Function implementations for IfcApproval boost::optional< std::string > Ifc4x2::IfcApproval::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcApproval::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcApproval::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x2::IfcApproval::TimeOfApproval() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcApproval::Status() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcApproval::Level() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcApproval::Qualifier() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x2::IfcActorSelect* Ifc4x2::IfcApproval::RequestingApproval() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x2::IfcActorSelect>(true); } void Ifc4x2::IfcApproval::setRequestingApproval(::Ifc4x2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x2::IfcActorSelect* Ifc4x2::IfcApproval::GivingApproval() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x2::IfcActorSelect>(true); } @@ -12078,7 +12078,7 @@ Ifc4x2::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::Ifc4x // Function implementations for IfcAsset boost::optional< std::string > Ifc4x2::IfcAsset::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x2::IfcCostValue* Ifc4x2::IfcAsset::OriginalValue() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcCostValue>(true); } void Ifc4x2::IfcAsset::setOriginalValue(::Ifc4x2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } ::Ifc4x2::IfcCostValue* Ifc4x2::IfcAsset::CurrentValue() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x2::IfcCostValue>(true); } @@ -12092,7 +12092,7 @@ void Ifc4x2::IfcAsset::setUser(::Ifc4x2::IfcActorSelect* v) { {IfcWrite::IfcWrit ::Ifc4x2::IfcPerson* Ifc4x2::IfcAsset::ResponsiblePerson() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x2::IfcPerson>(true); } void Ifc4x2::IfcAsset::setResponsiblePerson(::Ifc4x2::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x2::IfcAsset::IncorporationDate() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x2::IfcCostValue* Ifc4x2::IfcAsset::DepreciatedValue() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x2::IfcCostValue>(true); } void Ifc4x2::IfcAsset::setDepreciatedValue(::Ifc4x2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -12112,21 +12112,21 @@ void Ifc4x2::IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { {IfcWrit double Ifc4x2::IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x2::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } double Ifc4x2::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { double v = *data_->getArgument(8); return v; } void Ifc4x2::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< double > Ifc4x2::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x2::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x2::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x2::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x2::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x2::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x2::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x2::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } const IfcParse::entity& Ifc4x2::IfcAsymmetricIShapeProfileDef::declaration() const { return *IFC4X2_IfcAsymmetricIShapeProfileDef_type; } @@ -12136,7 +12136,7 @@ Ifc4x2::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4x2::I // Function implementations for IfcAudioVisualAppliance boost::optional< ::Ifc4x2::IfcAudioVisualApplianceTypeEnum::Value > Ifc4x2::IfcAudioVisualAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x2::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAudioVisualApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x2::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAudioVisualApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcAudioVisualAppliance::declaration() const { return *IFC4X2_IfcAudioVisualAppliance_type; } @@ -12260,7 +12260,7 @@ Ifc4x2::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegree, i // Function implementations for IfcBeam boost::optional< ::Ifc4x2::IfcBeamTypeEnum::Value > Ifc4x2::IfcBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x2::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x2::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcBeam::declaration() const { return *IFC4X2_IfcBeam_type; } @@ -12288,7 +12288,7 @@ Ifc4x2::IfcBeamType::IfcBeamType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHist // Function implementations for IfcBearing boost::optional< ::Ifc4x2::IfcBearingTypeEnum::Value > Ifc4x2::IfcBearing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcBearingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x2::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBearingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x2::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBearingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcBearing::declaration() const { return *IFC4X2_IfcBearing_type; } @@ -12334,7 +12334,7 @@ Ifc4x2::IfcBlock::IfcBlock(::Ifc4x2::IfcAxis2Placement3D* v1_Position, double v2 // Function implementations for IfcBoiler boost::optional< ::Ifc4x2::IfcBoilerTypeEnum::Value > Ifc4x2::IfcBoiler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcBoilerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x2::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBoilerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x2::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBoilerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcBoiler::declaration() const { return *IFC4X2_IfcBoiler_type; } @@ -12376,7 +12376,7 @@ Ifc4x2::IfcBooleanResult::IfcBooleanResult(::Ifc4x2::IfcBooleanOperator::Value v // Function implementations for IfcBoundaryCondition boost::optional< std::string > Ifc4x2::IfcBoundaryCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x2::IfcBoundaryCondition::declaration() const { return *IFC4X2_IfcBoundaryCondition_type; } @@ -12501,7 +12501,7 @@ Ifc4x2::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4x2::IfcSurface* v1_BaseSurfac // Function implementations for IfcBridge boost::optional< ::Ifc4x2::IfcBridgeTypeEnum::Value > Ifc4x2::IfcBridge::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x2::IfcBridgeTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x2::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x2::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBridgeTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x2::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x2::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBridgeTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcBridge::declaration() const { return *IFC4X2_IfcBridge_type; } @@ -12511,7 +12511,7 @@ Ifc4x2::IfcBridge::IfcBridge(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* // Function implementations for IfcBridgePart boost::optional< ::Ifc4x2::IfcBridgePartTypeEnum::Value > Ifc4x2::IfcBridgePart::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x2::IfcBridgePartTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x2::IfcBridgePart::setPredefinedType(boost::optional< ::Ifc4x2::IfcBridgePartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBridgePartTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x2::IfcBridgePart::setPredefinedType(boost::optional< ::Ifc4x2::IfcBridgePartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBridgePartTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcBridgePart::declaration() const { return *IFC4X2_IfcBridgePart_type; } @@ -12521,9 +12521,9 @@ Ifc4x2::IfcBridgePart::IfcBridgePart(std::string v1_GlobalId, ::Ifc4x2::IfcOwner // Function implementations for IfcBuilding boost::optional< double > Ifc4x2::IfcBuilding::ElevationOfRefHeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcBuilding::ElevationOfTerrain() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x2::IfcPostalAddress* Ifc4x2::IfcBuilding::BuildingAddress() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x2::IfcPostalAddress>(true); } void Ifc4x2::IfcBuilding::setBuildingAddress(::Ifc4x2::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } @@ -12543,7 +12543,7 @@ Ifc4x2::IfcBuildingElement::IfcBuildingElement(std::string v1_GlobalId, ::Ifc4x2 // Function implementations for IfcBuildingElementPart boost::optional< ::Ifc4x2::IfcBuildingElementPartTypeEnum::Value > Ifc4x2::IfcBuildingElementPart::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x2::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBuildingElementPartTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x2::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBuildingElementPartTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcBuildingElementPart::declaration() const { return *IFC4X2_IfcBuildingElementPart_type; } @@ -12563,7 +12563,7 @@ Ifc4x2::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v1_Gl // Function implementations for IfcBuildingElementProxy boost::optional< ::Ifc4x2::IfcBuildingElementProxyTypeEnum::Value > Ifc4x2::IfcBuildingElementProxy::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x2::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBuildingElementProxyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x2::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBuildingElementProxyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcBuildingElementProxy::declaration() const { return *IFC4X2_IfcBuildingElementProxy_type; } @@ -12591,7 +12591,7 @@ Ifc4x2::IfcBuildingElementType::IfcBuildingElementType(std::string v1_GlobalId, // Function implementations for IfcBuildingStorey boost::optional< double > Ifc4x2::IfcBuildingStorey::Elevation() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcBuildingStorey::declaration() const { return *IFC4X2_IfcBuildingStorey_type; } @@ -12601,9 +12601,9 @@ Ifc4x2::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4x2:: // Function implementations for IfcBuildingSystem boost::optional< ::Ifc4x2::IfcBuildingSystemTypeEnum::Value > Ifc4x2::IfcBuildingSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x2::IfcBuildingSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x2::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x2::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBuildingSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x2::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x2::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBuildingSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcBuildingSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x2::IfcBuildingSystem::declaration() const { return *IFC4X2_IfcBuildingSystem_type; } @@ -12613,7 +12613,7 @@ Ifc4x2::IfcBuildingSystem::IfcBuildingSystem(std::string v1_GlobalId, ::Ifc4x2:: // Function implementations for IfcBurner boost::optional< ::Ifc4x2::IfcBurnerTypeEnum::Value > Ifc4x2::IfcBurner::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcBurnerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x2::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBurnerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x2::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcBurnerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcBurner::declaration() const { return *IFC4X2_IfcBurner_type; } @@ -12641,7 +12641,7 @@ void Ifc4x2::IfcCShapeProfileDef::setWallThickness(double v) { {IfcWrite::IfcWri double Ifc4x2::IfcCShapeProfileDef::Girth() const { double v = *data_->getArgument(6); return v; } void Ifc4x2::IfcCShapeProfileDef::setGirth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcCShapeProfileDef::InternalFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x2::IfcCShapeProfileDef::declaration() const { return *IFC4X2_IfcCShapeProfileDef_type; } @@ -12651,7 +12651,7 @@ Ifc4x2::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4x2::IfcProfileTypeEnum::V // Function implementations for IfcCableCarrierFitting boost::optional< ::Ifc4x2::IfcCableCarrierFittingTypeEnum::Value > Ifc4x2::IfcCableCarrierFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x2::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCableCarrierFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x2::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCableCarrierFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCableCarrierFitting::declaration() const { return *IFC4X2_IfcCableCarrierFitting_type; } @@ -12671,7 +12671,7 @@ Ifc4x2::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v1_Gl // Function implementations for IfcCableCarrierSegment boost::optional< ::Ifc4x2::IfcCableCarrierSegmentTypeEnum::Value > Ifc4x2::IfcCableCarrierSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x2::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCableCarrierSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x2::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCableCarrierSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCableCarrierSegment::declaration() const { return *IFC4X2_IfcCableCarrierSegment_type; } @@ -12691,7 +12691,7 @@ Ifc4x2::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v1_Gl // Function implementations for IfcCableFitting boost::optional< ::Ifc4x2::IfcCableFittingTypeEnum::Value > Ifc4x2::IfcCableFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCableFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x2::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCableFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x2::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCableFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCableFitting::declaration() const { return *IFC4X2_IfcCableFitting_type; } @@ -12711,7 +12711,7 @@ Ifc4x2::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCableSegment boost::optional< ::Ifc4x2::IfcCableSegmentTypeEnum::Value > Ifc4x2::IfcCableSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x2::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCableSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x2::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCableSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCableSegment::declaration() const { return *IFC4X2_IfcCableSegment_type; } @@ -12731,7 +12731,7 @@ Ifc4x2::IfcCableSegmentType::IfcCableSegmentType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCaissonFoundation boost::optional< ::Ifc4x2::IfcCaissonFoundationTypeEnum::Value > Ifc4x2::IfcCaissonFoundation::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCaissonFoundationTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x2::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCaissonFoundationTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x2::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCaissonFoundationTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCaissonFoundation::declaration() const { return *IFC4X2_IfcCaissonFoundation_type; } @@ -12771,7 +12771,7 @@ Ifc4x2::IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricRepresentat std::vector< std::vector< double > > Ifc4x2::IfcCartesianPointList2D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x2::IfcCartesianPointList2D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcCartesianPointList2D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x2::IfcCartesianPointList2D::declaration() const { return *IFC4X2_IfcCartesianPointList2D_type; } @@ -12783,7 +12783,7 @@ Ifc4x2::IfcCartesianPointList2D::IfcCartesianPointList2D(std::vector< std::vecto std::vector< std::vector< double > > Ifc4x2::IfcCartesianPointList3D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x2::IfcCartesianPointList3D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcCartesianPointList3D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x2::IfcCartesianPointList3D::declaration() const { return *IFC4X2_IfcCartesianPointList3D_type; } @@ -12799,7 +12799,7 @@ void Ifc4x2::IfcCartesianTransformationOperator::setAxis2(::Ifc4x2::IfcDirection ::Ifc4x2::IfcCartesianPoint* Ifc4x2::IfcCartesianTransformationOperator::LocalOrigin() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x2::IfcCartesianPoint>(true); } void Ifc4x2::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc4x2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcCartesianTransformationOperator::Scale() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcCartesianTransformationOperator::declaration() const { return *IFC4X2_IfcCartesianTransformationOperator_type; } @@ -12817,7 +12817,7 @@ Ifc4x2::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator // Function implementations for IfcCartesianTransformationOperator2DnonUniform boost::optional< double > Ifc4x2::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IFC4X2_IfcCartesianTransformationOperator2DnonUniform_type; } @@ -12837,9 +12837,9 @@ Ifc4x2::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator // Function implementations for IfcCartesianTransformationOperator3DnonUniform boost::optional< double > Ifc4x2::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x2::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IFC4X2_IfcCartesianTransformationOperator3DnonUniform_type; } @@ -12859,7 +12859,7 @@ Ifc4x2::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4x2::IfcProfileTyp // Function implementations for IfcChiller boost::optional< ::Ifc4x2::IfcChillerTypeEnum::Value > Ifc4x2::IfcChiller::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcChillerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x2::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcChillerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x2::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcChillerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcChiller::declaration() const { return *IFC4X2_IfcChiller_type; } @@ -12879,7 +12879,7 @@ Ifc4x2::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4x2::IfcOwn // Function implementations for IfcChimney boost::optional< ::Ifc4x2::IfcChimneyTypeEnum::Value > Ifc4x2::IfcChimney::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcChimneyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x2::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcChimneyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x2::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcChimneyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcChimney::declaration() const { return *IFC4X2_IfcChimney_type; } @@ -12957,19 +12957,19 @@ Ifc4x2::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcClassification boost::optional< std::string > Ifc4x2::IfcClassification::Source() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcClassification::Edition() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcClassification::EditionDate() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::string Ifc4x2::IfcClassification::Name() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x2::IfcClassification::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcClassification::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcClassification::Location() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcClassification::ReferenceTokens() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x2::IfcRelAssociatesClassification::list::ptr Ifc4x2::IfcClassification::ClassificationForObjects() const { return data_->getInverse(IFC4X2_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x2::IfcClassificationReference::list::ptr Ifc4x2::IfcClassification::HasReferences() const { return data_->getInverse(IFC4X2_IfcClassificationReference_type, 3)->as(); } @@ -12983,9 +12983,9 @@ Ifc4x2::IfcClassification::IfcClassification(boost::optional< std::string > v1_S ::Ifc4x2::IfcClassificationReferenceSelect* Ifc4x2::IfcClassificationReference::ReferencedSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcClassificationReferenceSelect>(true); } void Ifc4x2::IfcClassificationReference::setReferencedSource(::Ifc4x2::IfcClassificationReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcClassificationReference::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcClassificationReference::Sort() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x2::IfcRelAssociatesClassification::list::ptr Ifc4x2::IfcClassificationReference::ClassificationRefForObjects() const { return data_->getInverse(IFC4X2_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x2::IfcClassificationReference::list::ptr Ifc4x2::IfcClassificationReference::HasReferences() const { return data_->getInverse(IFC4X2_IfcClassificationReference_type, 3)->as(); } @@ -13005,7 +13005,7 @@ Ifc4x2::IfcClosedShell::IfcClosedShell(aggregate_of< ::Ifc4x2::IfcFace >::ptr v1 // Function implementations for IfcCoil boost::optional< ::Ifc4x2::IfcCoilTypeEnum::Value > Ifc4x2::IfcCoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x2::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x2::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCoil::declaration() const { return *IFC4X2_IfcCoil_type; } @@ -13049,7 +13049,7 @@ Ifc4x2::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double > > // Function implementations for IfcColourSpecification boost::optional< std::string > Ifc4x2::IfcColourSpecification::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x2::IfcColourSpecification::declaration() const { return *IFC4X2_IfcColourSpecification_type; } @@ -13059,7 +13059,7 @@ Ifc4x2::IfcColourSpecification::IfcColourSpecification(boost::optional< std::str // Function implementations for IfcColumn boost::optional< ::Ifc4x2::IfcColumnTypeEnum::Value > Ifc4x2::IfcColumn::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcColumnTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x2::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcColumnTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x2::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcColumnTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcColumn::declaration() const { return *IFC4X2_IfcColumn_type; } @@ -13087,7 +13087,7 @@ Ifc4x2::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4x2::IfcOwner // Function implementations for IfcCommunicationsAppliance boost::optional< ::Ifc4x2::IfcCommunicationsApplianceTypeEnum::Value > Ifc4x2::IfcCommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x2::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x2::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCommunicationsAppliance::declaration() const { return *IFC4X2_IfcCommunicationsAppliance_type; } @@ -13119,11 +13119,11 @@ Ifc4x2::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::optio // Function implementations for IfcComplexPropertyTemplate boost::optional< std::string > Ifc4x2::IfcComplexPropertyTemplate::UsageName() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< ::Ifc4x2::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4x2::IfcComplexPropertyTemplate::TemplateType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x2::IfcComplexPropertyTemplateTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x2::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x2::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x2::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x2::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcPropertyTemplate >::ptr > Ifc4x2::IfcComplexPropertyTemplate::HasPropertyTemplates() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x2::IfcPropertyTemplate >(); } -void Ifc4x2::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x2::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x2::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x2::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x2::IfcComplexPropertyTemplate::declaration() const { return *IFC4X2_IfcComplexPropertyTemplate_type; } @@ -13170,7 +13170,7 @@ Ifc4x2::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4x2::IfcTransiti aggregate_of< ::Ifc4x2::IfcProfileDef >::ptr Ifc4x2::IfcCompositeProfileDef::Profiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x2::IfcProfileDef >(); } void Ifc4x2::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc4x2::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x2::IfcCompositeProfileDef::Label() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcCompositeProfileDef::declaration() const { return *IFC4X2_IfcCompositeProfileDef_type; } @@ -13180,7 +13180,7 @@ Ifc4x2::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4x2::IfcProfileTypeE // Function implementations for IfcCompressor boost::optional< ::Ifc4x2::IfcCompressorTypeEnum::Value > Ifc4x2::IfcCompressor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCompressorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x2::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCompressorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x2::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCompressorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCompressor::declaration() const { return *IFC4X2_IfcCompressor_type; } @@ -13200,7 +13200,7 @@ Ifc4x2::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4x2:: // Function implementations for IfcCondenser boost::optional< ::Ifc4x2::IfcCondenserTypeEnum::Value > Ifc4x2::IfcCondenser::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCondenserTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x2::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCondenserTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x2::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCondenserTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCondenser::declaration() const { return *IFC4X2_IfcCondenser_type; } @@ -13260,11 +13260,11 @@ Ifc4x2::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEntity( // Function implementations for IfcConnectionPointEccentricity boost::optional< double > Ifc4x2::IfcConnectionPointEccentricity::EccentricityInX() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcConnectionPointEccentricity::EccentricityInY() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcConnectionPointEccentricity::EccentricityInZ() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcConnectionPointEccentricity::declaration() const { return *IFC4X2_IfcConnectionPointEccentricity_type; } @@ -13312,17 +13312,17 @@ Ifc4x2::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4x2::IfcSo std::string Ifc4x2::IfcConstraint::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x2::IfcConstraint::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcConstraint::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x2::IfcConstraintEnum::Value Ifc4x2::IfcConstraint::ConstraintGrade() const { return ::Ifc4x2::IfcConstraintEnum::FromString(*data_->getArgument(2)); } void Ifc4x2::IfcConstraint::setConstraintGrade(::Ifc4x2::IfcConstraintEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcConstraintEnum::ToString(v)));data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x2::IfcConstraint::ConstraintSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x2::IfcActorSelect* Ifc4x2::IfcConstraint::CreatingActor() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x2::IfcActorSelect>(true); } void Ifc4x2::IfcConstraint::setCreatingActor(::Ifc4x2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcConstraint::CreationTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcConstraint::UserDefinedGrade() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x2::IfcExternalReferenceRelationship::list::ptr Ifc4x2::IfcConstraint::HasExternalReferences() const { return data_->getInverse(IFC4X2_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x2::IfcResourceConstraintRelationship::list::ptr Ifc4x2::IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(IFC4X2_IfcResourceConstraintRelationship_type, 2)->as(); } @@ -13334,7 +13334,7 @@ Ifc4x2::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< std:: // Function implementations for IfcConstructionEquipmentResource boost::optional< ::Ifc4x2::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4x2::IfcConstructionEquipmentResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcConstructionEquipmentResource::declaration() const { return *IFC4X2_IfcConstructionEquipmentResource_type; } @@ -13354,7 +13354,7 @@ Ifc4x2::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceTy // Function implementations for IfcConstructionMaterialResource boost::optional< ::Ifc4x2::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4x2::IfcConstructionMaterialResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcConstructionMaterialResource::declaration() const { return *IFC4X2_IfcConstructionMaterialResource_type; } @@ -13374,7 +13374,7 @@ Ifc4x2::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType // Function implementations for IfcConstructionProductResource boost::optional< ::Ifc4x2::IfcConstructionProductResourceTypeEnum::Value > Ifc4x2::IfcConstructionProductResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcConstructionProductResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcConstructionProductResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcConstructionProductResource::declaration() const { return *IFC4X2_IfcConstructionProductResource_type; } @@ -13396,7 +13396,7 @@ Ifc4x2::IfcConstructionProductResourceType::IfcConstructionProductResourceType(s ::Ifc4x2::IfcResourceTime* Ifc4x2::IfcConstructionResource::Usage() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x2::IfcResourceTime>(true); } void Ifc4x2::IfcConstructionResource::setUsage(::Ifc4x2::IfcResourceTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcAppliedValue >::ptr > Ifc4x2::IfcConstructionResource::BaseCosts() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x2::IfcAppliedValue >(); } -void Ifc4x2::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x2::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x2::IfcPhysicalQuantity* Ifc4x2::IfcConstructionResource::BaseQuantity() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x2::IfcPhysicalQuantity>(true); } void Ifc4x2::IfcConstructionResource::setBaseQuantity(::Ifc4x2::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -13408,7 +13408,7 @@ Ifc4x2::IfcConstructionResource::IfcConstructionResource(std::string v1_GlobalId // Function implementations for IfcConstructionResourceType boost::optional< aggregate_of< ::Ifc4x2::IfcAppliedValue >::ptr > Ifc4x2::IfcConstructionResourceType::BaseCosts() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x2::IfcAppliedValue >(); } -void Ifc4x2::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x2::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x2::IfcPhysicalQuantity* Ifc4x2::IfcConstructionResourceType::BaseQuantity() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x2::IfcPhysicalQuantity>(true); } void Ifc4x2::IfcConstructionResourceType::setBaseQuantity(::Ifc4x2::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -13420,13 +13420,13 @@ Ifc4x2::IfcConstructionResourceType::IfcConstructionResourceType(std::string v1_ // Function implementations for IfcContext boost::optional< std::string > Ifc4x2::IfcContext::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcContext::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcContext::Phase() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcRepresentationContext >::ptr > Ifc4x2::IfcContext::RepresentationContexts() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x2::IfcRepresentationContext >(); } -void Ifc4x2::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x2::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x2::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x2::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x2::IfcUnitAssignment* Ifc4x2::IfcContext::UnitsInContext() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x2::IfcUnitAssignment>(true); } void Ifc4x2::IfcContext::setUnitsInContext(::Ifc4x2::IfcUnitAssignment* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -13451,7 +13451,7 @@ Ifc4x2::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4x2::IfcDimensiona // Function implementations for IfcControl boost::optional< std::string > Ifc4x2::IfcControl::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x2::IfcRelAssignsToControl::list::ptr Ifc4x2::IfcControl::Controls() const { return data_->getInverse(IFC4X2_IfcRelAssignsToControl_type, 6)->as(); } @@ -13462,7 +13462,7 @@ Ifc4x2::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistor // Function implementations for IfcController boost::optional< ::Ifc4x2::IfcControllerTypeEnum::Value > Ifc4x2::IfcController::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcControllerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcController::setPredefinedType(boost::optional< ::Ifc4x2::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcControllerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcController::setPredefinedType(boost::optional< ::Ifc4x2::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcControllerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcController::declaration() const { return *IFC4X2_IfcController_type; } @@ -13505,7 +13505,7 @@ Ifc4x2::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(::Ifc // Function implementations for IfcCooledBeam boost::optional< ::Ifc4x2::IfcCooledBeamTypeEnum::Value > Ifc4x2::IfcCooledBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x2::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCooledBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x2::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCooledBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCooledBeam::declaration() const { return *IFC4X2_IfcCooledBeam_type; } @@ -13525,7 +13525,7 @@ Ifc4x2::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4x2:: // Function implementations for IfcCoolingTower boost::optional< ::Ifc4x2::IfcCoolingTowerTypeEnum::Value > Ifc4x2::IfcCoolingTower::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x2::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCoolingTowerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x2::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCoolingTowerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCoolingTower::declaration() const { return *IFC4X2_IfcCoolingTower_type; } @@ -13559,11 +13559,11 @@ Ifc4x2::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4x2::IfcCoordinateRe std::string Ifc4x2::IfcCoordinateReferenceSystem::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x2::IfcCoordinateReferenceSystem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcCoordinateReferenceSystem::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x2::IfcCoordinateReferenceSystem::VerticalDatum() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x2::IfcCoordinateOperation::list::ptr Ifc4x2::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return data_->getInverse(IFC4X2_IfcCoordinateOperation_type, 0)->as(); } @@ -13574,11 +13574,11 @@ Ifc4x2::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(std::string v // Function implementations for IfcCostItem boost::optional< ::Ifc4x2::IfcCostItemTypeEnum::Value > Ifc4x2::IfcCostItem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCostItemTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x2::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x2::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCostItemTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x2::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x2::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCostItemTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcCostValue >::ptr > Ifc4x2::IfcCostItem::CostValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x2::IfcCostValue >(); } -void Ifc4x2::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x2::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x2::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x2::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcPhysicalQuantity >::ptr > Ifc4x2::IfcCostItem::CostQuantities() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x2::IfcPhysicalQuantity >(); } -void Ifc4x2::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x2::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x2::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x2::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCostItem::declaration() const { return *IFC4X2_IfcCostItem_type; } @@ -13588,13 +13588,13 @@ Ifc4x2::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHist // Function implementations for IfcCostSchedule boost::optional< ::Ifc4x2::IfcCostScheduleTypeEnum::Value > Ifc4x2::IfcCostSchedule::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCostScheduleTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x2::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x2::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCostScheduleTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x2::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x2::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCostScheduleTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcCostSchedule::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcCostSchedule::SubmittedOn() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x2::IfcCostSchedule::UpdateDate() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcCostSchedule::declaration() const { return *IFC4X2_IfcCostSchedule_type; } @@ -13612,7 +13612,7 @@ Ifc4x2::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, boost // Function implementations for IfcCovering boost::optional< ::Ifc4x2::IfcCoveringTypeEnum::Value > Ifc4x2::IfcCovering::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x2::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCoveringTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x2::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCoveringTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x2::IfcRelCoversSpaces::list::ptr Ifc4x2::IfcCovering::CoversSpaces() const { return data_->getInverse(IFC4X2_IfcRelCoversSpaces_type, 5)->as(); } ::Ifc4x2::IfcRelCoversBldgElements::list::ptr Ifc4x2::IfcCovering::CoversElements() const { return data_->getInverse(IFC4X2_IfcRelCoversBldgElements_type, 5)->as(); } @@ -13634,7 +13634,7 @@ Ifc4x2::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4x2::IfcO // Function implementations for IfcCrewResource boost::optional< ::Ifc4x2::IfcCrewResourceTypeEnum::Value > Ifc4x2::IfcCrewResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCrewResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCrewResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcCrewResource::declaration() const { return *IFC4X2_IfcCrewResource_type; } @@ -13680,7 +13680,7 @@ void Ifc4x2::IfcCurrencyRelationship::setRelatedMonetaryUnit(::Ifc4x2::IfcMoneta double Ifc4x2::IfcCurrencyRelationship::ExchangeRate() const { double v = *data_->getArgument(4); return v; } void Ifc4x2::IfcCurrencyRelationship::setExchangeRate(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcCurrencyRelationship::RateDateTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x2::IfcLibraryInformation* Ifc4x2::IfcCurrencyRelationship::RateSource() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcLibraryInformation>(true); } void Ifc4x2::IfcCurrencyRelationship::setRateSource(::Ifc4x2::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -13692,7 +13692,7 @@ Ifc4x2::IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< std::s // Function implementations for IfcCurtainWall boost::optional< ::Ifc4x2::IfcCurtainWallTypeEnum::Value > Ifc4x2::IfcCurtainWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x2::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCurtainWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x2::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCurtainWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcCurtainWall::declaration() const { return *IFC4X2_IfcCurtainWall_type; } @@ -13768,7 +13768,7 @@ void Ifc4x2::IfcCurveStyle::setCurveWidth(::Ifc4x2::IfcSizeSelect* v) { {IfcWrit ::Ifc4x2::IfcColour* Ifc4x2::IfcCurveStyle::CurveColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcColour>(true); } void Ifc4x2::IfcCurveStyle::setCurveColour(::Ifc4x2::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x2::IfcCurveStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcCurveStyle::declaration() const { return *IFC4X2_IfcCurveStyle_type; } @@ -13778,7 +13778,7 @@ Ifc4x2::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, ::I // Function implementations for IfcCurveStyleFont boost::optional< std::string > Ifc4x2::IfcCurveStyleFont::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc4x2::IfcCurveStyleFontPattern >::ptr Ifc4x2::IfcCurveStyleFont::PatternList() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x2::IfcCurveStyleFontPattern >(); } void Ifc4x2::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc4x2::IfcCurveStyleFontPattern >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -13790,7 +13790,7 @@ Ifc4x2::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > v1_N // Function implementations for IfcCurveStyleFontAndScaling boost::optional< std::string > Ifc4x2::IfcCurveStyleFontAndScaling::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x2::IfcCurveStyleFontSelect* Ifc4x2::IfcCurveStyleFontAndScaling::CurveFont() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x2::IfcCurveStyleFontSelect>(true); } void Ifc4x2::IfcCurveStyleFontAndScaling::setCurveFont(::Ifc4x2::IfcCurveStyleFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } double Ifc4x2::IfcCurveStyleFontAndScaling::CurveFontScaling() const { double v = *data_->getArgument(2); return v; } @@ -13826,7 +13826,7 @@ Ifc4x2::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4x2::IfcAxis2Placement // Function implementations for IfcDamper boost::optional< ::Ifc4x2::IfcDamperTypeEnum::Value > Ifc4x2::IfcDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x2::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x2::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcDamper::declaration() const { return *IFC4X2_IfcDamper_type; } @@ -13866,7 +13866,7 @@ void Ifc4x2::IfcDerivedProfileDef::setParentProfile(::Ifc4x2::IfcProfileDef* v) ::Ifc4x2::IfcCartesianTransformationOperator2D* Ifc4x2::IfcDerivedProfileDef::Operator() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcCartesianTransformationOperator2D>(true); } void Ifc4x2::IfcDerivedProfileDef::setOperator(::Ifc4x2::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcDerivedProfileDef::Label() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcDerivedProfileDef::declaration() const { return *IFC4X2_IfcDerivedProfileDef_type; } @@ -13880,7 +13880,7 @@ void Ifc4x2::IfcDerivedUnit::setElements(aggregate_of< ::Ifc4x2::IfcDerivedUnitE ::Ifc4x2::IfcDerivedUnitEnum::Value Ifc4x2::IfcDerivedUnit::UnitType() const { return ::Ifc4x2::IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); } void Ifc4x2::IfcDerivedUnit::setUnitType(::Ifc4x2::IfcDerivedUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcDerivedUnitEnum::ToString(v)));data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcDerivedUnit::UserDefinedType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcDerivedUnit::declaration() const { return *IFC4X2_IfcDerivedUnit_type; } @@ -13934,7 +13934,7 @@ Ifc4x2::IfcDirection::IfcDirection(std::vector< double > /*[2:3]*/ v1_DirectionR // Function implementations for IfcDiscreteAccessory boost::optional< ::Ifc4x2::IfcDiscreteAccessoryTypeEnum::Value > Ifc4x2::IfcDiscreteAccessory::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x2::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDiscreteAccessoryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x2::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDiscreteAccessoryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcDiscreteAccessory::declaration() const { return *IFC4X2_IfcDiscreteAccessory_type; } @@ -13956,13 +13956,13 @@ Ifc4x2::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_Global double Ifc4x2::IfcDistanceExpression::DistanceAlong() const { double v = *data_->getArgument(0); return v; } void Ifc4x2::IfcDistanceExpression::setDistanceAlong(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x2::IfcDistanceExpression::OffsetLateral() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcDistanceExpression::OffsetVertical() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcDistanceExpression::OffsetLongitudinal() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x2::IfcDistanceExpression::AlongHorizontal() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcDistanceExpression::setAlongHorizontal(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcDistanceExpression::setAlongHorizontal(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcDistanceExpression::declaration() const { return *IFC4X2_IfcDistanceExpression_type; } @@ -13972,7 +13972,7 @@ Ifc4x2::IfcDistanceExpression::IfcDistanceExpression(double v1_DistanceAlong, bo // Function implementations for IfcDistributionChamberElement boost::optional< ::Ifc4x2::IfcDistributionChamberElementTypeEnum::Value > Ifc4x2::IfcDistributionChamberElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDistributionChamberElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDistributionChamberElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcDistributionChamberElement::declaration() const { return *IFC4X2_IfcDistributionChamberElement_type; } @@ -14051,11 +14051,11 @@ Ifc4x2::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std::stri // Function implementations for IfcDistributionPort boost::optional< ::Ifc4x2::IfcFlowDirectionEnum::Value > Ifc4x2::IfcDistributionPort::FlowDirection() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x2::IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); } -void Ifc4x2::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x2::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFlowDirectionEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x2::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x2::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFlowDirectionEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x2::IfcDistributionPortTypeEnum::Value > Ifc4x2::IfcDistributionPort::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDistributionPortTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x2::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDistributionPortTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x2::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDistributionPortTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x2::IfcDistributionSystemEnum::Value > Ifc4x2::IfcDistributionPort::SystemType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDistributionSystemEnum::FromString(*data_->getArgument(9)); } -void Ifc4x2::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x2::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x2::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x2::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcDistributionPort::declaration() const { return *IFC4X2_IfcDistributionPort_type; } @@ -14065,9 +14065,9 @@ Ifc4x2::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcDistributionSystem boost::optional< std::string > Ifc4x2::IfcDistributionSystem::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< ::Ifc4x2::IfcDistributionSystemEnum::Value > Ifc4x2::IfcDistributionSystem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDistributionSystemEnum::FromString(*data_->getArgument(6)); } -void Ifc4x2::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x2::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x2::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x2::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x2::IfcDistributionSystem::declaration() const { return *IFC4X2_IfcDistributionSystem_type; } @@ -14081,35 +14081,35 @@ void Ifc4x2::IfcDocumentInformation::setIdentification(std::string v) { {IfcWrit std::string Ifc4x2::IfcDocumentInformation::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x2::IfcDocumentInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::Location() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::Purpose() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::IntendedUse() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::Scope() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::Revision() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x2::IfcActorSelect* Ifc4x2::IfcDocumentInformation::DocumentOwner() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x2::IfcActorSelect>(true); } void Ifc4x2::IfcDocumentInformation::setDocumentOwner(::Ifc4x2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x2::IfcDocumentInformation::Editors() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::CreationTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::LastRevisionTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::ElectronicFormat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::ValidFrom() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x2::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x2::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformation::ValidUntil() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x2::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x2::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< ::Ifc4x2::IfcDocumentConfidentialityEnum::Value > Ifc4x2::IfcDocumentInformation::Confidentiality() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); } -void Ifc4x2::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x2::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDocumentConfidentialityEnum::ToString(*v)));data_->setArgument(15,attr);} } +void Ifc4x2::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x2::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDocumentConfidentialityEnum::ToString(*v)));}data_->setArgument(15,attr);} } boost::optional< ::Ifc4x2::IfcDocumentStatusEnum::Value > Ifc4x2::IfcDocumentInformation::Status() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); } -void Ifc4x2::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x2::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDocumentStatusEnum::ToString(*v)));data_->setArgument(16,attr);} } +void Ifc4x2::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x2::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDocumentStatusEnum::ToString(*v)));}data_->setArgument(16,attr);} } ::Ifc4x2::IfcRelAssociatesDocument::list::ptr Ifc4x2::IfcDocumentInformation::DocumentInfoForObjects() const { return data_->getInverse(IFC4X2_IfcRelAssociatesDocument_type, 5)->as(); } ::Ifc4x2::IfcDocumentReference::list::ptr Ifc4x2::IfcDocumentInformation::HasDocumentReferences() const { return data_->getInverse(IFC4X2_IfcDocumentReference_type, 4)->as(); } @@ -14127,7 +14127,7 @@ void Ifc4x2::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc4x2::I aggregate_of< ::Ifc4x2::IfcDocumentInformation >::ptr Ifc4x2::IfcDocumentInformationRelationship::RelatedDocuments() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x2::IfcDocumentInformation >(); } void Ifc4x2::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc4x2::IfcDocumentInformation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcDocumentInformationRelationship::RelationshipType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcDocumentInformationRelationship::declaration() const { return *IFC4X2_IfcDocumentInformationRelationship_type; } @@ -14137,7 +14137,7 @@ Ifc4x2::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(b // Function implementations for IfcDocumentReference boost::optional< std::string > Ifc4x2::IfcDocumentReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x2::IfcDocumentInformation* Ifc4x2::IfcDocumentReference::ReferencedDocument() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x2::IfcDocumentInformation>(true); } void Ifc4x2::IfcDocumentReference::setReferencedDocument(::Ifc4x2::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -14150,15 +14150,15 @@ Ifc4x2::IfcDocumentReference::IfcDocumentReference(boost::optional< std::string // Function implementations for IfcDoor boost::optional< double > Ifc4x2::IfcDoor::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x2::IfcDoor::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x2::IfcDoorTypeEnum::Value > Ifc4x2::IfcDoor::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDoorTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x2::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDoorTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x2::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDoorTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x2::IfcDoorTypeOperationEnum::Value > Ifc4x2::IfcDoor::OperationType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(11)); } -void Ifc4x2::IfcDoor::setOperationType(boost::optional< ::Ifc4x2::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDoorTypeOperationEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x2::IfcDoor::setOperationType(boost::optional< ::Ifc4x2::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDoorTypeOperationEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x2::IfcDoor::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x2::IfcDoor::declaration() const { return *IFC4X2_IfcDoor_type; } @@ -14168,31 +14168,31 @@ Ifc4x2::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* v2_ // Function implementations for IfcDoorLiningProperties boost::optional< double > Ifc4x2::IfcDoorLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::ThresholdDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::ThresholdThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::TransomThickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::TransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::LiningOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::ThresholdOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::CasingThickness() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::CasingDepth() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x2::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } ::Ifc4x2::IfcShapeAspect* Ifc4x2::IfcDoorLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc4x2::IfcShapeAspect>(true); } void Ifc4x2::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc4x2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x2::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x2::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x2::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x2::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x2::IfcDoorLiningProperties::declaration() const { return *IFC4X2_IfcDoorLiningProperties_type; } @@ -14202,11 +14202,11 @@ Ifc4x2::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_GlobalId // Function implementations for IfcDoorPanelProperties boost::optional< double > Ifc4x2::IfcDoorPanelProperties::PanelDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x2::IfcDoorPanelOperationEnum::Value Ifc4x2::IfcDoorPanelProperties::PanelOperation() const { return ::Ifc4x2::IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); } void Ifc4x2::IfcDoorPanelProperties::setPanelOperation(::Ifc4x2::IfcDoorPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcDoorPanelOperationEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcDoorPanelProperties::PanelWidth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x2::IfcDoorPanelPositionEnum::Value Ifc4x2::IfcDoorPanelProperties::PanelPosition() const { return ::Ifc4x2::IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); } void Ifc4x2::IfcDoorPanelProperties::setPanelPosition(::Ifc4x2::IfcDoorPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcDoorPanelPositionEnum::ToString(v)));data_->setArgument(7,attr);} } ::Ifc4x2::IfcShapeAspect* Ifc4x2::IfcDoorPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x2::IfcShapeAspect>(true); } @@ -14248,9 +14248,9 @@ void Ifc4x2::IfcDoorType::setPredefinedType(::Ifc4x2::IfcDoorTypeEnum::Value v) ::Ifc4x2::IfcDoorTypeOperationEnum::Value Ifc4x2::IfcDoorType::OperationType() const { return ::Ifc4x2::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(10)); } void Ifc4x2::IfcDoorType::setOperationType(::Ifc4x2::IfcDoorTypeOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcDoorTypeOperationEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x2::IfcDoorType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x2::IfcDoorType::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x2::IfcDoorType::declaration() const { return *IFC4X2_IfcDoorType_type; } @@ -14276,7 +14276,7 @@ Ifc4x2::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(std:: // Function implementations for IfcDuctFitting boost::optional< ::Ifc4x2::IfcDuctFittingTypeEnum::Value > Ifc4x2::IfcDuctFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x2::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDuctFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x2::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDuctFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcDuctFitting::declaration() const { return *IFC4X2_IfcDuctFitting_type; } @@ -14296,7 +14296,7 @@ Ifc4x2::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::Ifc4x2 // Function implementations for IfcDuctSegment boost::optional< ::Ifc4x2::IfcDuctSegmentTypeEnum::Value > Ifc4x2::IfcDuctSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x2::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDuctSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x2::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDuctSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcDuctSegment::declaration() const { return *IFC4X2_IfcDuctSegment_type; } @@ -14316,7 +14316,7 @@ Ifc4x2::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::Ifc4x2 // Function implementations for IfcDuctSilencer boost::optional< ::Ifc4x2::IfcDuctSilencerTypeEnum::Value > Ifc4x2::IfcDuctSilencer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x2::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDuctSilencerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x2::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDuctSilencerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcDuctSilencer::declaration() const { return *IFC4X2_IfcDuctSilencer_type; } @@ -14370,7 +14370,7 @@ Ifc4x2::IfcEdgeLoop::IfcEdgeLoop(aggregate_of< ::Ifc4x2::IfcOrientedEdge >::ptr // Function implementations for IfcElectricAppliance boost::optional< ::Ifc4x2::IfcElectricApplianceTypeEnum::Value > Ifc4x2::IfcElectricAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcElectricAppliance::declaration() const { return *IFC4X2_IfcElectricAppliance_type; } @@ -14390,7 +14390,7 @@ Ifc4x2::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_Global // Function implementations for IfcElectricDistributionBoard boost::optional< ::Ifc4x2::IfcElectricDistributionBoardTypeEnum::Value > Ifc4x2::IfcElectricDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcElectricDistributionBoard::declaration() const { return *IFC4X2_IfcElectricDistributionBoard_type; } @@ -14410,7 +14410,7 @@ Ifc4x2::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(std:: // Function implementations for IfcElectricFlowStorageDevice boost::optional< ::Ifc4x2::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4x2::IfcElectricFlowStorageDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcElectricFlowStorageDevice::declaration() const { return *IFC4X2_IfcElectricFlowStorageDevice_type; } @@ -14430,7 +14430,7 @@ Ifc4x2::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(std:: // Function implementations for IfcElectricGenerator boost::optional< ::Ifc4x2::IfcElectricGeneratorTypeEnum::Value > Ifc4x2::IfcElectricGenerator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricGeneratorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricGeneratorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcElectricGenerator::declaration() const { return *IFC4X2_IfcElectricGenerator_type; } @@ -14450,7 +14450,7 @@ Ifc4x2::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_Global // Function implementations for IfcElectricMotor boost::optional< ::Ifc4x2::IfcElectricMotorTypeEnum::Value > Ifc4x2::IfcElectricMotor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricMotorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricMotorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcElectricMotor::declaration() const { return *IFC4X2_IfcElectricMotor_type; } @@ -14470,7 +14470,7 @@ Ifc4x2::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, ::If // Function implementations for IfcElectricTimeControl boost::optional< ::Ifc4x2::IfcElectricTimeControlTypeEnum::Value > Ifc4x2::IfcElectricTimeControl::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricTimeControlTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x2::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElectricTimeControlTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcElectricTimeControl::declaration() const { return *IFC4X2_IfcElectricTimeControl_type; } @@ -14490,7 +14490,7 @@ Ifc4x2::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v1_Gl // Function implementations for IfcElement boost::optional< std::string > Ifc4x2::IfcElement::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x2::IfcRelFillsElement::list::ptr Ifc4x2::IfcElement::FillsVoids() const { return data_->getInverse(IFC4X2_IfcRelFillsElement_type, 5)->as(); } ::Ifc4x2::IfcRelConnectsElements::list::ptr Ifc4x2::IfcElement::ConnectedTo() const { return data_->getInverse(IFC4X2_IfcRelConnectsElements_type, 5)->as(); } @@ -14512,9 +14512,9 @@ Ifc4x2::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistor // Function implementations for IfcElementAssembly boost::optional< ::Ifc4x2::IfcAssemblyPlaceEnum::Value > Ifc4x2::IfcElementAssembly::AssemblyPlace() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x2::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAssemblyPlaceEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x2::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcAssemblyPlaceEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x2::IfcElementAssemblyTypeEnum::Value > Ifc4x2::IfcElementAssembly::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x2::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x2::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x2::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElementAssemblyTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x2::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x2::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElementAssemblyTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcElementAssembly::declaration() const { return *IFC4X2_IfcElementAssembly_type; } @@ -14550,7 +14550,7 @@ Ifc4x2::IfcElementComponentType::IfcElementComponentType(std::string v1_GlobalId // Function implementations for IfcElementQuantity boost::optional< std::string > Ifc4x2::IfcElementQuantity::MethodOfMeasurement() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x2::IfcPhysicalQuantity >::ptr Ifc4x2::IfcElementQuantity::Quantities() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x2::IfcPhysicalQuantity >(); } void Ifc4x2::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc4x2::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -14562,7 +14562,7 @@ Ifc4x2::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::Ifc4x2 // Function implementations for IfcElementType boost::optional< std::string > Ifc4x2::IfcElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcElementType::declaration() const { return *IFC4X2_IfcElementType_type; } @@ -14622,7 +14622,7 @@ Ifc4x2::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::string // Function implementations for IfcEngine boost::optional< ::Ifc4x2::IfcEngineTypeEnum::Value > Ifc4x2::IfcEngine::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcEngineTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x2::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcEngineTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x2::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcEngineTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcEngine::declaration() const { return *IFC4X2_IfcEngine_type; } @@ -14642,7 +14642,7 @@ Ifc4x2::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4x2::IfcOwner // Function implementations for IfcEvaporativeCooler boost::optional< ::Ifc4x2::IfcEvaporativeCoolerTypeEnum::Value > Ifc4x2::IfcEvaporativeCooler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x2::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcEvaporativeCoolerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x2::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcEvaporativeCoolerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcEvaporativeCooler::declaration() const { return *IFC4X2_IfcEvaporativeCooler_type; } @@ -14662,7 +14662,7 @@ Ifc4x2::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_Global // Function implementations for IfcEvaporator boost::optional< ::Ifc4x2::IfcEvaporatorTypeEnum::Value > Ifc4x2::IfcEvaporator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x2::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcEvaporatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x2::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcEvaporatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcEvaporator::declaration() const { return *IFC4X2_IfcEvaporator_type; } @@ -14682,11 +14682,11 @@ Ifc4x2::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4x2:: // Function implementations for IfcEvent boost::optional< ::Ifc4x2::IfcEventTypeEnum::Value > Ifc4x2::IfcEvent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x2::IfcEventTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x2::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x2::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcEventTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x2::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x2::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcEventTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x2::IfcEventTriggerTypeEnum::Value > Ifc4x2::IfcEvent::EventTriggerType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x2::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcEventTriggerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x2::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcEventTriggerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x2::IfcEvent::UserDefinedEventTriggerType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x2::IfcEventTime* Ifc4x2::IfcEvent::EventOccurenceTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x2::IfcEventTime>(true); } void Ifc4x2::IfcEvent::setEventOccurenceTime(::Ifc4x2::IfcEventTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -14698,13 +14698,13 @@ Ifc4x2::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* v // Function implementations for IfcEventTime boost::optional< std::string > Ifc4x2::IfcEventTime::ActualDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcEventTime::EarlyDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcEventTime::LateDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcEventTime::ScheduleDate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x2::IfcEventTime::declaration() const { return *IFC4X2_IfcEventTime_type; } @@ -14718,7 +14718,7 @@ void Ifc4x2::IfcEventType::setPredefinedType(::Ifc4x2::IfcEventTypeEnum::Value v ::Ifc4x2::IfcEventTriggerTypeEnum::Value Ifc4x2::IfcEventType::EventTriggerType() const { return ::Ifc4x2::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(10)); } void Ifc4x2::IfcEventType::setEventTriggerType(::Ifc4x2::IfcEventTriggerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcEventTriggerTypeEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x2::IfcEventType::UserDefinedEventTriggerType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x2::IfcEventType::declaration() const { return *IFC4X2_IfcEventType_type; } @@ -14728,9 +14728,9 @@ Ifc4x2::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHi // Function implementations for IfcExtendedProperties boost::optional< std::string > Ifc4x2::IfcExtendedProperties::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcExtendedProperties::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x2::IfcProperty >::ptr Ifc4x2::IfcExtendedProperties::Properties() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x2::IfcProperty >(); } void Ifc4x2::IfcExtendedProperties::setProperties(aggregate_of< ::Ifc4x2::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -14750,11 +14750,11 @@ Ifc4x2::IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseEntit // Function implementations for IfcExternalReference boost::optional< std::string > Ifc4x2::IfcExternalReference::Location() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcExternalReference::Identification() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcExternalReference::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcExternalReferenceRelationship::list::ptr Ifc4x2::IfcExternalReference::ExternalReferenceForResources() const { return data_->getInverse(IFC4X2_IfcExternalReferenceRelationship_type, 2)->as(); } @@ -14777,7 +14777,7 @@ Ifc4x2::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(boost // Function implementations for IfcExternalSpatialElement boost::optional< ::Ifc4x2::IfcExternalSpatialElementTypeEnum::Value > Ifc4x2::IfcExternalSpatialElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcExternalSpatialElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcExternalSpatialElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcExternalSpatialElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x2::IfcRelSpaceBoundary::list::ptr Ifc4x2::IfcExternalSpatialElement::BoundedBy() const { return data_->getInverse(IFC4X2_IfcRelSpaceBoundary_type, 4)->as(); } @@ -14929,17 +14929,17 @@ Ifc4x2::IfcFacilityPart::IfcFacilityPart(std::string v1_GlobalId, ::Ifc4x2::IfcO // Function implementations for IfcFailureConnectionCondition boost::optional< double > Ifc4x2::IfcFailureConnectionCondition::TensionFailureX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcFailureConnectionCondition::TensionFailureY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcFailureConnectionCondition::TensionFailureZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcFailureConnectionCondition::CompressionFailureX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x2::IfcFailureConnectionCondition::CompressionFailureY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcFailureConnectionCondition::CompressionFailureZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x2::IfcFailureConnectionCondition::declaration() const { return *IFC4X2_IfcFailureConnectionCondition_type; } @@ -14949,7 +14949,7 @@ Ifc4x2::IfcFailureConnectionCondition::IfcFailureConnectionCondition(boost::opti // Function implementations for IfcFan boost::optional< ::Ifc4x2::IfcFanTypeEnum::Value > Ifc4x2::IfcFan::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcFanTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcFan::setPredefinedType(boost::optional< ::Ifc4x2::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFanTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcFan::setPredefinedType(boost::optional< ::Ifc4x2::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFanTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcFan::declaration() const { return *IFC4X2_IfcFan_type; } @@ -14969,7 +14969,7 @@ Ifc4x2::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistor // Function implementations for IfcFastener boost::optional< ::Ifc4x2::IfcFastenerTypeEnum::Value > Ifc4x2::IfcFastener::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcFastenerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x2::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFastenerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x2::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFastenerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcFastener::declaration() const { return *IFC4X2_IfcFastener_type; } @@ -15017,7 +15017,7 @@ Ifc4x2::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::string v aggregate_of_instance::ptr Ifc4x2::IfcFillAreaStyle::FillStyles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4x2::IfcFillAreaStyle::setFillStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x2::IfcFillAreaStyle::ModelorDraughting() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcFillAreaStyle::setModelorDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcFillAreaStyle::setModelorDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcFillAreaStyle::declaration() const { return *IFC4X2_IfcFillAreaStyle_type; } @@ -15059,7 +15059,7 @@ Ifc4x2::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(aggregate_of< ::Ifc4x2::Ifc // Function implementations for IfcFilter boost::optional< ::Ifc4x2::IfcFilterTypeEnum::Value > Ifc4x2::IfcFilter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcFilterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x2::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFilterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x2::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFilterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcFilter::declaration() const { return *IFC4X2_IfcFilter_type; } @@ -15079,7 +15079,7 @@ Ifc4x2::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4x2::IfcOwner // Function implementations for IfcFireSuppressionTerminal boost::optional< ::Ifc4x2::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4x2::IfcFireSuppressionTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x2::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x2::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcFireSuppressionTerminal::declaration() const { return *IFC4X2_IfcFireSuppressionTerminal_type; } @@ -15101,9 +15101,9 @@ Ifc4x2::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(std::stri ::Ifc4x2::IfcCurve* Ifc4x2::IfcFixedReferenceSweptAreaSolid::Directrix() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x2::IfcCurve>(true); } void Ifc4x2::IfcFixedReferenceSweptAreaSolid::setDirectrix(::Ifc4x2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcFixedReferenceSweptAreaSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcFixedReferenceSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcFixedReferenceSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcFixedReferenceSweptAreaSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcFixedReferenceSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcFixedReferenceSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x2::IfcDirection* Ifc4x2::IfcFixedReferenceSweptAreaSolid::FixedReference() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x2::IfcDirection>(true); } void Ifc4x2::IfcFixedReferenceSweptAreaSolid::setFixedReference(::Ifc4x2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -15147,7 +15147,7 @@ Ifc4x2::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::Ifc4x2 // Function implementations for IfcFlowInstrument boost::optional< ::Ifc4x2::IfcFlowInstrumentTypeEnum::Value > Ifc4x2::IfcFlowInstrument::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x2::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFlowInstrumentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x2::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFlowInstrumentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcFlowInstrument::declaration() const { return *IFC4X2_IfcFlowInstrument_type; } @@ -15167,7 +15167,7 @@ Ifc4x2::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId, :: // Function implementations for IfcFlowMeter boost::optional< ::Ifc4x2::IfcFlowMeterTypeEnum::Value > Ifc4x2::IfcFlowMeter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x2::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFlowMeterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x2::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFlowMeterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcFlowMeter::declaration() const { return *IFC4X2_IfcFlowMeter_type; } @@ -15267,7 +15267,7 @@ Ifc4x2::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v1_Gl // Function implementations for IfcFooting boost::optional< ::Ifc4x2::IfcFootingTypeEnum::Value > Ifc4x2::IfcFooting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcFootingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x2::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFootingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x2::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFootingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcFooting::declaration() const { return *IFC4X2_IfcFooting_type; } @@ -15303,7 +15303,7 @@ Ifc4x2::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_Global // Function implementations for IfcFurniture boost::optional< ::Ifc4x2::IfcFurnitureTypeEnum::Value > Ifc4x2::IfcFurniture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcFurnitureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x2::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x2::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcFurniture::declaration() const { return *IFC4X2_IfcFurniture_type; } @@ -15315,7 +15315,7 @@ Ifc4x2::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHi ::Ifc4x2::IfcAssemblyPlaceEnum::Value Ifc4x2::IfcFurnitureType::AssemblyPlace() const { return ::Ifc4x2::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); } void Ifc4x2::IfcFurnitureType::setAssemblyPlace(::Ifc4x2::IfcAssemblyPlaceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcAssemblyPlaceEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< ::Ifc4x2::IfcFurnitureTypeEnum::Value > Ifc4x2::IfcFurnitureType::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcFurnitureTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x2::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x2::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcFurnitureType::declaration() const { return *IFC4X2_IfcFurnitureType_type; } @@ -15325,7 +15325,7 @@ Ifc4x2::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4x2::If // Function implementations for IfcGeographicElement boost::optional< ::Ifc4x2::IfcGeographicElementTypeEnum::Value > Ifc4x2::IfcGeographicElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcGeographicElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcGeographicElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcGeographicElement::declaration() const { return *IFC4X2_IfcGeographicElement_type; } @@ -15355,7 +15355,7 @@ Ifc4x2::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of_instance::ptr v1 int Ifc4x2::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { int v = *data_->getArgument(2); return v; } void Ifc4x2::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcGeometricRepresentationContext::Precision() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x2::IfcAxis2Placement* Ifc4x2::IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x2::IfcAxis2Placement>(true); } void Ifc4x2::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc4x2::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } ::Ifc4x2::IfcDirection* Ifc4x2::IfcGeometricRepresentationContext::TrueNorth() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x2::IfcDirection>(true); } @@ -15381,11 +15381,11 @@ Ifc4x2::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : IfcRe ::Ifc4x2::IfcGeometricRepresentationContext* Ifc4x2::IfcGeometricRepresentationSubContext::ParentContext() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcGeometricRepresentationContext>(true); } void Ifc4x2::IfcGeometricRepresentationSubContext::setParentContext(::Ifc4x2::IfcGeometricRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcGeometricRepresentationSubContext::TargetScale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x2::IfcGeometricProjectionEnum::Value Ifc4x2::IfcGeometricRepresentationSubContext::TargetView() const { return ::Ifc4x2::IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); } void Ifc4x2::IfcGeometricRepresentationSubContext::setTargetView(::Ifc4x2::IfcGeometricProjectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcGeometricProjectionEnum::ToString(v)));data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x2::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcGeometricRepresentationSubContext::declaration() const { return *IFC4X2_IfcGeometricRepresentationSubContext_type; } @@ -15409,9 +15409,9 @@ void Ifc4x2::IfcGrid::setUAxes(aggregate_of< ::Ifc4x2::IfcGridAxis >::ptr v) { { aggregate_of< ::Ifc4x2::IfcGridAxis >::ptr Ifc4x2::IfcGrid::VAxes() const { aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x2::IfcGridAxis >(); } void Ifc4x2::IfcGrid::setVAxes(aggregate_of< ::Ifc4x2::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcGridAxis >::ptr > Ifc4x2::IfcGrid::WAxes() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x2::IfcGridAxis >(); } -void Ifc4x2::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x2::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x2::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x2::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x2::IfcGridTypeEnum::Value > Ifc4x2::IfcGrid::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcGridTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x2::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcGridTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x2::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcGridTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcGrid::declaration() const { return *IFC4X2_IfcGrid_type; } @@ -15421,7 +15421,7 @@ Ifc4x2::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* v2_ // Function implementations for IfcGridAxis boost::optional< std::string > Ifc4x2::IfcGridAxis::AxisTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x2::IfcCurve* Ifc4x2::IfcGridAxis::AxisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x2::IfcCurve>(true); } void Ifc4x2::IfcGridAxis::setAxisCurve(::Ifc4x2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } bool Ifc4x2::IfcGridAxis::SameSense() const { bool v = *data_->getArgument(2); return v; } @@ -15472,7 +15472,7 @@ Ifc4x2::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4x2::IfcSurface* v1_BaseSurfac // Function implementations for IfcHeatExchanger boost::optional< ::Ifc4x2::IfcHeatExchangerTypeEnum::Value > Ifc4x2::IfcHeatExchanger::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x2::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcHeatExchangerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x2::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcHeatExchangerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcHeatExchanger::declaration() const { return *IFC4X2_IfcHeatExchanger_type; } @@ -15492,7 +15492,7 @@ Ifc4x2::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, ::If // Function implementations for IfcHumidifier boost::optional< ::Ifc4x2::IfcHumidifierTypeEnum::Value > Ifc4x2::IfcHumidifier::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcHumidifierTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x2::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcHumidifierTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x2::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcHumidifierTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcHumidifier::declaration() const { return *IFC4X2_IfcHumidifier_type; } @@ -15520,11 +15520,11 @@ void Ifc4x2::IfcIShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc4x2::IfcIShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x2::IfcIShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcIShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x2::IfcIShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcIShapeProfileDef::declaration() const { return *IFC4X2_IfcIShapeProfileDef_type; } @@ -15546,7 +15546,7 @@ Ifc4x2::IfcImageTexture::IfcImageTexture(bool v1_RepeatS, bool v2_RepeatT, boost ::Ifc4x2::IfcTessellatedFaceSet* Ifc4x2::IfcIndexedColourMap::MappedTo() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x2::IfcTessellatedFaceSet>(true); } void Ifc4x2::IfcIndexedColourMap::setMappedTo(::Ifc4x2::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x2::IfcIndexedColourMap::Opacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x2::IfcColourRgbList* Ifc4x2::IfcIndexedColourMap::Colours() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x2::IfcColourRgbList>(true); } void Ifc4x2::IfcIndexedColourMap::setColours(::Ifc4x2::IfcColourRgbList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::vector< int > /*[1:?]*/ Ifc4x2::IfcIndexedColourMap::ColourIndex() const { std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } @@ -15562,9 +15562,9 @@ Ifc4x2::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4x2::IfcTessellatedFaceSet ::Ifc4x2::IfcCartesianPointList* Ifc4x2::IfcIndexedPolyCurve::Points() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x2::IfcCartesianPointList>(true); } void Ifc4x2::IfcIndexedPolyCurve::setPoints(::Ifc4x2::IfcCartesianPointList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x2::IfcIndexedPolyCurve::Segments() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x2::IfcIndexedPolyCurve::SelfIntersect() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcIndexedPolyCurve::declaration() const { return *IFC4X2_IfcIndexedPolyCurve_type; } @@ -15607,7 +15607,7 @@ Ifc4x2::IfcIndexedTextureMap::IfcIndexedTextureMap(aggregate_of< ::Ifc4x2::IfcSu // Function implementations for IfcIndexedTriangleTextureMap boost::optional< std::vector< std::vector< int > > > Ifc4x2::IfcIndexedTriangleTextureMap::TexCoordIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcIndexedTriangleTextureMap::declaration() const { return *IFC4X2_IfcIndexedTriangleTextureMap_type; } @@ -15617,7 +15617,7 @@ Ifc4x2::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(aggregate_of< // Function implementations for IfcInterceptor boost::optional< ::Ifc4x2::IfcInterceptorTypeEnum::Value > Ifc4x2::IfcInterceptor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcInterceptorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x2::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcInterceptorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x2::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcInterceptorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcInterceptor::declaration() const { return *IFC4X2_IfcInterceptor_type; } @@ -15645,13 +15645,13 @@ Ifc4x2::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4x2::IfcCurve* v1_Curve3 // Function implementations for IfcInventory boost::optional< ::Ifc4x2::IfcInventoryTypeEnum::Value > Ifc4x2::IfcInventory::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x2::IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x2::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x2::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcInventoryTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x2::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x2::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcInventoryTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } ::Ifc4x2::IfcActorSelect* Ifc4x2::IfcInventory::Jurisdiction() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcActorSelect>(true); } void Ifc4x2::IfcInventory::setJurisdiction(::Ifc4x2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcPerson >::ptr > Ifc4x2::IfcInventory::ResponsiblePersons() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x2::IfcPerson >(); } -void Ifc4x2::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x2::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x2::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x2::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcInventory::LastUpdateDate() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x2::IfcCostValue* Ifc4x2::IfcInventory::CurrentValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x2::IfcCostValue>(true); } void Ifc4x2::IfcInventory::setCurrentValue(::Ifc4x2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x2::IfcCostValue* Ifc4x2::IfcInventory::OriginalValue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x2::IfcCostValue>(true); } @@ -15687,7 +15687,7 @@ Ifc4x2::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string v1_ // Function implementations for IfcJunctionBox boost::optional< ::Ifc4x2::IfcJunctionBoxTypeEnum::Value > Ifc4x2::IfcJunctionBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x2::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcJunctionBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x2::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcJunctionBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcJunctionBox::declaration() const { return *IFC4X2_IfcJunctionBox_type; } @@ -15709,15 +15709,15 @@ Ifc4x2::IfcJunctionBoxType::IfcJunctionBoxType(std::string v1_GlobalId, ::Ifc4x2 double Ifc4x2::IfcLShapeProfileDef::Depth() const { double v = *data_->getArgument(3); return v; } void Ifc4x2::IfcLShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcLShapeProfileDef::Width() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } double Ifc4x2::IfcLShapeProfileDef::Thickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x2::IfcLShapeProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcLShapeProfileDef::FilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcLShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcLShapeProfileDef::LegSlope() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcLShapeProfileDef::declaration() const { return *IFC4X2_IfcLShapeProfileDef_type; } @@ -15727,7 +15727,7 @@ Ifc4x2::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4x2::IfcProfileTypeEnum::V // Function implementations for IfcLaborResource boost::optional< ::Ifc4x2::IfcLaborResourceTypeEnum::Value > Ifc4x2::IfcLaborResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcLaborResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcLaborResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcLaborResource::declaration() const { return *IFC4X2_IfcLaborResource_type; } @@ -15759,7 +15759,7 @@ Ifc4x2::IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost::op // Function implementations for IfcLamp boost::optional< ::Ifc4x2::IfcLampTypeEnum::Value > Ifc4x2::IfcLamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcLampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x2::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcLampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x2::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcLampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcLamp::declaration() const { return *IFC4X2_IfcLamp_type; } @@ -15781,15 +15781,15 @@ Ifc4x2::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHist std::string Ifc4x2::IfcLibraryInformation::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x2::IfcLibraryInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcLibraryInformation::Version() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x2::IfcActorSelect* Ifc4x2::IfcLibraryInformation::Publisher() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x2::IfcActorSelect>(true); } void Ifc4x2::IfcLibraryInformation::setPublisher(::Ifc4x2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x2::IfcLibraryInformation::VersionDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcLibraryInformation::Location() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcLibraryInformation::Description() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x2::IfcRelAssociatesLibrary::list::ptr Ifc4x2::IfcLibraryInformation::LibraryInfoForObjects() const { return data_->getInverse(IFC4X2_IfcRelAssociatesLibrary_type, 5)->as(); } ::Ifc4x2::IfcLibraryReference::list::ptr Ifc4x2::IfcLibraryInformation::HasLibraryReferences() const { return data_->getInverse(IFC4X2_IfcLibraryReference_type, 5)->as(); } @@ -15801,9 +15801,9 @@ Ifc4x2::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, boost: // Function implementations for IfcLibraryReference boost::optional< std::string > Ifc4x2::IfcLibraryReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcLibraryReference::Language() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x2::IfcLibraryInformation* Ifc4x2::IfcLibraryReference::ReferencedLibrary() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x2::IfcLibraryInformation>(true); } void Ifc4x2::IfcLibraryReference::setReferencedLibrary(::Ifc4x2::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -15830,7 +15830,7 @@ Ifc4x2::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPlaneAn // Function implementations for IfcLightFixture boost::optional< ::Ifc4x2::IfcLightFixtureTypeEnum::Value > Ifc4x2::IfcLightFixture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x2::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcLightFixtureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x2::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcLightFixtureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcLightFixture::declaration() const { return *IFC4X2_IfcLightFixture_type; } @@ -15862,13 +15862,13 @@ Ifc4x2::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4x2::I // Function implementations for IfcLightSource boost::optional< std::string > Ifc4x2::IfcLightSource::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x2::IfcColourRgb* Ifc4x2::IfcLightSource::LightColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x2::IfcColourRgb>(true); } void Ifc4x2::IfcLightSource::setLightColour(::Ifc4x2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcLightSource::AmbientIntensity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcLightSource::Intensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcLightSource::declaration() const { return *IFC4X2_IfcLightSource_type; } @@ -15936,7 +15936,7 @@ Ifc4x2::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< std: ::Ifc4x2::IfcDirection* Ifc4x2::IfcLightSourceSpot::Orientation() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x2::IfcDirection>(true); } void Ifc4x2::IfcLightSourceSpot::setOrientation(::Ifc4x2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcLightSourceSpot::ConcentrationExponent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } double Ifc4x2::IfcLightSourceSpot::SpreadAngle() const { double v = *data_->getArgument(11); return v; } void Ifc4x2::IfcLightSourceSpot::setSpreadAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } double Ifc4x2::IfcLightSourceSpot::BeamWidthAngle() const { double v = *data_->getArgument(12); return v; } @@ -16030,11 +16030,11 @@ void Ifc4x2::IfcMapConversion::setNorthings(double v) { {IfcWrite::IfcWriteArgum double Ifc4x2::IfcMapConversion::OrthogonalHeight() const { double v = *data_->getArgument(4); return v; } void Ifc4x2::IfcMapConversion::setOrthogonalHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc4x2::IfcMapConversion::XAxisAbscissa() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcMapConversion::XAxisOrdinate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcMapConversion::Scale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x2::IfcMapConversion::declaration() const { return *IFC4X2_IfcMapConversion_type; } @@ -16058,9 +16058,9 @@ Ifc4x2::IfcMappedItem::IfcMappedItem(::Ifc4x2::IfcRepresentationMap* v1_MappingS std::string Ifc4x2::IfcMaterial::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x2::IfcMaterial::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterial::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterial::Category() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcMaterialDefinitionRepresentation::list::ptr Ifc4x2::IfcMaterial::HasRepresentation() const { return data_->getInverse(IFC4X2_IfcMaterialDefinitionRepresentation_type, 3)->as(); } ::Ifc4x2::IfcMaterialRelationship::list::ptr Ifc4x2::IfcMaterial::IsRelatedWith() const { return data_->getInverse(IFC4X2_IfcMaterialRelationship_type, 3)->as(); } @@ -16085,15 +16085,15 @@ Ifc4x2::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelation // Function implementations for IfcMaterialConstituent boost::optional< std::string > Ifc4x2::IfcMaterialConstituent::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialConstituent::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x2::IfcMaterial* Ifc4x2::IfcMaterialConstituent::Material() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x2::IfcMaterial>(true); } void Ifc4x2::IfcMaterialConstituent::setMaterial(::Ifc4x2::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcMaterialConstituent::Fraction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialConstituent::Category() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x2::IfcMaterialConstituentSet::list::ptr Ifc4x2::IfcMaterialConstituent::ToMaterialConstituentSet() const { return data_->getInverse(IFC4X2_IfcMaterialConstituentSet_type, 2)->as(); } @@ -16104,11 +16104,11 @@ Ifc4x2::IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std::str // Function implementations for IfcMaterialConstituentSet boost::optional< std::string > Ifc4x2::IfcMaterialConstituentSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialConstituentSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcMaterialConstituent >::ptr > Ifc4x2::IfcMaterialConstituentSet::MaterialConstituents() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x2::IfcMaterialConstituent >(); } -void Ifc4x2::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x2::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x2::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x2::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcMaterialConstituentSet::declaration() const { return *IFC4X2_IfcMaterialConstituentSet_type; } @@ -16143,15 +16143,15 @@ void Ifc4x2::IfcMaterialLayer::setMaterial(::Ifc4x2::IfcMaterial* v) { {IfcWrite double Ifc4x2::IfcMaterialLayer::LayerThickness() const { double v = *data_->getArgument(1); return v; } void Ifc4x2::IfcMaterialLayer::setLayerThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< boost::logic::tribool > Ifc4x2::IfcMaterialLayer::IsVentilated() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } boost::logic::tribool v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialLayer::Name() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialLayer::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialLayer::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x2::IfcMaterialLayer::Priority() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x2::IfcMaterialLayerSet::list::ptr Ifc4x2::IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(IFC4X2_IfcMaterialLayerSet_type, 0)->as(); } @@ -16164,9 +16164,9 @@ Ifc4x2::IfcMaterialLayer::IfcMaterialLayer(::Ifc4x2::IfcMaterial* v1_Material, d aggregate_of< ::Ifc4x2::IfcMaterialLayer >::ptr Ifc4x2::IfcMaterialLayerSet::MaterialLayers() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x2::IfcMaterialLayer >(); } void Ifc4x2::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc4x2::IfcMaterialLayer >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialLayerSet::LayerSetName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialLayerSet::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcMaterialLayerSet::declaration() const { return *IFC4X2_IfcMaterialLayerSet_type; } @@ -16184,7 +16184,7 @@ void Ifc4x2::IfcMaterialLayerSetUsage::setDirectionSense(::Ifc4x2::IfcDirectionS double Ifc4x2::IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const { double v = *data_->getArgument(3); return v; } void Ifc4x2::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcMaterialLayerSetUsage::declaration() const { return *IFC4X2_IfcMaterialLayerSetUsage_type; } @@ -16216,17 +16216,17 @@ Ifc4x2::IfcMaterialList::IfcMaterialList(aggregate_of< ::Ifc4x2::IfcMaterial >:: // Function implementations for IfcMaterialProfile boost::optional< std::string > Ifc4x2::IfcMaterialProfile::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialProfile::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x2::IfcMaterial* Ifc4x2::IfcMaterialProfile::Material() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x2::IfcMaterial>(true); } void Ifc4x2::IfcMaterialProfile::setMaterial(::Ifc4x2::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x2::IfcProfileDef* Ifc4x2::IfcMaterialProfile::Profile() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcProfileDef>(true); } void Ifc4x2::IfcMaterialProfile::setProfile(::Ifc4x2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x2::IfcMaterialProfile::Priority() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialProfile::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x2::IfcMaterialProfileSet::list::ptr Ifc4x2::IfcMaterialProfile::ToMaterialProfileSet() const { return data_->getInverse(IFC4X2_IfcMaterialProfileSet_type, 2)->as(); } @@ -16237,9 +16237,9 @@ Ifc4x2::IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string > v1 // Function implementations for IfcMaterialProfileSet boost::optional< std::string > Ifc4x2::IfcMaterialProfileSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialProfileSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x2::IfcMaterialProfile >::ptr Ifc4x2::IfcMaterialProfileSet::MaterialProfiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x2::IfcMaterialProfile >(); } void Ifc4x2::IfcMaterialProfileSet::setMaterialProfiles(aggregate_of< ::Ifc4x2::IfcMaterialProfile >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } ::Ifc4x2::IfcCompositeProfileDef* Ifc4x2::IfcMaterialProfileSet::CompositeProfile() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcCompositeProfileDef>(true); } @@ -16255,9 +16255,9 @@ Ifc4x2::IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::strin ::Ifc4x2::IfcMaterialProfileSet* Ifc4x2::IfcMaterialProfileSetUsage::ForProfileSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x2::IfcMaterialProfileSet>(true); } void Ifc4x2::IfcMaterialProfileSetUsage::setForProfileSet(::Ifc4x2::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< int > Ifc4x2::IfcMaterialProfileSetUsage::CardinalPoint() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcMaterialProfileSetUsage::declaration() const { return *IFC4X2_IfcMaterialProfileSetUsage_type; } @@ -16269,7 +16269,7 @@ Ifc4x2::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4x2::IfcMate ::Ifc4x2::IfcMaterialProfileSet* Ifc4x2::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcMaterialProfileSet>(true); } void Ifc4x2::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(::Ifc4x2::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x2::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcMaterialProfileSetUsageTapering::declaration() const { return *IFC4X2_IfcMaterialProfileSetUsageTapering_type; } @@ -16303,7 +16303,7 @@ void Ifc4x2::IfcMaterialRelationship::setRelatingMaterial(::Ifc4x2::IfcMaterial* aggregate_of< ::Ifc4x2::IfcMaterial >::ptr Ifc4x2::IfcMaterialRelationship::RelatedMaterials() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x2::IfcMaterial >(); } void Ifc4x2::IfcMaterialRelationship::setRelatedMaterials(aggregate_of< ::Ifc4x2::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcMaterialRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcMaterialRelationship::declaration() const { return *IFC4X2_IfcMaterialRelationship_type; } @@ -16334,11 +16334,11 @@ Ifc4x2::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4x2::IfcValue* v1_ValueCompo // Function implementations for IfcMechanicalFastener boost::optional< double > Ifc4x2::IfcMechanicalFastener::NominalDiameter() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x2::IfcMechanicalFastener::NominalLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x2::IfcMechanicalFastenerTypeEnum::Value > Ifc4x2::IfcMechanicalFastener::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x2::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcMechanicalFastenerTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x2::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcMechanicalFastenerTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcMechanicalFastener::declaration() const { return *IFC4X2_IfcMechanicalFastener_type; } @@ -16350,9 +16350,9 @@ Ifc4x2::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId, :: ::Ifc4x2::IfcMechanicalFastenerTypeEnum::Value Ifc4x2::IfcMechanicalFastenerType::PredefinedType() const { return ::Ifc4x2::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x2::IfcMechanicalFastenerType::setPredefinedType(::Ifc4x2::IfcMechanicalFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcMechanicalFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcMechanicalFastenerType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcMechanicalFastenerType::NominalLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x2::IfcMechanicalFastenerType::declaration() const { return *IFC4X2_IfcMechanicalFastenerType_type; } @@ -16362,7 +16362,7 @@ Ifc4x2::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_Glob // Function implementations for IfcMedicalDevice boost::optional< ::Ifc4x2::IfcMedicalDeviceTypeEnum::Value > Ifc4x2::IfcMedicalDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcMedicalDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcMedicalDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcMedicalDevice::declaration() const { return *IFC4X2_IfcMedicalDevice_type; } @@ -16382,7 +16382,7 @@ Ifc4x2::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, ::If // Function implementations for IfcMember boost::optional< ::Ifc4x2::IfcMemberTypeEnum::Value > Ifc4x2::IfcMember::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcMemberTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcMember::setPredefinedType(boost::optional< ::Ifc4x2::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcMemberTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcMember::setPredefinedType(boost::optional< ::Ifc4x2::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcMemberTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcMember::declaration() const { return *IFC4X2_IfcMember_type; } @@ -16412,7 +16412,7 @@ Ifc4x2::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4x2::IfcOwner ::Ifc4x2::IfcBenchmarkEnum::Value Ifc4x2::IfcMetric::Benchmark() const { return ::Ifc4x2::IfcBenchmarkEnum::FromString(*data_->getArgument(7)); } void Ifc4x2::IfcMetric::setBenchmark(::Ifc4x2::IfcBenchmarkEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcBenchmarkEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcMetric::ValueSource() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x2::IfcMetricValueSelect* Ifc4x2::IfcMetric::DataValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x2::IfcMetricValueSelect>(true); } void Ifc4x2::IfcMetric::setDataValue(::Ifc4x2::IfcMetricValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x2::IfcReference* Ifc4x2::IfcMetric::ReferencePath() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x2::IfcReference>(true); } @@ -16444,7 +16444,7 @@ Ifc4x2::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil::Ifc // Function implementations for IfcMotorConnection boost::optional< ::Ifc4x2::IfcMotorConnectionTypeEnum::Value > Ifc4x2::IfcMotorConnection::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x2::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcMotorConnectionTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x2::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcMotorConnectionTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcMotorConnection::declaration() const { return *IFC4X2_IfcMotorConnection_type; } @@ -16476,7 +16476,7 @@ Ifc4x2::IfcNamedUnit::IfcNamedUnit(::Ifc4x2::IfcDimensionalExponents* v1_Dimensi // Function implementations for IfcObject boost::optional< std::string > Ifc4x2::IfcObject::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x2::IfcRelDefinesByObject::list::ptr Ifc4x2::IfcObject::IsDeclaredBy() const { return data_->getInverse(IFC4X2_IfcRelDefinesByObject_type, 4)->as(); } ::Ifc4x2::IfcRelDefinesByObject::list::ptr Ifc4x2::IfcObject::Declares() const { return data_->getInverse(IFC4X2_IfcRelDefinesByObject_type, 5)->as(); } @@ -16516,13 +16516,13 @@ Ifc4x2::IfcObjectPlacement::IfcObjectPlacement(::Ifc4x2::IfcObjectPlacement* v1_ // Function implementations for IfcObjective boost::optional< aggregate_of< ::Ifc4x2::IfcConstraint >::ptr > Ifc4x2::IfcObjective::BenchmarkValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x2::IfcConstraint >(); } -void Ifc4x2::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x2::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x2::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x2::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x2::IfcLogicalOperatorEnum::Value > Ifc4x2::IfcObjective::LogicalAggregator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcLogicalOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x2::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcLogicalOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x2::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcLogicalOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x2::IfcObjectiveEnum::Value Ifc4x2::IfcObjective::ObjectiveQualifier() const { return ::Ifc4x2::IfcObjectiveEnum::FromString(*data_->getArgument(9)); } void Ifc4x2::IfcObjective::setObjectiveQualifier(::Ifc4x2::IfcObjectiveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcObjectiveEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x2::IfcObjective::UserDefinedQualifier() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcObjective::declaration() const { return *IFC4X2_IfcObjective_type; } @@ -16532,7 +16532,7 @@ Ifc4x2::IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std::st // Function implementations for IfcOccupant boost::optional< ::Ifc4x2::IfcOccupantTypeEnum::Value > Ifc4x2::IfcOccupant::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x2::IfcOccupantTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x2::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x2::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcOccupantTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x2::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x2::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcOccupantTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x2::IfcOccupant::declaration() const { return *IFC4X2_IfcOccupant_type; } @@ -16580,7 +16580,7 @@ Ifc4x2::IfcOffsetCurve3D::IfcOffsetCurve3D(::Ifc4x2::IfcCurve* v1_BasisCurve, do aggregate_of< ::Ifc4x2::IfcDistanceExpression >::ptr Ifc4x2::IfcOffsetCurveByDistances::OffsetValues() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x2::IfcDistanceExpression >(); } void Ifc4x2::IfcOffsetCurveByDistances::setOffsetValues(aggregate_of< ::Ifc4x2::IfcDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcOffsetCurveByDistances::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcOffsetCurveByDistances::declaration() const { return *IFC4X2_IfcOffsetCurveByDistances_type; } @@ -16598,7 +16598,7 @@ Ifc4x2::IfcOpenShell::IfcOpenShell(aggregate_of< ::Ifc4x2::IfcFace >::ptr v1_Cfs // Function implementations for IfcOpeningElement boost::optional< ::Ifc4x2::IfcOpeningElementTypeEnum::Value > Ifc4x2::IfcOpeningElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcOpeningElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcOpeningElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcOpeningElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x2::IfcRelFillsElement::list::ptr Ifc4x2::IfcOpeningElement::HasFillings() const { return data_->getInverse(IFC4X2_IfcRelFillsElement_type, 4)->as(); } @@ -16617,15 +16617,15 @@ Ifc4x2::IfcOpeningStandardCase::IfcOpeningStandardCase(std::string v1_GlobalId, // Function implementations for IfcOrganization boost::optional< std::string > Ifc4x2::IfcOrganization::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } std::string Ifc4x2::IfcOrganization::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x2::IfcOrganization::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcOrganization::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcActorRole >::ptr > Ifc4x2::IfcOrganization::Roles() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x2::IfcActorRole >(); } -void Ifc4x2::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(3,attr);} } +void Ifc4x2::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcAddress >::ptr > Ifc4x2::IfcOrganization::Addresses() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x2::IfcAddress >(); } -void Ifc4x2::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x2::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(4,attr);} } +void Ifc4x2::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x2::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(4,attr);} } ::Ifc4x2::IfcOrganizationRelationship::list::ptr Ifc4x2::IfcOrganization::IsRelatedBy() const { return data_->getInverse(IFC4X2_IfcOrganizationRelationship_type, 3)->as(); } ::Ifc4x2::IfcOrganizationRelationship::list::ptr Ifc4x2::IfcOrganization::Relates() const { return data_->getInverse(IFC4X2_IfcOrganizationRelationship_type, 2)->as(); } @@ -16682,7 +16682,7 @@ Ifc4x2::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(aggregate_of< ::Ifc4x2::Ifc // Function implementations for IfcOutlet boost::optional< ::Ifc4x2::IfcOutletTypeEnum::Value > Ifc4x2::IfcOutlet::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcOutletTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x2::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcOutletTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x2::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcOutletTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcOutlet::declaration() const { return *IFC4X2_IfcOutlet_type; } @@ -16706,11 +16706,11 @@ void Ifc4x2::IfcOwnerHistory::setOwningUser(::Ifc4x2::IfcPersonAndOrganization* ::Ifc4x2::IfcApplication* Ifc4x2::IfcOwnerHistory::OwningApplication() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x2::IfcApplication>(true); } void Ifc4x2::IfcOwnerHistory::setOwningApplication(::Ifc4x2::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x2::IfcStateEnum::Value > Ifc4x2::IfcOwnerHistory::State() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x2::IfcStateEnum::FromString(*data_->getArgument(2)); } -void Ifc4x2::IfcOwnerHistory::setState(boost::optional< ::Ifc4x2::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcStateEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x2::IfcOwnerHistory::setState(boost::optional< ::Ifc4x2::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcStateEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< ::Ifc4x2::IfcChangeActionEnum::Value > Ifc4x2::IfcOwnerHistory::ChangeAction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x2::IfcChangeActionEnum::FromString(*data_->getArgument(3)); } -void Ifc4x2::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x2::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcChangeActionEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x2::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x2::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcChangeActionEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x2::IfcOwnerHistory::LastModifiedDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x2::IfcPersonAndOrganization* Ifc4x2::IfcOwnerHistory::LastModifyingUser() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x2::IfcPersonAndOrganization>(true); } void Ifc4x2::IfcOwnerHistory::setLastModifyingUser(::Ifc4x2::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x2::IfcApplication* Ifc4x2::IfcOwnerHistory::LastModifyingApplication() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcApplication>(true); } @@ -16760,7 +16760,7 @@ Ifc4x2::IfcPcurve::IfcPcurve(::Ifc4x2::IfcSurface* v1_BasisSurface, ::Ifc4x2::If std::string Ifc4x2::IfcPerformanceHistory::LifeCyclePhase() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x2::IfcPerformanceHistory::setLifeCyclePhase(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x2::IfcPerformanceHistoryTypeEnum::Value > Ifc4x2::IfcPerformanceHistory::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x2::IfcPerformanceHistoryTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x2::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x2::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPerformanceHistoryTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x2::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x2::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPerformanceHistoryTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x2::IfcPerformanceHistory::declaration() const { return *IFC4X2_IfcPerformanceHistory_type; } @@ -16774,9 +16774,9 @@ void Ifc4x2::IfcPermeableCoveringProperties::setOperationType(::Ifc4x2::IfcPerme ::Ifc4x2::IfcWindowPanelPositionEnum::Value Ifc4x2::IfcPermeableCoveringProperties::PanelPosition() const { return ::Ifc4x2::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x2::IfcPermeableCoveringProperties::setPanelPosition(::Ifc4x2::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcPermeableCoveringProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcPermeableCoveringProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x2::IfcShapeAspect* Ifc4x2::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x2::IfcShapeAspect>(true); } void Ifc4x2::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc4x2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -16788,11 +16788,11 @@ Ifc4x2::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std::stri // Function implementations for IfcPermit boost::optional< ::Ifc4x2::IfcPermitTypeEnum::Value > Ifc4x2::IfcPermit::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x2::IfcPermitTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x2::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x2::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPermitTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x2::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x2::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPermitTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcPermit::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcPermit::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcPermit::declaration() const { return *IFC4X2_IfcPermit_type; } @@ -16802,21 +16802,21 @@ Ifc4x2::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* // Function implementations for IfcPerson boost::optional< std::string > Ifc4x2::IfcPerson::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcPerson::FamilyName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcPerson::GivenName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcPerson::MiddleNames() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcPerson::PrefixTitles() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcPerson::SuffixTitles() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcActorRole >::ptr > Ifc4x2::IfcPerson::Roles() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x2::IfcActorRole >(); } -void Ifc4x2::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x2::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcAddress >::ptr > Ifc4x2::IfcPerson::Addresses() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x2::IfcAddress >(); } -void Ifc4x2::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x2::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x2::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x2::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x2::IfcPersonAndOrganization::list::ptr Ifc4x2::IfcPerson::EngagedIn() const { return data_->getInverse(IFC4X2_IfcPersonAndOrganization_type, 0)->as(); } @@ -16831,7 +16831,7 @@ void Ifc4x2::IfcPersonAndOrganization::setThePerson(::Ifc4x2::IfcPerson* v) { {I ::Ifc4x2::IfcOrganization* Ifc4x2::IfcPersonAndOrganization::TheOrganization() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x2::IfcOrganization>(true); } void Ifc4x2::IfcPersonAndOrganization::setTheOrganization(::Ifc4x2::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcActorRole >::ptr > Ifc4x2::IfcPersonAndOrganization::Roles() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x2::IfcActorRole >(); } -void Ifc4x2::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x2::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcPersonAndOrganization::declaration() const { return *IFC4X2_IfcPersonAndOrganization_type; } @@ -16845,9 +16845,9 @@ void Ifc4x2::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::Ifc4x2 std::string Ifc4x2::IfcPhysicalComplexQuantity::Discrimination() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x2::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcPhysicalComplexQuantity::Quality() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcPhysicalComplexQuantity::Usage() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x2::IfcPhysicalComplexQuantity::declaration() const { return *IFC4X2_IfcPhysicalComplexQuantity_type; } @@ -16859,7 +16859,7 @@ Ifc4x2::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v1_Na std::string Ifc4x2::IfcPhysicalQuantity::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x2::IfcPhysicalQuantity::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcPhysicalQuantity::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x2::IfcExternalReferenceRelationship::list::ptr Ifc4x2::IfcPhysicalQuantity::HasExternalReferences() const { return data_->getInverse(IFC4X2_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x2::IfcPhysicalComplexQuantity::list::ptr Ifc4x2::IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(IFC4X2_IfcPhysicalComplexQuantity_type, 2)->as(); } @@ -16881,9 +16881,9 @@ Ifc4x2::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_Name // Function implementations for IfcPile boost::optional< ::Ifc4x2::IfcPileTypeEnum::Value > Ifc4x2::IfcPile::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcPileTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcPile::setPredefinedType(boost::optional< ::Ifc4x2::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPileTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcPile::setPredefinedType(boost::optional< ::Ifc4x2::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPileTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x2::IfcPileConstructionEnum::Value > Ifc4x2::IfcPile::ConstructionType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x2::IfcPileConstructionEnum::FromString(*data_->getArgument(9)); } -void Ifc4x2::IfcPile::setConstructionType(boost::optional< ::Ifc4x2::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPileConstructionEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x2::IfcPile::setConstructionType(boost::optional< ::Ifc4x2::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPileConstructionEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcPile::declaration() const { return *IFC4X2_IfcPile_type; } @@ -16903,7 +16903,7 @@ Ifc4x2::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHist // Function implementations for IfcPipeFitting boost::optional< ::Ifc4x2::IfcPipeFittingTypeEnum::Value > Ifc4x2::IfcPipeFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x2::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPipeFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x2::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPipeFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcPipeFitting::declaration() const { return *IFC4X2_IfcPipeFitting_type; } @@ -16923,7 +16923,7 @@ Ifc4x2::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::Ifc4x2 // Function implementations for IfcPipeSegment boost::optional< ::Ifc4x2::IfcPipeSegmentTypeEnum::Value > Ifc4x2::IfcPipeSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x2::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPipeSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x2::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPipeSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcPipeSegment::declaration() const { return *IFC4X2_IfcPipeSegment_type; } @@ -16999,7 +16999,7 @@ Ifc4x2::IfcPlane::IfcPlane(::Ifc4x2::IfcAxis2Placement3D* v1_Position) : IfcElem // Function implementations for IfcPlate boost::optional< ::Ifc4x2::IfcPlateTypeEnum::Value > Ifc4x2::IfcPlate::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcPlateTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x2::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPlateTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x2::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPlateTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcPlate::declaration() const { return *IFC4X2_IfcPlate_type; } @@ -17083,11 +17083,11 @@ Ifc4x2::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4x2::Ifc // Function implementations for IfcPolygonalFaceSet boost::optional< bool > Ifc4x2::IfcPolygonalFaceSet::Closed() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x2::IfcIndexedPolygonalFace >::ptr Ifc4x2::IfcPolygonalFaceSet::Faces() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x2::IfcIndexedPolygonalFace >(); } void Ifc4x2::IfcPolygonalFaceSet::setFaces(aggregate_of< ::Ifc4x2::IfcIndexedPolygonalFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x2::IfcPolygonalFaceSet::PnIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcPolygonalFaceSet::declaration() const { return *IFC4X2_IfcPolygonalFaceSet_type; } @@ -17128,19 +17128,19 @@ Ifc4x2::IfcPositioningElement::IfcPositioningElement(std::string v1_GlobalId, :: // Function implementations for IfcPostalAddress boost::optional< std::string > Ifc4x2::IfcPostalAddress::InternalLocation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcPostalAddress::AddressLines() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcPostalAddress::PostalBox() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcPostalAddress::Town() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcPostalAddress::Region() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcPostalAddress::PostalCode() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x2::IfcPostalAddress::Country() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcPostalAddress::declaration() const { return *IFC4X2_IfcPostalAddress_type; } @@ -17210,11 +17210,11 @@ Ifc4x2::IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity() {d std::string Ifc4x2::IfcPresentationLayerAssignment::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x2::IfcPresentationLayerAssignment::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcPresentationLayerAssignment::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of_instance::ptr Ifc4x2::IfcPresentationLayerAssignment::AssignedItems() const { aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } void Ifc4x2::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x2::IfcPresentationLayerAssignment::Identifier() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcPresentationLayerAssignment::declaration() const { return *IFC4X2_IfcPresentationLayerAssignment_type; } @@ -17240,7 +17240,7 @@ Ifc4x2::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::string // Function implementations for IfcPresentationStyle boost::optional< std::string > Ifc4x2::IfcPresentationStyle::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x2::IfcPresentationStyle::declaration() const { return *IFC4X2_IfcPresentationStyle_type; } @@ -17260,7 +17260,7 @@ Ifc4x2::IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(aggregate // Function implementations for IfcProcedure boost::optional< ::Ifc4x2::IfcProcedureTypeEnum::Value > Ifc4x2::IfcProcedure::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x2::IfcProcedureTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x2::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x2::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProcedureTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x2::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x2::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProcedureTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x2::IfcProcedure::declaration() const { return *IFC4X2_IfcProcedure_type; } @@ -17280,9 +17280,9 @@ Ifc4x2::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4x2::If // Function implementations for IfcProcess boost::optional< std::string > Ifc4x2::IfcProcess::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcProcess::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x2::IfcRelSequence::list::ptr Ifc4x2::IfcProcess::IsPredecessorTo() const { return data_->getInverse(IFC4X2_IfcRelSequence_type, 4)->as(); } ::Ifc4x2::IfcRelSequence::list::ptr Ifc4x2::IfcProcess::IsSuccessorFrom() const { return data_->getInverse(IFC4X2_IfcRelSequence_type, 5)->as(); } @@ -17319,9 +17319,9 @@ Ifc4x2::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional< st // Function implementations for IfcProductRepresentation boost::optional< std::string > Ifc4x2::IfcProductRepresentation::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcProductRepresentation::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x2::IfcRepresentation >::ptr Ifc4x2::IfcProductRepresentation::Representations() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x2::IfcRepresentation >(); } void Ifc4x2::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc4x2::IfcRepresentation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -17335,7 +17335,7 @@ Ifc4x2::IfcProductRepresentation::IfcProductRepresentation(boost::optional< std: ::Ifc4x2::IfcProfileTypeEnum::Value Ifc4x2::IfcProfileDef::ProfileType() const { return ::Ifc4x2::IfcProfileTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x2::IfcProfileDef::setProfileType(::Ifc4x2::IfcProfileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcProfileTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcProfileDef::ProfileName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x2::IfcExternalReferenceRelationship::list::ptr Ifc4x2::IfcProfileDef::HasExternalReference() const { return data_->getInverse(IFC4X2_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x2::IfcProfileProperties::list::ptr Ifc4x2::IfcProfileDef::HasProperties() const { return data_->getInverse(IFC4X2_IfcProfileProperties_type, 3)->as(); } @@ -17373,11 +17373,11 @@ Ifc4x2::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4x2:: // Function implementations for IfcProjectOrder boost::optional< ::Ifc4x2::IfcProjectOrderTypeEnum::Value > Ifc4x2::IfcProjectOrder::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x2::IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x2::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x2::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProjectOrderTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x2::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x2::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProjectOrderTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcProjectOrder::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcProjectOrder::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcProjectOrder::declaration() const { return *IFC4X2_IfcProjectOrder_type; } @@ -17387,9 +17387,9 @@ Ifc4x2::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4x2::IfcO // Function implementations for IfcProjectedCRS boost::optional< std::string > Ifc4x2::IfcProjectedCRS::MapProjection() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcProjectedCRS::MapZone() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x2::IfcNamedUnit* Ifc4x2::IfcProjectedCRS::MapUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcNamedUnit>(true); } void Ifc4x2::IfcProjectedCRS::setMapUnit(::Ifc4x2::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -17401,7 +17401,7 @@ Ifc4x2::IfcProjectedCRS::IfcProjectedCRS(std::string v1_Name, boost::optional< s // Function implementations for IfcProjectionElement boost::optional< ::Ifc4x2::IfcProjectionElementTypeEnum::Value > Ifc4x2::IfcProjectionElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcProjectionElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProjectionElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProjectionElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcProjectionElement::declaration() const { return *IFC4X2_IfcProjectionElement_type; } @@ -17413,7 +17413,7 @@ Ifc4x2::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, ::If std::string Ifc4x2::IfcProperty::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x2::IfcProperty::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcProperty::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x2::IfcPropertySet::list::ptr Ifc4x2::IfcProperty::PartOfPset() const { return data_->getInverse(IFC4X2_IfcPropertySet_type, 4)->as(); } ::Ifc4x2::IfcPropertyDependencyRelationship::list::ptr Ifc4x2::IfcProperty::PropertyForDependance() const { return data_->getInverse(IFC4X2_IfcPropertyDependencyRelationship_type, 2)->as(); } @@ -17468,7 +17468,7 @@ void Ifc4x2::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc4x2::I ::Ifc4x2::IfcProperty* Ifc4x2::IfcPropertyDependencyRelationship::DependantProperty() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcProperty>(true); } void Ifc4x2::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc4x2::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcPropertyDependencyRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcPropertyDependencyRelationship::declaration() const { return *IFC4X2_IfcPropertyDependencyRelationship_type; } @@ -17478,7 +17478,7 @@ Ifc4x2::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(boo // Function implementations for IfcPropertyEnumeratedValue boost::optional< aggregate_of_instance::ptr > Ifc4x2::IfcPropertyEnumeratedValue::EnumerationValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcPropertyEnumeration* Ifc4x2::IfcPropertyEnumeratedValue::EnumerationReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcPropertyEnumeration>(true); } void Ifc4x2::IfcPropertyEnumeratedValue::setEnumerationReference(::Ifc4x2::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -17504,7 +17504,7 @@ Ifc4x2::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, aggr // Function implementations for IfcPropertyListValue boost::optional< aggregate_of_instance::ptr > Ifc4x2::IfcPropertyListValue::ListValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcUnit* Ifc4x2::IfcPropertyListValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcUnit>(true); } void Ifc4x2::IfcPropertyListValue::setUnit(::Ifc4x2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -17516,7 +17516,7 @@ Ifc4x2::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boost::o // Function implementations for IfcPropertyReferenceValue boost::optional< std::string > Ifc4x2::IfcPropertyReferenceValue::UsageName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcObjectReferenceSelect* Ifc4x2::IfcPropertyReferenceValue::PropertyReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcObjectReferenceSelect>(true); } void Ifc4x2::IfcPropertyReferenceValue::setPropertyReference(::Ifc4x2::IfcObjectReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -17549,9 +17549,9 @@ Ifc4x2::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_Global // Function implementations for IfcPropertySetTemplate boost::optional< ::Ifc4x2::IfcPropertySetTemplateTypeEnum::Value > Ifc4x2::IfcPropertySetTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x2::IfcPropertySetTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x2::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x2::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPropertySetTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x2::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x2::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPropertySetTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcPropertySetTemplate::ApplicableEntity() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } aggregate_of< ::Ifc4x2::IfcPropertyTemplate >::ptr Ifc4x2::IfcPropertySetTemplate::HasPropertyTemplates() const { aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x2::IfcPropertyTemplate >(); } void Ifc4x2::IfcPropertySetTemplate::setHasPropertyTemplates(aggregate_of< ::Ifc4x2::IfcPropertyTemplate >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(6,attr);} } @@ -17576,17 +17576,17 @@ Ifc4x2::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, boos // Function implementations for IfcPropertyTableValue boost::optional< aggregate_of_instance::ptr > Ifc4x2::IfcPropertyTableValue::DefiningValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x2::IfcPropertyTableValue::DefinedValues() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcPropertyTableValue::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x2::IfcUnit* Ifc4x2::IfcPropertyTableValue::DefiningUnit() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x2::IfcUnit>(true); } void Ifc4x2::IfcPropertyTableValue::setDefiningUnit(::Ifc4x2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x2::IfcUnit* Ifc4x2::IfcPropertyTableValue::DefinedUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcUnit>(true); } void Ifc4x2::IfcPropertyTableValue::setDefinedUnit(::Ifc4x2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x2::IfcCurveInterpolationEnum::Value > Ifc4x2::IfcPropertyTableValue::CurveInterpolation() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x2::IfcCurveInterpolationEnum::FromString(*data_->getArgument(7)); } -void Ifc4x2::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x2::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCurveInterpolationEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x2::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x2::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcCurveInterpolationEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x2::IfcPropertyTableValue::declaration() const { return *IFC4X2_IfcPropertyTableValue_type; } @@ -17614,7 +17614,7 @@ Ifc4x2::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::string // Function implementations for IfcProtectiveDevice boost::optional< ::Ifc4x2::IfcProtectiveDeviceTypeEnum::Value > Ifc4x2::IfcProtectiveDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProtectiveDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProtectiveDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcProtectiveDevice::declaration() const { return *IFC4X2_IfcProtectiveDevice_type; } @@ -17624,7 +17624,7 @@ Ifc4x2::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcProtectiveDeviceTrippingUnit boost::optional< ::Ifc4x2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4x2::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcProtectiveDeviceTrippingUnit::declaration() const { return *IFC4X2_IfcProtectiveDeviceTrippingUnit_type; } @@ -17656,7 +17656,7 @@ Ifc4x2::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_GlobalId ::Ifc4x2::IfcObjectTypeEnum::Value Ifc4x2::IfcProxy::ProxyType() const { return ::Ifc4x2::IfcObjectTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x2::IfcProxy::setProxyType(::Ifc4x2::IfcObjectTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcObjectTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcProxy::Tag() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcProxy::declaration() const { return *IFC4X2_IfcProxy_type; } @@ -17666,7 +17666,7 @@ Ifc4x2::IfcProxy::IfcProxy(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* v // Function implementations for IfcPump boost::optional< ::Ifc4x2::IfcPumpTypeEnum::Value > Ifc4x2::IfcPump::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcPumpTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcPump::setPredefinedType(boost::optional< ::Ifc4x2::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPumpTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcPump::setPredefinedType(boost::optional< ::Ifc4x2::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcPumpTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcPump::declaration() const { return *IFC4X2_IfcPump_type; } @@ -17688,7 +17688,7 @@ Ifc4x2::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHist double Ifc4x2::IfcQuantityArea::AreaValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x2::IfcQuantityArea::setAreaValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcQuantityArea::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcQuantityArea::declaration() const { return *IFC4X2_IfcQuantityArea_type; } @@ -17700,7 +17700,7 @@ Ifc4x2::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optional< s double Ifc4x2::IfcQuantityCount::CountValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x2::IfcQuantityCount::setCountValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcQuantityCount::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcQuantityCount::declaration() const { return *IFC4X2_IfcQuantityCount_type; } @@ -17712,7 +17712,7 @@ Ifc4x2::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optional< double Ifc4x2::IfcQuantityLength::LengthValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x2::IfcQuantityLength::setLengthValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcQuantityLength::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcQuantityLength::declaration() const { return *IFC4X2_IfcQuantityLength_type; } @@ -17732,7 +17732,7 @@ Ifc4x2::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4x2::IfcOwn double Ifc4x2::IfcQuantityTime::TimeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x2::IfcQuantityTime::setTimeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcQuantityTime::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcQuantityTime::declaration() const { return *IFC4X2_IfcQuantityTime_type; } @@ -17744,7 +17744,7 @@ Ifc4x2::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optional< s double Ifc4x2::IfcQuantityVolume::VolumeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x2::IfcQuantityVolume::setVolumeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcQuantityVolume::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcQuantityVolume::declaration() const { return *IFC4X2_IfcQuantityVolume_type; } @@ -17756,7 +17756,7 @@ Ifc4x2::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::optiona double Ifc4x2::IfcQuantityWeight::WeightValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x2::IfcQuantityWeight::setWeightValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcQuantityWeight::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcQuantityWeight::declaration() const { return *IFC4X2_IfcQuantityWeight_type; } @@ -17766,7 +17766,7 @@ Ifc4x2::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::optiona // Function implementations for IfcRailing boost::optional< ::Ifc4x2::IfcRailingTypeEnum::Value > Ifc4x2::IfcRailing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcRailingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x2::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcRailingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x2::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcRailingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcRailing::declaration() const { return *IFC4X2_IfcRailing_type; } @@ -17786,7 +17786,7 @@ Ifc4x2::IfcRailingType::IfcRailingType(std::string v1_GlobalId, ::Ifc4x2::IfcOwn // Function implementations for IfcRamp boost::optional< ::Ifc4x2::IfcRampTypeEnum::Value > Ifc4x2::IfcRamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcRampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x2::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcRampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x2::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcRampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcRamp::declaration() const { return *IFC4X2_IfcRamp_type; } @@ -17796,7 +17796,7 @@ Ifc4x2::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* v2_ // Function implementations for IfcRampFlight boost::optional< ::Ifc4x2::IfcRampFlightTypeEnum::Value > Ifc4x2::IfcRampFlight::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcRampFlightTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x2::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcRampFlightTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x2::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcRampFlightTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcRampFlight::declaration() const { return *IFC4X2_IfcRampFlight_type; } @@ -17848,9 +17848,9 @@ Ifc4x2::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(i double Ifc4x2::IfcRectangleHollowProfileDef::WallThickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x2::IfcRectangleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x2::IfcRectangleHollowProfileDef::declaration() const { return *IFC4X2_IfcRectangleHollowProfileDef_type; } @@ -17910,19 +17910,19 @@ Ifc4x2::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4x2::Ifc ::Ifc4x2::IfcRecurrenceTypeEnum::Value Ifc4x2::IfcRecurrencePattern::RecurrenceType() const { return ::Ifc4x2::IfcRecurrenceTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x2::IfcRecurrencePattern::setRecurrenceType(::Ifc4x2::IfcRecurrenceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcRecurrenceTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x2::IfcRecurrencePattern::DayComponent() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x2::IfcRecurrencePattern::WeekdayComponent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x2::IfcRecurrencePattern::MonthComponent() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x2::IfcRecurrencePattern::Position() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< int > Ifc4x2::IfcRecurrencePattern::Interval() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } int v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x2::IfcRecurrencePattern::Occurrences() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcTimePeriod >::ptr > Ifc4x2::IfcRecurrencePattern::TimePeriods() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x2::IfcTimePeriod >(); } -void Ifc4x2::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x2::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x2::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x2::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x2::IfcRecurrencePattern::declaration() const { return *IFC4X2_IfcRecurrencePattern_type; } @@ -17932,13 +17932,13 @@ Ifc4x2::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4x2::IfcRecurrenceTypeEn // Function implementations for IfcReference boost::optional< std::string > Ifc4x2::IfcReference::TypeIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcReference::AttributeIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcReference::InstanceName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x2::IfcReference::ListPositions() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x2::IfcReference* Ifc4x2::IfcReference::InnerReference() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x2::IfcReference>(true); } void Ifc4x2::IfcReference::setInnerReference(::Ifc4x2::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -17950,9 +17950,9 @@ Ifc4x2::IfcReference::IfcReference(boost::optional< std::string > v1_TypeIdentif // Function implementations for IfcReferent boost::optional< ::Ifc4x2::IfcReferentTypeEnum::Value > Ifc4x2::IfcReferent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x2::IfcReferentTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x2::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x2::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReferentTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x2::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x2::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReferentTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcReferent::RestartDistance() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcReferent::declaration() const { return *IFC4X2_IfcReferent_type; } @@ -17978,13 +17978,13 @@ void Ifc4x2::IfcReinforcementBarProperties::setTotalCrossSectionArea(double v) { std::string Ifc4x2::IfcReinforcementBarProperties::SteelGrade() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x2::IfcReinforcementBarProperties::setSteelGrade(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x2::IfcReinforcementBarProperties::BarSurface() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x2::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); } -void Ifc4x2::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x2::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcReinforcementBarProperties::EffectiveDepth() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcReinforcementBarProperties::NominalBarDiameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x2::IfcReinforcementBarProperties::BarCount() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x2::IfcReinforcementBarProperties::declaration() const { return *IFC4X2_IfcReinforcementBarProperties_type; } @@ -17994,7 +17994,7 @@ Ifc4x2::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double v1_T // Function implementations for IfcReinforcementDefinitionProperties boost::optional< std::string > Ifc4x2::IfcReinforcementDefinitionProperties::DefinitionType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x2::IfcSectionReinforcementProperties >::ptr Ifc4x2::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x2::IfcSectionReinforcementProperties >(); } void Ifc4x2::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc4x2::IfcSectionReinforcementProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -18006,15 +18006,15 @@ Ifc4x2::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperti // Function implementations for IfcReinforcingBar boost::optional< double > Ifc4x2::IfcReinforcingBar::NominalDiameter() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingBar::CrossSectionArea() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingBar::BarLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x2::IfcReinforcingBarTypeEnum::Value > Ifc4x2::IfcReinforcingBar::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x2::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x2::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x2::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReinforcingBarTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x2::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x2::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReinforcingBarTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x2::IfcReinforcingBar::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x2::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x2::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x2::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x2::IfcReinforcingBar::declaration() const { return *IFC4X2_IfcReinforcingBar_type; } @@ -18026,17 +18026,17 @@ Ifc4x2::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4x2:: ::Ifc4x2::IfcReinforcingBarTypeEnum::Value Ifc4x2::IfcReinforcingBarType::PredefinedType() const { return ::Ifc4x2::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x2::IfcReinforcingBarType::setPredefinedType(::Ifc4x2::IfcReinforcingBarTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcReinforcingBarTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingBarType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingBarType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingBarType::BarLength() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x2::IfcReinforcingBarType::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x2::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x2::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x2::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x2::IfcReinforcingBarType::BendingShapeCode() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x2::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x2::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x2::IfcReinforcingBarType::BendingParameters() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(15); return v; } -void Ifc4x2::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x2::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x2::IfcReinforcingBarType::declaration() const { return *IFC4X2_IfcReinforcingBarType_type; } @@ -18046,7 +18046,7 @@ Ifc4x2::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId, :: // Function implementations for IfcReinforcingElement boost::optional< std::string > Ifc4x2::IfcReinforcingElement::SteelGrade() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcReinforcingElement::declaration() const { return *IFC4X2_IfcReinforcingElement_type; } @@ -18064,23 +18064,23 @@ Ifc4x2::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_Glob // Function implementations for IfcReinforcingMesh boost::optional< double > Ifc4x2::IfcReinforcingMesh::MeshLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMesh::MeshWidth() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x2::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x2::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x2::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x2::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x2::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x2::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMesh::TransverseBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x2::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x2::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< ::Ifc4x2::IfcReinforcingMeshTypeEnum::Value > Ifc4x2::IfcReinforcingMesh::PredefinedType() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } return ::Ifc4x2::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(17)); } -void Ifc4x2::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x2::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReinforcingMeshTypeEnum::ToString(*v)));data_->setArgument(17,attr);} } +void Ifc4x2::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x2::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcReinforcingMeshTypeEnum::ToString(*v)));}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x2::IfcReinforcingMesh::declaration() const { return *IFC4X2_IfcReinforcingMesh_type; } @@ -18092,25 +18092,25 @@ Ifc4x2::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::Ifc4x2 ::Ifc4x2::IfcReinforcingMeshTypeEnum::Value Ifc4x2::IfcReinforcingMeshType::PredefinedType() const { return ::Ifc4x2::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x2::IfcReinforcingMeshType::setPredefinedType(::Ifc4x2::IfcReinforcingMeshTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcReinforcingMeshTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMeshType::MeshLength() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMeshType::MeshWidth() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x2::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x2::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x2::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x2::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x2::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x2::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x2::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x2::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x2::IfcReinforcingMeshType::TransverseBarSpacing() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x2::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x2::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x2::IfcReinforcingMeshType::BendingShapeCode() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x2::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x2::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x2::IfcReinforcingMeshType::BendingParameters() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(19); return v; } -void Ifc4x2::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x2::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x2::IfcReinforcingMeshType::declaration() const { return *IFC4X2_IfcReinforcingMeshType_type; } @@ -18134,7 +18134,7 @@ Ifc4x2::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4x2::If aggregate_of< ::Ifc4x2::IfcObjectDefinition >::ptr Ifc4x2::IfcRelAssigns::RelatedObjects() const { aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x2::IfcObjectDefinition >(); } void Ifc4x2::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc4x2::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} } boost::optional< ::Ifc4x2::IfcObjectTypeEnum::Value > Ifc4x2::IfcRelAssigns::RelatedObjectsType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x2::IfcObjectTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x2::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x2::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcObjectTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x2::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x2::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcObjectTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x2::IfcRelAssigns::declaration() const { return *IFC4X2_IfcRelAssigns_type; } @@ -18248,7 +18248,7 @@ Ifc4x2::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std::stri // Function implementations for IfcRelAssociatesConstraint boost::optional< std::string > Ifc4x2::IfcRelAssociatesConstraint::Intent() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x2::IfcConstraint* Ifc4x2::IfcRelAssociatesConstraint::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcConstraint>(true); } void Ifc4x2::IfcRelAssociatesConstraint::setRelatingConstraint(::Ifc4x2::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -18374,7 +18374,7 @@ void Ifc4x2::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc4x2::IfcBo ::Ifc4x2::IfcStructuralConnectionCondition* Ifc4x2::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x2::IfcStructuralConnectionCondition>(true); } void Ifc4x2::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc4x2::IfcStructuralConnectionCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcRelConnectsStructuralMember::SupportedLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x2::IfcAxis2Placement3D* Ifc4x2::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x2::IfcAxis2Placement3D>(true); } void Ifc4x2::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc4x2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -18398,7 +18398,7 @@ Ifc4x2::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std::stri aggregate_of< ::Ifc4x2::IfcElement >::ptr Ifc4x2::IfcRelConnectsWithRealizingElements::RealizingElements() const { aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x2::IfcElement >(); } void Ifc4x2::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc4x2::IfcElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcRelConnectsWithRealizingElements::declaration() const { return *IFC4X2_IfcRelConnectsWithRealizingElements_type; } @@ -18550,7 +18550,7 @@ void Ifc4x2::IfcRelInterferesElements::setRelatedElement(::Ifc4x2::IfcElement* v ::Ifc4x2::IfcConnectionGeometry* Ifc4x2::IfcRelInterferesElements::InterferenceGeometry() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcConnectionGeometry>(true); } void Ifc4x2::IfcRelInterferesElements::setInterferenceGeometry(::Ifc4x2::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcRelInterferesElements::InterferenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::logic::tribool Ifc4x2::IfcRelInterferesElements::ImpliedOrder() const { boost::logic::tribool v = *data_->getArgument(8); return v; } void Ifc4x2::IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -18616,9 +18616,9 @@ void Ifc4x2::IfcRelSequence::setRelatedProcess(::Ifc4x2::IfcProcess* v) { {IfcWr ::Ifc4x2::IfcLagTime* Ifc4x2::IfcRelSequence::TimeLag() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcLagTime>(true); } void Ifc4x2::IfcRelSequence::setTimeLag(::Ifc4x2::IfcLagTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x2::IfcSequenceEnum::Value > Ifc4x2::IfcRelSequence::SequenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSequenceEnum::FromString(*data_->getArgument(7)); } -void Ifc4x2::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x2::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSequenceEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x2::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x2::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSequenceEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcRelSequence::UserDefinedSequenceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcRelSequence::declaration() const { return *IFC4X2_IfcRelSequence_type; } @@ -18712,9 +18712,9 @@ Ifc4x2::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveS ::Ifc4x2::IfcRepresentationContext* Ifc4x2::IfcRepresentation::ContextOfItems() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x2::IfcRepresentationContext>(true); } void Ifc4x2::IfcRepresentation::setContextOfItems(::Ifc4x2::IfcRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcRepresentation::RepresentationIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcRepresentation::RepresentationType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } aggregate_of< ::Ifc4x2::IfcRepresentationItem >::ptr Ifc4x2::IfcRepresentation::Items() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x2::IfcRepresentationItem >(); } void Ifc4x2::IfcRepresentation::setItems(aggregate_of< ::Ifc4x2::IfcRepresentationItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } @@ -18729,9 +18729,9 @@ Ifc4x2::IfcRepresentation::IfcRepresentation(::Ifc4x2::IfcRepresentationContext* // Function implementations for IfcRepresentationContext boost::optional< std::string > Ifc4x2::IfcRepresentationContext::ContextIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcRepresentationContext::ContextType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x2::IfcRepresentation::list::ptr Ifc4x2::IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(IFC4X2_IfcRepresentation_type, 0)->as(); } @@ -18766,9 +18766,9 @@ Ifc4x2::IfcRepresentationMap::IfcRepresentationMap(::Ifc4x2::IfcAxis2Placement* // Function implementations for IfcResource boost::optional< std::string > Ifc4x2::IfcResource::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcResource::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x2::IfcRelAssignsToResource::list::ptr Ifc4x2::IfcResource::ResourceOf() const { return data_->getInverse(IFC4X2_IfcRelAssignsToResource_type, 6)->as(); } @@ -18803,9 +18803,9 @@ Ifc4x2::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(boo // Function implementations for IfcResourceLevelRelationship boost::optional< std::string > Ifc4x2::IfcResourceLevelRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcResourceLevelRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x2::IfcResourceLevelRelationship::declaration() const { return *IFC4X2_IfcResourceLevelRelationship_type; } @@ -18815,35 +18815,35 @@ Ifc4x2::IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::option // Function implementations for IfcResourceTime boost::optional< std::string > Ifc4x2::IfcResourceTime::ScheduleWork() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcResourceTime::ScheduleUsage() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcResourceTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcResourceTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcResourceTime::ScheduleContour() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcResourceTime::LevelingDelay() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< bool > Ifc4x2::IfcResourceTime::IsOverAllocated() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x2::IfcResourceTime::StatusTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x2::IfcResourceTime::ActualWork() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x2::IfcResourceTime::ActualUsage() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x2::IfcResourceTime::ActualStart() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x2::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x2::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x2::IfcResourceTime::ActualFinish() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x2::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x2::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x2::IfcResourceTime::RemainingWork() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x2::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x2::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x2::IfcResourceTime::RemainingUsage() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x2::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x2::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x2::IfcResourceTime::Completion() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x2::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x2::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x2::IfcResourceTime::declaration() const { return *IFC4X2_IfcResourceTime_type; } @@ -18899,7 +18899,7 @@ Ifc4x2::IfcRightCircularCylinder::IfcRightCircularCylinder(::Ifc4x2::IfcAxis2Pla // Function implementations for IfcRoof boost::optional< ::Ifc4x2::IfcRoofTypeEnum::Value > Ifc4x2::IfcRoof::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcRoofTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x2::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcRoofTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x2::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcRoofTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcRoof::declaration() const { return *IFC4X2_IfcRoof_type; } @@ -18923,9 +18923,9 @@ void Ifc4x2::IfcRoot::setGlobalId(std::string v) { {IfcWrite::IfcWriteArgument* ::Ifc4x2::IfcOwnerHistory* Ifc4x2::IfcRoot::OwnerHistory() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x2::IfcOwnerHistory>(true); } void Ifc4x2::IfcRoot::setOwnerHistory(::Ifc4x2::IfcOwnerHistory* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcRoot::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x2::IfcRoot::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcRoot::declaration() const { return *IFC4X2_IfcRoot_type; } @@ -18945,7 +18945,7 @@ Ifc4x2::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4x2::I // Function implementations for IfcSIUnit boost::optional< ::Ifc4x2::IfcSIPrefix::Value > Ifc4x2::IfcSIUnit::Prefix() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSIPrefix::FromString(*data_->getArgument(2)); } -void Ifc4x2::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x2::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSIPrefix::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x2::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x2::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSIPrefix::ToString(*v)));}data_->setArgument(2,attr);} } ::Ifc4x2::IfcSIUnitName::Value Ifc4x2::IfcSIUnit::Name() const { return ::Ifc4x2::IfcSIUnitName::FromString(*data_->getArgument(3)); } void Ifc4x2::IfcSIUnit::setName(::Ifc4x2::IfcSIUnitName::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcSIUnitName::ToString(v)));data_->setArgument(3,attr);} } @@ -18957,7 +18957,7 @@ Ifc4x2::IfcSIUnit::IfcSIUnit(::Ifc4x2::IfcUnitEnum::Value v2_UnitType, boost::op // Function implementations for IfcSanitaryTerminal boost::optional< ::Ifc4x2::IfcSanitaryTerminalTypeEnum::Value > Ifc4x2::IfcSanitaryTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x2::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSanitaryTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x2::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSanitaryTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSanitaryTerminal::declaration() const { return *IFC4X2_IfcSanitaryTerminal_type; } @@ -18977,11 +18977,11 @@ Ifc4x2::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_GlobalId // Function implementations for IfcSchedulingTime boost::optional< std::string > Ifc4x2::IfcSchedulingTime::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< ::Ifc4x2::IfcDataOriginEnum::Value > Ifc4x2::IfcSchedulingTime::DataOrigin() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } return ::Ifc4x2::IfcDataOriginEnum::FromString(*data_->getArgument(1)); } -void Ifc4x2::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x2::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDataOriginEnum::ToString(*v)));data_->setArgument(1,attr);} } +void Ifc4x2::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x2::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcDataOriginEnum::ToString(*v)));}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcSchedulingTime::UserDefinedDataOrigin() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcSchedulingTime::declaration() const { return *IFC4X2_IfcSchedulingTime_type; } @@ -19017,7 +19017,7 @@ void Ifc4x2::IfcSectionReinforcementProperties::setLongitudinalStartPosition(dou double Ifc4x2::IfcSectionReinforcementProperties::LongitudinalEndPosition() const { double v = *data_->getArgument(1); return v; } void Ifc4x2::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcSectionReinforcementProperties::TransversePosition() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcReinforcingBarRoleEnum::Value Ifc4x2::IfcSectionReinforcementProperties::ReinforcementRole() const { return ::Ifc4x2::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); } void Ifc4x2::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc4x2::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(3,attr);} } ::Ifc4x2::IfcSectionProperties* Ifc4x2::IfcSectionReinforcementProperties::SectionDefinition() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x2::IfcSectionProperties>(true); } @@ -19071,7 +19071,7 @@ Ifc4x2::IfcSectionedSpine::IfcSectionedSpine(::Ifc4x2::IfcCompositeCurve* v1_Spi // Function implementations for IfcSensor boost::optional< ::Ifc4x2::IfcSensorTypeEnum::Value > Ifc4x2::IfcSensor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSensorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x2::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSensorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x2::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSensorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSensor::declaration() const { return *IFC4X2_IfcSensor_type; } @@ -19091,7 +19091,7 @@ Ifc4x2::IfcSensorType::IfcSensorType(std::string v1_GlobalId, ::Ifc4x2::IfcOwner // Function implementations for IfcShadingDevice boost::optional< ::Ifc4x2::IfcShadingDeviceTypeEnum::Value > Ifc4x2::IfcShadingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcShadingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcShadingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcShadingDevice::declaration() const { return *IFC4X2_IfcShadingDevice_type; } @@ -19113,9 +19113,9 @@ Ifc4x2::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, ::If aggregate_of< ::Ifc4x2::IfcShapeModel >::ptr Ifc4x2::IfcShapeAspect::ShapeRepresentations() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x2::IfcShapeModel >(); } void Ifc4x2::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc4x2::IfcShapeModel >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcShapeAspect::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcShapeAspect::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::logic::tribool Ifc4x2::IfcShapeAspect::ProductDefinitional() const { boost::logic::tribool v = *data_->getArgument(3); return v; } void Ifc4x2::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x2::IfcProductRepresentationSelect* Ifc4x2::IfcShapeAspect::PartOfProductDefinitionShape() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x2::IfcProductRepresentationSelect>(true); } @@ -19165,11 +19165,11 @@ Ifc4x2::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::optiona // Function implementations for IfcSimplePropertyTemplate boost::optional< ::Ifc4x2::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4x2::IfcSimplePropertyTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSimplePropertyTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x2::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x2::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x2::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x2::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x2::IfcPropertyEnumeration* Ifc4x2::IfcSimplePropertyTemplate::Enumerators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x2::IfcPropertyEnumeration>(true); } void Ifc4x2::IfcSimplePropertyTemplate::setEnumerators(::Ifc4x2::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x2::IfcUnit* Ifc4x2::IfcSimplePropertyTemplate::PrimaryUnit() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x2::IfcUnit>(true); } @@ -19177,9 +19177,9 @@ void Ifc4x2::IfcSimplePropertyTemplate::setPrimaryUnit(::Ifc4x2::IfcUnit* v) { { ::Ifc4x2::IfcUnit* Ifc4x2::IfcSimplePropertyTemplate::SecondaryUnit() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x2::IfcUnit>(true); } void Ifc4x2::IfcSimplePropertyTemplate::setSecondaryUnit(::Ifc4x2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x2::IfcSimplePropertyTemplate::Expression() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x2::IfcStateEnum::Value > Ifc4x2::IfcSimplePropertyTemplate::AccessState() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x2::IfcStateEnum::FromString(*data_->getArgument(11)); } -void Ifc4x2::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x2::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcStateEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x2::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x2::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcStateEnum::ToString(*v)));}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x2::IfcSimplePropertyTemplate::declaration() const { return *IFC4X2_IfcSimplePropertyTemplate_type; } @@ -19189,13 +19189,13 @@ Ifc4x2::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_Glob // Function implementations for IfcSite boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x2::IfcSite::RefLatitude() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x2::IfcSite::RefLongitude() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcSite::RefElevation() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x2::IfcSite::LandTitleNumber() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x2::IfcPostalAddress* Ifc4x2::IfcSite::SiteAddress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x2::IfcPostalAddress>(true); } void Ifc4x2::IfcSite::setSiteAddress(::Ifc4x2::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -19207,7 +19207,7 @@ Ifc4x2::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* v2_ // Function implementations for IfcSlab boost::optional< ::Ifc4x2::IfcSlabTypeEnum::Value > Ifc4x2::IfcSlab::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSlabTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x2::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSlabTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x2::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSlabTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSlab::declaration() const { return *IFC4X2_IfcSlab_type; } @@ -19243,11 +19243,11 @@ Ifc4x2::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHist // Function implementations for IfcSlippageConnectionCondition boost::optional< double > Ifc4x2::IfcSlippageConnectionCondition::SlippageX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcSlippageConnectionCondition::SlippageY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcSlippageConnectionCondition::SlippageZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcSlippageConnectionCondition::declaration() const { return *IFC4X2_IfcSlippageConnectionCondition_type; } @@ -19257,7 +19257,7 @@ Ifc4x2::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost::op // Function implementations for IfcSolarDevice boost::optional< ::Ifc4x2::IfcSolarDeviceTypeEnum::Value > Ifc4x2::IfcSolarDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSolarDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSolarDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSolarDevice::declaration() const { return *IFC4X2_IfcSolarDevice_type; } @@ -19285,9 +19285,9 @@ Ifc4x2::IfcSolidModel::IfcSolidModel() : IfcGeometricRepresentationItem((IfcEnti // Function implementations for IfcSpace boost::optional< ::Ifc4x2::IfcSpaceTypeEnum::Value > Ifc4x2::IfcSpace::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x2::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x2::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSpaceTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x2::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x2::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSpaceTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcSpace::ElevationWithFlooring() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x2::IfcRelCoversSpaces::list::ptr Ifc4x2::IfcSpace::HasCoverings() const { return data_->getInverse(IFC4X2_IfcRelCoversSpaces_type, 4)->as(); } ::Ifc4x2::IfcRelSpaceBoundary::list::ptr Ifc4x2::IfcSpace::BoundedBy() const { return data_->getInverse(IFC4X2_IfcRelSpaceBoundary_type, 4)->as(); } @@ -19299,7 +19299,7 @@ Ifc4x2::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* v // Function implementations for IfcSpaceHeater boost::optional< ::Ifc4x2::IfcSpaceHeaterTypeEnum::Value > Ifc4x2::IfcSpaceHeater::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x2::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSpaceHeaterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x2::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSpaceHeaterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSpaceHeater::declaration() const { return *IFC4X2_IfcSpaceHeater_type; } @@ -19321,7 +19321,7 @@ Ifc4x2::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::Ifc4x2 ::Ifc4x2::IfcSpaceTypeEnum::Value Ifc4x2::IfcSpaceType::PredefinedType() const { return ::Ifc4x2::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x2::IfcSpaceType::setPredefinedType(::Ifc4x2::IfcSpaceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcSpaceTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x2::IfcSpaceType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcSpaceType::declaration() const { return *IFC4X2_IfcSpaceType_type; } @@ -19331,7 +19331,7 @@ Ifc4x2::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHi // Function implementations for IfcSpatialElement boost::optional< std::string > Ifc4x2::IfcSpatialElement::LongName() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x2::IfcRelContainedInSpatialStructure::list::ptr Ifc4x2::IfcSpatialElement::ContainsElements() const { return data_->getInverse(IFC4X2_IfcRelContainedInSpatialStructure_type, 5)->as(); } ::Ifc4x2::IfcRelServicesBuildings::list::ptr Ifc4x2::IfcSpatialElement::ServicedBySystems() const { return data_->getInverse(IFC4X2_IfcRelServicesBuildings_type, 5)->as(); } @@ -19344,7 +19344,7 @@ Ifc4x2::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4x2:: // Function implementations for IfcSpatialElementType boost::optional< std::string > Ifc4x2::IfcSpatialElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSpatialElementType::declaration() const { return *IFC4X2_IfcSpatialElementType_type; } @@ -19354,7 +19354,7 @@ Ifc4x2::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId, :: // Function implementations for IfcSpatialStructureElement boost::optional< ::Ifc4x2::IfcElementCompositionEnum::Value > Ifc4x2::IfcSpatialStructureElement::CompositionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x2::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElementCompositionEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x2::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcElementCompositionEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSpatialStructureElement::declaration() const { return *IFC4X2_IfcSpatialStructureElement_type; } @@ -19372,7 +19372,7 @@ Ifc4x2::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std::stri // Function implementations for IfcSpatialZone boost::optional< ::Ifc4x2::IfcSpatialZoneTypeEnum::Value > Ifc4x2::IfcSpatialZone::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x2::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSpatialZoneTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x2::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSpatialZoneTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSpatialZone::declaration() const { return *IFC4X2_IfcSpatialZone_type; } @@ -19384,7 +19384,7 @@ Ifc4x2::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4x2::IfcOwn ::Ifc4x2::IfcSpatialZoneTypeEnum::Value Ifc4x2::IfcSpatialZoneType::PredefinedType() const { return ::Ifc4x2::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x2::IfcSpatialZoneType::setPredefinedType(::Ifc4x2::IfcSpatialZoneTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcSpatialZoneTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x2::IfcSpatialZoneType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcSpatialZoneType::declaration() const { return *IFC4X2_IfcSpatialZoneType_type; } @@ -19414,7 +19414,7 @@ Ifc4x2::IfcSphericalSurface::IfcSphericalSurface(::Ifc4x2::IfcAxis2Placement3D* // Function implementations for IfcStackTerminal boost::optional< ::Ifc4x2::IfcStackTerminalTypeEnum::Value > Ifc4x2::IfcStackTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x2::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcStackTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x2::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcStackTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcStackTerminal::declaration() const { return *IFC4X2_IfcStackTerminal_type; } @@ -19434,7 +19434,7 @@ Ifc4x2::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, ::If // Function implementations for IfcStair boost::optional< ::Ifc4x2::IfcStairTypeEnum::Value > Ifc4x2::IfcStair::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcStairTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcStair::setPredefinedType(boost::optional< ::Ifc4x2::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcStairTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcStair::setPredefinedType(boost::optional< ::Ifc4x2::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcStairTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcStair::declaration() const { return *IFC4X2_IfcStair_type; } @@ -19444,15 +19444,15 @@ Ifc4x2::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* v // Function implementations for IfcStairFlight boost::optional< int > Ifc4x2::IfcStairFlight::NumberOfRisers() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } int v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< int > Ifc4x2::IfcStairFlight::NumberOfTreads() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcStairFlight::RiserHeight() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcStairFlight::TreadLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x2::IfcStairFlightTypeEnum::Value > Ifc4x2::IfcStairFlight::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x2::IfcStairFlightTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x2::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x2::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcStairFlightTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x2::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x2::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcStairFlightTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x2::IfcStairFlight::declaration() const { return *IFC4X2_IfcStairFlight_type; } @@ -19482,7 +19482,7 @@ Ifc4x2::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHi // Function implementations for IfcStructuralAction boost::optional< bool > Ifc4x2::IfcStructuralAction::DestabilizingLoad() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralAction::declaration() const { return *IFC4X2_IfcStructuralAction_type; } @@ -19509,9 +19509,9 @@ void Ifc4x2::IfcStructuralAnalysisModel::setPredefinedType(::Ifc4x2::IfcAnalysis ::Ifc4x2::IfcAxis2Placement3D* Ifc4x2::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcAxis2Placement3D>(true); } void Ifc4x2::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc4x2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcStructuralLoadGroup >::ptr > Ifc4x2::IfcStructuralAnalysisModel::LoadedBy() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x2::IfcStructuralLoadGroup >(); } -void Ifc4x2::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x2::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x2::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x2::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcStructuralResultGroup >::ptr > Ifc4x2::IfcStructuralAnalysisModel::HasResults() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x2::IfcStructuralResultGroup >(); } -void Ifc4x2::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x2::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x2::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x2::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x2::IfcObjectPlacement* Ifc4x2::IfcStructuralAnalysisModel::SharedPlacement() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x2::IfcObjectPlacement>(true); } void Ifc4x2::IfcStructuralAnalysisModel::setSharedPlacement(::Ifc4x2::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -19534,7 +19534,7 @@ Ifc4x2::IfcStructuralConnection::IfcStructuralConnection(std::string v1_GlobalId // Function implementations for IfcStructuralConnectionCondition boost::optional< std::string > Ifc4x2::IfcStructuralConnectionCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralConnectionCondition::declaration() const { return *IFC4X2_IfcStructuralConnectionCondition_type; } @@ -19544,7 +19544,7 @@ Ifc4x2::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(boost // Function implementations for IfcStructuralCurveAction boost::optional< ::Ifc4x2::IfcProjectedOrTrueLengthEnum::Value > Ifc4x2::IfcStructuralCurveAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x2::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x2::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x2::IfcStructuralCurveActivityTypeEnum::Value Ifc4x2::IfcStructuralCurveAction::PredefinedType() const { return ::Ifc4x2::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x2::IfcStructuralCurveAction::setPredefinedType(::Ifc4x2::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -19613,7 +19613,7 @@ Ifc4x2::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_Glob // Function implementations for IfcStructuralLoad boost::optional< std::string > Ifc4x2::IfcStructuralLoad::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralLoad::declaration() const { return *IFC4X2_IfcStructuralLoad_type; } @@ -19623,7 +19623,7 @@ Ifc4x2::IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > v1_N // Function implementations for IfcStructuralLoadCase boost::optional< std::vector< double > /*[3:3]*/ > Ifc4x2::IfcStructuralLoadCase::SelfWeightCoefficients() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< double > /*[3:3]*/ v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralLoadCase::declaration() const { return *IFC4X2_IfcStructuralLoadCase_type; } @@ -19635,7 +19635,7 @@ Ifc4x2::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId, :: aggregate_of< ::Ifc4x2::IfcStructuralLoadOrResult >::ptr Ifc4x2::IfcStructuralLoadConfiguration::Values() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x2::IfcStructuralLoadOrResult >(); } void Ifc4x2::IfcStructuralLoadConfiguration::setValues(aggregate_of< ::Ifc4x2::IfcStructuralLoadOrResult >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::vector< std::vector< double > > > Ifc4x2::IfcStructuralLoadConfiguration::Locations() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralLoadConfiguration::declaration() const { return *IFC4X2_IfcStructuralLoadConfiguration_type; } @@ -19651,9 +19651,9 @@ void Ifc4x2::IfcStructuralLoadGroup::setActionType(::Ifc4x2::IfcActionTypeEnum:: ::Ifc4x2::IfcActionSourceTypeEnum::Value Ifc4x2::IfcStructuralLoadGroup::ActionSource() const { return ::Ifc4x2::IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x2::IfcStructuralLoadGroup::setActionSource(::Ifc4x2::IfcActionSourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcActionSourceTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadGroup::Coefficient() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x2::IfcStructuralLoadGroup::Purpose() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x2::IfcStructuralResultGroup::list::ptr Ifc4x2::IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(IFC4X2_IfcStructuralResultGroup_type, 6)->as(); } ::Ifc4x2::IfcStructuralAnalysisModel::list::ptr Ifc4x2::IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(IFC4X2_IfcStructuralAnalysisModel_type, 7)->as(); } @@ -19665,17 +19665,17 @@ Ifc4x2::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_GlobalId, // Function implementations for IfcStructuralLoadLinearForce boost::optional< double > Ifc4x2::IfcStructuralLoadLinearForce::LinearForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadLinearForce::LinearForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadLinearForce::LinearForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadLinearForce::LinearMomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadLinearForce::LinearMomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralLoadLinearForce::declaration() const { return *IFC4X2_IfcStructuralLoadLinearForce_type; } @@ -19693,11 +19693,11 @@ Ifc4x2::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional< st // Function implementations for IfcStructuralLoadPlanarForce boost::optional< double > Ifc4x2::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralLoadPlanarForce::declaration() const { return *IFC4X2_IfcStructuralLoadPlanarForce_type; } @@ -19707,17 +19707,17 @@ Ifc4x2::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::option // Function implementations for IfcStructuralLoadSingleDisplacement boost::optional< double > Ifc4x2::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralLoadSingleDisplacement::declaration() const { return *IFC4X2_IfcStructuralLoadSingleDisplacement_type; } @@ -19727,7 +19727,7 @@ Ifc4x2::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement // Function implementations for IfcStructuralLoadSingleDisplacementDistortion boost::optional< double > Ifc4x2::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IFC4X2_IfcStructuralLoadSingleDisplacementDistortion_type; } @@ -19737,17 +19737,17 @@ Ifc4x2::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDi // Function implementations for IfcStructuralLoadSingleForce boost::optional< double > Ifc4x2::IfcStructuralLoadSingleForce::ForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadSingleForce::ForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadSingleForce::ForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadSingleForce::MomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadSingleForce::MomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadSingleForce::MomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralLoadSingleForce::declaration() const { return *IFC4X2_IfcStructuralLoadSingleForce_type; } @@ -19757,7 +19757,7 @@ Ifc4x2::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::option // Function implementations for IfcStructuralLoadSingleForceWarping boost::optional< double > Ifc4x2::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralLoadSingleForceWarping::declaration() const { return *IFC4X2_IfcStructuralLoadSingleForceWarping_type; } @@ -19775,11 +19775,11 @@ Ifc4x2::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< std::s // Function implementations for IfcStructuralLoadTemperature boost::optional< double > Ifc4x2::IfcStructuralLoadTemperature::DeltaTConstant() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadTemperature::DeltaTY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcStructuralLoadTemperature::DeltaTZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralLoadTemperature::declaration() const { return *IFC4X2_IfcStructuralLoadTemperature_type; } @@ -19855,7 +19855,7 @@ Ifc4x2::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_Global // Function implementations for IfcStructuralSurfaceAction boost::optional< ::Ifc4x2::IfcProjectedOrTrueLengthEnum::Value > Ifc4x2::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x2::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x2::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x2::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x2::IfcStructuralSurfaceAction::PredefinedType() const { return ::Ifc4x2::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x2::IfcStructuralSurfaceAction::setPredefinedType(::Ifc4x2::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -19877,7 +19877,7 @@ Ifc4x2::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std::stri ::Ifc4x2::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4x2::IfcStructuralSurfaceMember::PredefinedType() const { return ::Ifc4x2::IfcStructuralSurfaceMemberTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x2::IfcStructuralSurfaceMember::setPredefinedType(::Ifc4x2::IfcStructuralSurfaceMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcStructuralSurfaceMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcStructuralSurfaceMember::Thickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcStructuralSurfaceMember::declaration() const { return *IFC4X2_IfcStructuralSurfaceMember_type; } @@ -19917,7 +19917,7 @@ void Ifc4x2::IfcStyledItem::setItem(::Ifc4x2::IfcRepresentationItem* v) { {IfcWr aggregate_of_instance::ptr Ifc4x2::IfcStyledItem::Styles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4x2::IfcStyledItem::setStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcStyledItem::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcStyledItem::declaration() const { return *IFC4X2_IfcStyledItem_type; } @@ -19935,7 +19935,7 @@ Ifc4x2::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4x2::IfcRepresenta // Function implementations for IfcSubContractResource boost::optional< ::Ifc4x2::IfcSubContractResourceTypeEnum::Value > Ifc4x2::IfcSubContractResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSubContractResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x2::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSubContractResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcSubContractResource::declaration() const { return *IFC4X2_IfcSubContractResource_type; } @@ -19989,9 +19989,9 @@ Ifc4x2::IfcSurfaceCurve::IfcSurfaceCurve(::Ifc4x2::IfcCurve* v1_Curve3D, aggrega ::Ifc4x2::IfcCurve* Ifc4x2::IfcSurfaceCurveSweptAreaSolid::Directrix() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x2::IfcCurve>(true); } void Ifc4x2::IfcSurfaceCurveSweptAreaSolid::setDirectrix(::Ifc4x2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcSurfaceCurveSweptAreaSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcSurfaceCurveSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcSurfaceCurveSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcSurfaceCurveSweptAreaSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcSurfaceCurveSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcSurfaceCurveSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x2::IfcSurface* Ifc4x2::IfcSurfaceCurveSweptAreaSolid::ReferenceSurface() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x2::IfcSurface>(true); } void Ifc4x2::IfcSurfaceCurveSweptAreaSolid::setReferenceSurface(::Ifc4x2::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -20003,7 +20003,7 @@ Ifc4x2::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4x2::I // Function implementations for IfcSurfaceFeature boost::optional< ::Ifc4x2::IfcSurfaceFeatureTypeEnum::Value > Ifc4x2::IfcSurfaceFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSurfaceFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x2::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSurfaceFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x2::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSurfaceFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSurfaceFeature::declaration() const { return *IFC4X2_IfcSurfaceFeature_type; } @@ -20035,11 +20035,11 @@ Ifc4x2::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4x2::IfcProfileDef* // Function implementations for IfcSurfaceReinforcementArea boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x2::IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x2::IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x2::IfcSurfaceReinforcementArea::declaration() const { return *IFC4X2_IfcSurfaceReinforcementArea_type; } @@ -20077,9 +20077,9 @@ Ifc4x2::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4x2::IfcColourRgb* // Function implementations for IfcSurfaceStyleRefraction boost::optional< double > Ifc4x2::IfcSurfaceStyleRefraction::RefractionIndex() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< double > Ifc4x2::IfcSurfaceStyleRefraction::DispersionFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x2::IfcSurfaceStyleRefraction::declaration() const { return *IFC4X2_IfcSurfaceStyleRefraction_type; } @@ -20113,7 +20113,7 @@ Ifc4x2::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4x2::IfcColourRg ::Ifc4x2::IfcColourRgb* Ifc4x2::IfcSurfaceStyleShading::SurfaceColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x2::IfcColourRgb>(true); } void Ifc4x2::IfcSurfaceStyleShading::setSurfaceColour(::Ifc4x2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x2::IfcSurfaceStyleShading::Transparency() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x2::IfcSurfaceStyleShading::declaration() const { return *IFC4X2_IfcSurfaceStyleShading_type; } @@ -20137,11 +20137,11 @@ void Ifc4x2::IfcSurfaceTexture::setRepeatS(bool v) { {IfcWrite::IfcWriteArgument bool Ifc4x2::IfcSurfaceTexture::RepeatT() const { bool v = *data_->getArgument(1); return v; } void Ifc4x2::IfcSurfaceTexture::setRepeatT(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcSurfaceTexture::Mode() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcCartesianTransformationOperator2D* Ifc4x2::IfcSurfaceTexture::TextureTransform() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcCartesianTransformationOperator2D>(true); } void Ifc4x2::IfcSurfaceTexture::setTextureTransform(::Ifc4x2::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcSurfaceTexture::Parameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x2::IfcTextureCoordinate::list::ptr Ifc4x2::IfcSurfaceTexture::IsMappedBy() const { return data_->getInverse(IFC4X2_IfcTextureCoordinate_type, 0)->as(); } ::Ifc4x2::IfcSurfaceStyleWithTextures::list::ptr Ifc4x2::IfcSurfaceTexture::UsedInStyles() const { return data_->getInverse(IFC4X2_IfcSurfaceStyleWithTextures_type, 0)->as(); } @@ -20169,11 +20169,11 @@ void Ifc4x2::IfcSweptDiskSolid::setDirectrix(::Ifc4x2::IfcCurve* v) { {IfcWrite: double Ifc4x2::IfcSweptDiskSolid::Radius() const { double v = *data_->getArgument(1); return v; } void Ifc4x2::IfcSweptDiskSolid::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x2::IfcSweptDiskSolid::InnerRadius() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x2::IfcSweptDiskSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcSweptDiskSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcSweptDiskSolid::declaration() const { return *IFC4X2_IfcSweptDiskSolid_type; } @@ -20183,7 +20183,7 @@ Ifc4x2::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4x2::IfcCurve* v1_Directrix, d // Function implementations for IfcSweptDiskSolidPolygonal boost::optional< double > Ifc4x2::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x2::IfcSweptDiskSolidPolygonal::declaration() const { return *IFC4X2_IfcSweptDiskSolidPolygonal_type; } @@ -20205,7 +20205,7 @@ Ifc4x2::IfcSweptSurface::IfcSweptSurface(::Ifc4x2::IfcProfileDef* v1_SweptCurve, // Function implementations for IfcSwitchingDevice boost::optional< ::Ifc4x2::IfcSwitchingDeviceTypeEnum::Value > Ifc4x2::IfcSwitchingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSwitchingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x2::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSwitchingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSwitchingDevice::declaration() const { return *IFC4X2_IfcSwitchingDevice_type; } @@ -20234,7 +20234,7 @@ Ifc4x2::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* // Function implementations for IfcSystemFurnitureElement boost::optional< ::Ifc4x2::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x2::IfcSystemFurnitureElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcSystemFurnitureElement::declaration() const { return *IFC4X2_IfcSystemFurnitureElement_type; } @@ -20244,7 +20244,7 @@ Ifc4x2::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_Glob // Function implementations for IfcSystemFurnitureElementType boost::optional< ::Ifc4x2::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x2::IfcSystemFurnitureElementType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x2::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x2::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x2::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x2::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x2::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcSystemFurnitureElementType::declaration() const { return *IFC4X2_IfcSystemFurnitureElementType_type; } @@ -20262,15 +20262,15 @@ void Ifc4x2::IfcTShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc4x2::IfcTShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x2::IfcTShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcTShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x2::IfcTShapeProfileDef::WebEdgeRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcTShapeProfileDef::WebSlope() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcTShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x2::IfcTShapeProfileDef::declaration() const { return *IFC4X2_IfcTShapeProfileDef_type; } @@ -20280,11 +20280,11 @@ Ifc4x2::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4x2::IfcProfileTypeEnum::V // Function implementations for IfcTable boost::optional< std::string > Ifc4x2::IfcTable::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcTableRow >::ptr > Ifc4x2::IfcTable::Rows() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x2::IfcTableRow >(); } -void Ifc4x2::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x2::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x2::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x2::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcTableColumn >::ptr > Ifc4x2::IfcTable::Columns() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x2::IfcTableColumn >(); } -void Ifc4x2::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x2::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x2::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x2::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcTable::declaration() const { return *IFC4X2_IfcTable_type; } @@ -20294,11 +20294,11 @@ Ifc4x2::IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::option // Function implementations for IfcTableColumn boost::optional< std::string > Ifc4x2::IfcTableColumn::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcTableColumn::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcTableColumn::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcUnit* Ifc4x2::IfcTableColumn::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcUnit>(true); } void Ifc4x2::IfcTableColumn::setUnit(::Ifc4x2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x2::IfcReference* Ifc4x2::IfcTableColumn::ReferencePath() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x2::IfcReference>(true); } @@ -20312,9 +20312,9 @@ Ifc4x2::IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Identif // Function implementations for IfcTableRow boost::optional< aggregate_of_instance::ptr > Ifc4x2::IfcTableRow::RowCells() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(0); return v; } -void Ifc4x2::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x2::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< bool > Ifc4x2::IfcTableRow::IsHeading() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x2::IfcTableRow::declaration() const { return *IFC4X2_IfcTableRow_type; } @@ -20324,7 +20324,7 @@ Ifc4x2::IfcTableRow::IfcTableRow(boost::optional< aggregate_of_instance::ptr > v // Function implementations for IfcTank boost::optional< ::Ifc4x2::IfcTankTypeEnum::Value > Ifc4x2::IfcTank::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcTankTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcTank::setPredefinedType(boost::optional< ::Ifc4x2::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTankTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcTank::setPredefinedType(boost::optional< ::Ifc4x2::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTankTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcTank::declaration() const { return *IFC4X2_IfcTank_type; } @@ -20344,17 +20344,17 @@ Ifc4x2::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHist // Function implementations for IfcTask boost::optional< std::string > Ifc4x2::IfcTask::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcTask::WorkMethod() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } bool Ifc4x2::IfcTask::IsMilestone() const { bool v = *data_->getArgument(9); return v; } void Ifc4x2::IfcTask::setIsMilestone(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< int > Ifc4x2::IfcTask::Priority() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } int v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x2::IfcTaskTime* Ifc4x2::IfcTask::TaskTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x2::IfcTaskTime>(true); } void Ifc4x2::IfcTask::setTaskTime(::Ifc4x2::IfcTaskTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< ::Ifc4x2::IfcTaskTypeEnum::Value > Ifc4x2::IfcTask::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x2::IfcTaskTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x2::IfcTask::setPredefinedType(boost::optional< ::Ifc4x2::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTaskTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x2::IfcTask::setPredefinedType(boost::optional< ::Ifc4x2::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTaskTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x2::IfcTask::declaration() const { return *IFC4X2_IfcTask_type; } @@ -20364,39 +20364,39 @@ Ifc4x2::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* v2_ // Function implementations for IfcTaskTime boost::optional< ::Ifc4x2::IfcTaskDurationEnum::Value > Ifc4x2::IfcTaskTime::DurationType() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x2::IfcTaskDurationEnum::FromString(*data_->getArgument(3)); } -void Ifc4x2::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x2::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTaskDurationEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x2::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x2::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTaskDurationEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::ScheduleDuration() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::EarlyStart() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::EarlyFinish() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::LateStart() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::LateFinish() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::FreeFloat() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::TotalFloat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< bool > Ifc4x2::IfcTaskTime::IsCritical() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } bool v = *data_->getArgument(13); return v; } -void Ifc4x2::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x2::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::StatusTime() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x2::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x2::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::ActualDuration() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x2::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x2::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::ActualStart() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } std::string v = *data_->getArgument(16); return v; } -void Ifc4x2::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x2::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::ActualFinish() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } std::string v = *data_->getArgument(17); return v; } -void Ifc4x2::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x2::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskTime::RemainingTime() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x2::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x2::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< double > Ifc4x2::IfcTaskTime::Completion() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } double v = *data_->getArgument(19); return v; } -void Ifc4x2::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x2::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x2::IfcTaskTime::declaration() const { return *IFC4X2_IfcTaskTime_type; } @@ -20418,7 +20418,7 @@ Ifc4x2::IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::string ::Ifc4x2::IfcTaskTypeEnum::Value Ifc4x2::IfcTaskType::PredefinedType() const { return ::Ifc4x2::IfcTaskTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x2::IfcTaskType::setPredefinedType(::Ifc4x2::IfcTaskTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcTaskTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x2::IfcTaskType::WorkMethod() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x2::IfcTaskType::declaration() const { return *IFC4X2_IfcTaskType_type; } @@ -20428,17 +20428,17 @@ Ifc4x2::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHist // Function implementations for IfcTelecomAddress boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcTelecomAddress::TelephoneNumbers() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcTelecomAddress::FacsimileNumbers() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcTelecomAddress::PagerNumber() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcTelecomAddress::ElectronicMailAddresses() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcTelecomAddress::WWWHomePageURL() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x2::IfcTelecomAddress::MessagingIDs() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcTelecomAddress::declaration() const { return *IFC4X2_IfcTelecomAddress_type; } @@ -20448,21 +20448,21 @@ Ifc4x2::IfcTelecomAddress::IfcTelecomAddress(boost::optional< ::Ifc4x2::IfcAddre // Function implementations for IfcTendon boost::optional< ::Ifc4x2::IfcTendonTypeEnum::Value > Ifc4x2::IfcTendon::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x2::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x2::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x2::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTendonTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x2::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x2::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTendonTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcTendon::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcTendon::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x2::IfcTendon::TensionForce() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x2::IfcTendon::PreStress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x2::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x2::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x2::IfcTendon::FrictionCoefficient() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x2::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x2::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x2::IfcTendon::AnchorageSlip() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x2::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x2::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x2::IfcTendon::MinCurvatureRadius() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x2::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x2::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x2::IfcTendon::declaration() const { return *IFC4X2_IfcTendon_type; } @@ -20472,7 +20472,7 @@ Ifc4x2::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* // Function implementations for IfcTendonAnchor boost::optional< ::Ifc4x2::IfcTendonAnchorTypeEnum::Value > Ifc4x2::IfcTendonAnchor::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x2::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x2::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x2::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTendonAnchorTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x2::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x2::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTendonAnchorTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcTendonAnchor::declaration() const { return *IFC4X2_IfcTendonAnchor_type; } @@ -20514,11 +20514,11 @@ Ifc4x2::IfcTendonConduitType::IfcTendonConduitType(std::string v1_GlobalId, ::If ::Ifc4x2::IfcTendonTypeEnum::Value Ifc4x2::IfcTendonType::PredefinedType() const { return ::Ifc4x2::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x2::IfcTendonType::setPredefinedType(::Ifc4x2::IfcTendonTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcTendonTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcTendonType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcTendonType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x2::IfcTendonType::SheathDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x2::IfcTendonType::declaration() const { return *IFC4X2_IfcTendonType_type; } @@ -20580,7 +20580,7 @@ void Ifc4x2::IfcTextStyle::setTextStyle(::Ifc4x2::IfcTextStyleTextModel* v) { {I ::Ifc4x2::IfcTextFontSelect* Ifc4x2::IfcTextStyle::TextFontStyle() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcTextFontSelect>(true); } void Ifc4x2::IfcTextStyle::setTextFontStyle(::Ifc4x2::IfcTextFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x2::IfcTextStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcTextStyle::declaration() const { return *IFC4X2_IfcTextStyle_type; } @@ -20592,11 +20592,11 @@ Ifc4x2::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, ::Ifc std::vector< std::string > /*[1:?]*/ Ifc4x2::IfcTextStyleFontModel::FontFamily() const { std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } void Ifc4x2::IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcTextStyleFontModel::FontStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x2::IfcTextStyleFontModel::FontVariant() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcTextStyleFontModel::FontWeight() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x2::IfcSizeSelect* Ifc4x2::IfcTextStyleFontModel::FontSize() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x2::IfcSizeSelect>(true); } void Ifc4x2::IfcTextStyleFontModel::setFontSize(::Ifc4x2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -20622,15 +20622,15 @@ Ifc4x2::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4x2::IfcColo ::Ifc4x2::IfcSizeSelect* Ifc4x2::IfcTextStyleTextModel::TextIndent() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x2::IfcSizeSelect>(true); } void Ifc4x2::IfcTextStyleTextModel::setTextIndent(::Ifc4x2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcTextStyleTextModel::TextAlign() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x2::IfcTextStyleTextModel::TextDecoration() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x2::IfcSizeSelect* Ifc4x2::IfcTextStyleTextModel::LetterSpacing() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcSizeSelect>(true); } void Ifc4x2::IfcTextStyleTextModel::setLetterSpacing(::Ifc4x2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x2::IfcSizeSelect* Ifc4x2::IfcTextStyleTextModel::WordSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x2::IfcSizeSelect>(true); } void Ifc4x2::IfcTextStyleTextModel::setWordSpacing(::Ifc4x2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcTextStyleTextModel::TextTransform() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x2::IfcSizeSelect* Ifc4x2::IfcTextStyleTextModel::LineHeight() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x2::IfcSizeSelect>(true); } void Ifc4x2::IfcTextStyleTextModel::setLineHeight(::Ifc4x2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -20654,7 +20654,7 @@ Ifc4x2::IfcTextureCoordinate::IfcTextureCoordinate(aggregate_of< ::Ifc4x2::IfcSu std::string Ifc4x2::IfcTextureCoordinateGenerator::Mode() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x2::IfcTextureCoordinateGenerator::setMode(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[1:?]*/ > Ifc4x2::IfcTextureCoordinateGenerator::Parameter() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x2::IfcTextureCoordinateGenerator::declaration() const { return *IFC4X2_IfcTextureCoordinateGenerator_type; } @@ -20710,7 +20710,7 @@ Ifc4x2::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v2_En std::string Ifc4x2::IfcTimeSeries::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x2::IfcTimeSeries::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x2::IfcTimeSeries::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } std::string Ifc4x2::IfcTimeSeries::StartTime() const { std::string v = *data_->getArgument(2); return v; } void Ifc4x2::IfcTimeSeries::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::string Ifc4x2::IfcTimeSeries::EndTime() const { std::string v = *data_->getArgument(3); return v; } @@ -20720,7 +20720,7 @@ void Ifc4x2::IfcTimeSeries::setTimeSeriesDataType(::Ifc4x2::IfcTimeSeriesDataTyp ::Ifc4x2::IfcDataOriginEnum::Value Ifc4x2::IfcTimeSeries::DataOrigin() const { return ::Ifc4x2::IfcDataOriginEnum::FromString(*data_->getArgument(5)); } void Ifc4x2::IfcTimeSeries::setDataOrigin(::Ifc4x2::IfcDataOriginEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcDataOriginEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x2::IfcTimeSeries::UserDefinedDataOrigin() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x2::IfcUnit* Ifc4x2::IfcTimeSeries::Unit() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x2::IfcUnit>(true); } void Ifc4x2::IfcTimeSeries::setUnit(::Ifc4x2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } @@ -20771,7 +20771,7 @@ Ifc4x2::IfcToroidalSurface::IfcToroidalSurface(::Ifc4x2::IfcAxis2Placement3D* v1 // Function implementations for IfcTransformer boost::optional< ::Ifc4x2::IfcTransformerTypeEnum::Value > Ifc4x2::IfcTransformer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcTransformerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x2::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTransformerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x2::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTransformerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcTransformer::declaration() const { return *IFC4X2_IfcTransformer_type; } @@ -20791,9 +20791,9 @@ Ifc4x2::IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, ::Ifc4x2 // Function implementations for IfcTransitionCurveSegment2D boost::optional< double > Ifc4x2::IfcTransitionCurveSegment2D::StartRadius() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x2::IfcTransitionCurveSegment2D::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x2::IfcTransitionCurveSegment2D::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x2::IfcTransitionCurveSegment2D::EndRadius() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcTransitionCurveSegment2D::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcTransitionCurveSegment2D::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } bool Ifc4x2::IfcTransitionCurveSegment2D::IsStartRadiusCCW() const { bool v = *data_->getArgument(5); return v; } void Ifc4x2::IfcTransitionCurveSegment2D::setIsStartRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } bool Ifc4x2::IfcTransitionCurveSegment2D::IsEndRadiusCCW() const { bool v = *data_->getArgument(6); return v; } @@ -20809,7 +20809,7 @@ Ifc4x2::IfcTransitionCurveSegment2D::IfcTransitionCurveSegment2D(::Ifc4x2::IfcCa // Function implementations for IfcTransportElement boost::optional< ::Ifc4x2::IfcTransportElementTypeEnum::Value > Ifc4x2::IfcTransportElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcTransportElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcTransportElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcTransportElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTransportElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcTransportElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcTransportElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTransportElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcTransportElement::declaration() const { return *IFC4X2_IfcTransportElement_type; } @@ -20845,13 +20845,13 @@ Ifc4x2::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4x2::IfcProfileTypeE // Function implementations for IfcTriangulatedFaceSet boost::optional< std::vector< std::vector< double > > > Ifc4x2::IfcTriangulatedFaceSet::Normals() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(1); return v; } -void Ifc4x2::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x2::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x2::IfcTriangulatedFaceSet::Closed() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x2::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x2::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::vector< std::vector< int > > Ifc4x2::IfcTriangulatedFaceSet::CoordIndex() const { std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } void Ifc4x2::IfcTriangulatedFaceSet::setCoordIndex(std::vector< std::vector< int > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x2::IfcTriangulatedFaceSet::PnIndex() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x2::IfcTriangulatedFaceSet::declaration() const { return *IFC4X2_IfcTriangulatedFaceSet_type; } @@ -20889,7 +20889,7 @@ Ifc4x2::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4x2::IfcCurve* v1_BasisCurve, aggr // Function implementations for IfcTubeBundle boost::optional< ::Ifc4x2::IfcTubeBundleTypeEnum::Value > Ifc4x2::IfcTubeBundle::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x2::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTubeBundleTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x2::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcTubeBundleTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcTubeBundle::declaration() const { return *IFC4X2_IfcTubeBundle_type; } @@ -20909,9 +20909,9 @@ Ifc4x2::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4x2:: // Function implementations for IfcTypeObject boost::optional< std::string > Ifc4x2::IfcTypeObject::ApplicableOccurrence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcPropertySetDefinition >::ptr > Ifc4x2::IfcTypeObject::HasPropertySets() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x2::IfcPropertySetDefinition >(); } -void Ifc4x2::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x2::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(5,attr);} } +void Ifc4x2::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x2::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(5,attr);} } ::Ifc4x2::IfcRelDefinesByType::list::ptr Ifc4x2::IfcTypeObject::Types() const { return data_->getInverse(IFC4X2_IfcRelDefinesByType_type, 5)->as(); } @@ -20922,11 +20922,11 @@ Ifc4x2::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4x2::IfcOwner // Function implementations for IfcTypeProcess boost::optional< std::string > Ifc4x2::IfcTypeProcess::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcTypeProcess::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcTypeProcess::ProcessType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x2::IfcRelAssignsToProcess::list::ptr Ifc4x2::IfcTypeProcess::OperatesOn() const { return data_->getInverse(IFC4X2_IfcRelAssignsToProcess_type, 6)->as(); } @@ -20937,9 +20937,9 @@ Ifc4x2::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4x2::IfcOwn // Function implementations for IfcTypeProduct boost::optional< aggregate_of< ::Ifc4x2::IfcRepresentationMap >::ptr > Ifc4x2::IfcTypeProduct::RepresentationMaps() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x2::IfcRepresentationMap >(); } -void Ifc4x2::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x2::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x2::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x2::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcTypeProduct::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x2::IfcRelAssignsToProduct::list::ptr Ifc4x2::IfcTypeProduct::ReferencedBy() const { return data_->getInverse(IFC4X2_IfcRelAssignsToProduct_type, 6)->as(); } @@ -20950,11 +20950,11 @@ Ifc4x2::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4x2::IfcOwn // Function implementations for IfcTypeResource boost::optional< std::string > Ifc4x2::IfcTypeResource::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x2::IfcTypeResource::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcTypeResource::ResourceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x2::IfcRelAssignsToResource::list::ptr Ifc4x2::IfcTypeResource::ResourceOf() const { return data_->getInverse(IFC4X2_IfcRelAssignsToResource_type, 6)->as(); } @@ -20973,11 +20973,11 @@ void Ifc4x2::IfcUShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc4x2::IfcUShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x2::IfcUShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcUShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcUShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x2::IfcUShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcUShapeProfileDef::declaration() const { return *IFC4X2_IfcUShapeProfileDef_type; } @@ -20997,7 +20997,7 @@ Ifc4x2::IfcUnitAssignment::IfcUnitAssignment(aggregate_of_instance::ptr v1_Units // Function implementations for IfcUnitaryControlElement boost::optional< ::Ifc4x2::IfcUnitaryControlElementTypeEnum::Value > Ifc4x2::IfcUnitaryControlElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcUnitaryControlElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x2::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcUnitaryControlElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcUnitaryControlElement::declaration() const { return *IFC4X2_IfcUnitaryControlElement_type; } @@ -21017,7 +21017,7 @@ Ifc4x2::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::string v // Function implementations for IfcUnitaryEquipment boost::optional< ::Ifc4x2::IfcUnitaryEquipmentTypeEnum::Value > Ifc4x2::IfcUnitaryEquipment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x2::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcUnitaryEquipmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x2::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcUnitaryEquipmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcUnitaryEquipment::declaration() const { return *IFC4X2_IfcUnitaryEquipment_type; } @@ -21037,7 +21037,7 @@ Ifc4x2::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_GlobalId // Function implementations for IfcValve boost::optional< ::Ifc4x2::IfcValveTypeEnum::Value > Ifc4x2::IfcValve::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcValveTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcValve::setPredefinedType(boost::optional< ::Ifc4x2::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcValveTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcValve::setPredefinedType(boost::optional< ::Ifc4x2::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcValveTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcValve::declaration() const { return *IFC4X2_IfcValve_type; } @@ -21097,7 +21097,7 @@ Ifc4x2::IfcVertexPoint::IfcVertexPoint(::Ifc4x2::IfcPoint* v1_VertexGeometry) : // Function implementations for IfcVibrationDamper boost::optional< ::Ifc4x2::IfcVibrationDamperTypeEnum::Value > Ifc4x2::IfcVibrationDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x2::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x2::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcVibrationDamper::declaration() const { return *IFC4X2_IfcVibrationDamper_type; } @@ -21107,7 +21107,7 @@ Ifc4x2::IfcVibrationDamper::IfcVibrationDamper(std::string v1_GlobalId, ::Ifc4x2 // Function implementations for IfcVibrationDamperType boost::optional< ::Ifc4x2::IfcVibrationDamperTypeEnum::Value > Ifc4x2::IfcVibrationDamperType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x2::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x2::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x2::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x2::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x2::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x2::IfcVibrationDamperType::declaration() const { return *IFC4X2_IfcVibrationDamperType_type; } @@ -21117,7 +21117,7 @@ Ifc4x2::IfcVibrationDamperType::IfcVibrationDamperType(std::string v1_GlobalId, // Function implementations for IfcVibrationIsolator boost::optional< ::Ifc4x2::IfcVibrationIsolatorTypeEnum::Value > Ifc4x2::IfcVibrationIsolator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x2::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcVibrationIsolatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x2::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcVibrationIsolatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcVibrationIsolator::declaration() const { return *IFC4X2_IfcVibrationIsolator_type; } @@ -21157,7 +21157,7 @@ Ifc4x2::IfcVirtualGridIntersection::IfcVirtualGridIntersection(aggregate_of< ::I // Function implementations for IfcVoidingFeature boost::optional< ::Ifc4x2::IfcVoidingFeatureTypeEnum::Value > Ifc4x2::IfcVoidingFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcVoidingFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x2::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcVoidingFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x2::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcVoidingFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcVoidingFeature::declaration() const { return *IFC4X2_IfcVoidingFeature_type; } @@ -21167,7 +21167,7 @@ Ifc4x2::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4x2:: // Function implementations for IfcWall boost::optional< ::Ifc4x2::IfcWallTypeEnum::Value > Ifc4x2::IfcWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcWall::setPredefinedType(boost::optional< ::Ifc4x2::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcWall::setPredefinedType(boost::optional< ::Ifc4x2::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcWall::declaration() const { return *IFC4X2_IfcWall_type; } @@ -21203,7 +21203,7 @@ Ifc4x2::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHist // Function implementations for IfcWasteTerminal boost::optional< ::Ifc4x2::IfcWasteTerminalTypeEnum::Value > Ifc4x2::IfcWasteTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x2::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWasteTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x2::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWasteTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcWasteTerminal::declaration() const { return *IFC4X2_IfcWasteTerminal_type; } @@ -21223,15 +21223,15 @@ Ifc4x2::IfcWasteTerminalType::IfcWasteTerminalType(std::string v1_GlobalId, ::If // Function implementations for IfcWindow boost::optional< double > Ifc4x2::IfcWindow::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x2::IfcWindow::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x2::IfcWindowTypeEnum::Value > Ifc4x2::IfcWindow::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x2::IfcWindowTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x2::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x2::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWindowTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x2::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x2::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWindowTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x2::IfcWindowTypePartitioningEnum::Value > Ifc4x2::IfcWindow::PartitioningType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x2::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(11)); } -void Ifc4x2::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x2::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWindowTypePartitioningEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x2::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x2::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWindowTypePartitioningEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x2::IfcWindow::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x2::IfcWindow::declaration() const { return *IFC4X2_IfcWindow_type; } @@ -21241,29 +21241,29 @@ Ifc4x2::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHistory* // Function implementations for IfcWindowLiningProperties boost::optional< double > Ifc4x2::IfcWindowLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x2::IfcWindowLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcWindowLiningProperties::TransomThickness() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcWindowLiningProperties::MullionThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcWindowLiningProperties::FirstTransomOffset() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x2::IfcWindowLiningProperties::SecondTransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x2::IfcWindowLiningProperties::FirstMullionOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x2::IfcWindowLiningProperties::SecondMullionOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } ::Ifc4x2::IfcShapeAspect* Ifc4x2::IfcWindowLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc4x2::IfcShapeAspect>(true); } void Ifc4x2::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc4x2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} } boost::optional< double > Ifc4x2::IfcWindowLiningProperties::LiningOffset() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x2::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x2::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x2::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x2::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x2::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x2::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x2::IfcWindowLiningProperties::declaration() const { return *IFC4X2_IfcWindowLiningProperties_type; } @@ -21277,9 +21277,9 @@ void Ifc4x2::IfcWindowPanelProperties::setOperationType(::Ifc4x2::IfcWindowPanel ::Ifc4x2::IfcWindowPanelPositionEnum::Value Ifc4x2::IfcWindowPanelProperties::PanelPosition() const { return ::Ifc4x2::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x2::IfcWindowPanelProperties::setPanelPosition(::Ifc4x2::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x2::IfcWindowPanelProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x2::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x2::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcWindowPanelProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x2::IfcShapeAspect* Ifc4x2::IfcWindowPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x2::IfcShapeAspect>(true); } void Ifc4x2::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc4x2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -21319,9 +21319,9 @@ void Ifc4x2::IfcWindowType::setPredefinedType(::Ifc4x2::IfcWindowTypeEnum::Value ::Ifc4x2::IfcWindowTypePartitioningEnum::Value Ifc4x2::IfcWindowType::PartitioningType() const { return ::Ifc4x2::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(10)); } void Ifc4x2::IfcWindowType::setPartitioningType(::Ifc4x2::IfcWindowTypePartitioningEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x2::IfcWindowTypePartitioningEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x2::IfcWindowType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x2::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x2::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x2::IfcWindowType::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x2::IfcWindowType::declaration() const { return *IFC4X2_IfcWindowType_type; } @@ -21331,11 +21331,11 @@ Ifc4x2::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4x2::IfcOwner // Function implementations for IfcWorkCalendar boost::optional< aggregate_of< ::Ifc4x2::IfcWorkTime >::ptr > Ifc4x2::IfcWorkCalendar::WorkingTimes() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x2::IfcWorkTime >(); } -void Ifc4x2::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x2::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x2::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x2::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcWorkTime >::ptr > Ifc4x2::IfcWorkCalendar::ExceptionTimes() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x2::IfcWorkTime >(); } -void Ifc4x2::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x2::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x2::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x2::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x2::IfcWorkCalendarTypeEnum::Value > Ifc4x2::IfcWorkCalendar::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x2::IfcWorkCalendarTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x2::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x2::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWorkCalendarTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x2::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x2::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWorkCalendarTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcWorkCalendar::declaration() const { return *IFC4X2_IfcWorkCalendar_type; } @@ -21347,17 +21347,17 @@ Ifc4x2::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4x2::IfcO std::string Ifc4x2::IfcWorkControl::CreationDate() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x2::IfcWorkControl::setCreationDate(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x2::IfcPerson >::ptr > Ifc4x2::IfcWorkControl::Creators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x2::IfcPerson >(); } -void Ifc4x2::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x2::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x2::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x2::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x2::IfcWorkControl::Purpose() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x2::IfcWorkControl::Duration() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x2::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x2::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x2::IfcWorkControl::TotalFloat() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x2::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x2::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } std::string Ifc4x2::IfcWorkControl::StartTime() const { std::string v = *data_->getArgument(11); return v; } void Ifc4x2::IfcWorkControl::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x2::IfcWorkControl::FinishTime() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x2::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x2::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x2::IfcWorkControl::declaration() const { return *IFC4X2_IfcWorkControl_type; } @@ -21367,7 +21367,7 @@ Ifc4x2::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4x2::IfcOwn // Function implementations for IfcWorkPlan boost::optional< ::Ifc4x2::IfcWorkPlanTypeEnum::Value > Ifc4x2::IfcWorkPlan::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x2::IfcWorkPlanTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x2::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x2::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWorkPlanTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x2::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x2::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWorkPlanTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x2::IfcWorkPlan::declaration() const { return *IFC4X2_IfcWorkPlan_type; } @@ -21377,7 +21377,7 @@ Ifc4x2::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4x2::IfcOwnerHist // Function implementations for IfcWorkSchedule boost::optional< ::Ifc4x2::IfcWorkScheduleTypeEnum::Value > Ifc4x2::IfcWorkSchedule::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x2::IfcWorkScheduleTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x2::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x2::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWorkScheduleTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x2::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x2::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x2::IfcWorkScheduleTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x2::IfcWorkSchedule::declaration() const { return *IFC4X2_IfcWorkSchedule_type; } @@ -21389,9 +21389,9 @@ Ifc4x2::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4x2::IfcO ::Ifc4x2::IfcRecurrencePattern* Ifc4x2::IfcWorkTime::RecurrencePattern() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x2::IfcRecurrencePattern>(true); } void Ifc4x2::IfcWorkTime::setRecurrencePattern(::Ifc4x2::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x2::IfcWorkTime::Start() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x2::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x2::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x2::IfcWorkTime::Finish() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x2::IfcWorkTime::declaration() const { return *IFC4X2_IfcWorkTime_type; } @@ -21409,9 +21409,9 @@ void Ifc4x2::IfcZShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWrit double Ifc4x2::IfcZShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x2::IfcZShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x2::IfcZShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x2::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x2::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x2::IfcZShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x2::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x2::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x2::IfcZShapeProfileDef::declaration() const { return *IFC4X2_IfcZShapeProfileDef_type; } @@ -21421,7 +21421,7 @@ Ifc4x2::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4x2::IfcProfileTypeEnum::V // Function implementations for IfcZone boost::optional< std::string > Ifc4x2::IfcZone::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x2::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x2::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x2::IfcZone::declaration() const { return *IFC4X2_IfcZone_type; } diff --git a/src/ifcparse/Ifc4x2.h b/src/ifcparse/Ifc4x2.h index 94afa26112..5be96d9c8c 100644 --- a/src/ifcparse/Ifc4x2.h +++ b/src/ifcparse/Ifc4x2.h @@ -42,7 +42,9 @@ struct Ifc4x2 { -static const IfcParse::schema_definition& get_schema(); +IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); + +IFC_PARSE_API static void clear_schema(); static const char* const Identifier; diff --git a/src/ifcparse/Ifc4x3_rc1-schema.cpp b/src/ifcparse/Ifc4x3_rc1-schema.cpp index 643f2101bf..01fc5d876b 100644 --- a/src/ifcparse/Ifc4x3_rc1-schema.cpp +++ b/src/ifcparse/Ifc4x3_rc1-schema.cpp @@ -17143,9 +17143,16 @@ IfcParse::schema_definition* IFC4X3_RC1_populate_schema() { #pragma optimize("", on) #endif -const schema_definition& Ifc4x3_rc1::get_schema() { +static std::unique_ptr schema; - static const schema_definition* s = IFC4X3_RC1_populate_schema(); - return *s; +void Ifc4x3_rc1::clear_schema() { + schema.reset(); +} + +const schema_definition& Ifc4x3_rc1::get_schema() { + if (!schema) { + schema.reset(IFC4X3_RC1_populate_schema()); + } + return *schema; } diff --git a/src/ifcparse/Ifc4x3_rc1.cpp b/src/ifcparse/Ifc4x3_rc1.cpp index 67bc0c0e19..03437fc88e 100644 --- a/src/ifcparse/Ifc4x3_rc1.cpp +++ b/src/ifcparse/Ifc4x3_rc1.cpp @@ -12962,11 +12962,11 @@ Ifc4x3_rc1::IfcWarpingMomentMeasure::operator double() const { return *data_->ge // Function implementations for IfcActionRequest boost::optional< ::Ifc4x3_rc1::IfcActionRequestTypeEnum::Value > Ifc4x3_rc1::IfcActionRequest::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcActionRequestTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc1::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcActionRequestTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcActionRequestTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcActionRequest::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcActionRequest::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcActionRequest::declaration() const { return *IFC4X3_RC1_IfcActionRequest_type; } @@ -12989,9 +12989,9 @@ Ifc4x3_rc1::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHi ::Ifc4x3_rc1::IfcRoleEnum::Value Ifc4x3_rc1::IfcActorRole::Role() const { return ::Ifc4x3_rc1::IfcRoleEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc1::IfcActorRole::setRole(::Ifc4x3_rc1::IfcRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcRoleEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcActorRole::UserDefinedRole() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcActorRole::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcActorRole::HasExternalReference() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -13002,7 +13002,7 @@ Ifc4x3_rc1::IfcActorRole::IfcActorRole(::Ifc4x3_rc1::IfcRoleEnum::Value v1_Role, // Function implementations for IfcActuator boost::optional< ::Ifc4x3_rc1::IfcActuatorTypeEnum::Value > Ifc4x3_rc1::IfcActuator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcActuatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcActuatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcActuatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcActuator::declaration() const { return *IFC4X3_RC1_IfcActuator_type; } @@ -13022,11 +13022,11 @@ Ifc4x3_rc1::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcAddress boost::optional< ::Ifc4x3_rc1::IfcAddressTypeEnum::Value > Ifc4x3_rc1::IfcAddress::Purpose() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAddressTypeEnum::FromString(*data_->getArgument(0)); } -void Ifc4x3_rc1::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_rc1::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAddressTypeEnum::ToString(*v)));data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_rc1::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAddressTypeEnum::ToString(*v)));}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAddress::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAddress::UserDefinedPurpose() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcPerson::list::ptr Ifc4x3_rc1::IfcAddress::OfPerson() const { return data_->getInverse(IFC4X3_RC1_IfcPerson_type, 7)->as(); } ::Ifc4x3_rc1::IfcOrganization::list::ptr Ifc4x3_rc1::IfcAddress::OfOrganization() const { return data_->getInverse(IFC4X3_RC1_IfcOrganization_type, 4)->as(); } @@ -13064,7 +13064,7 @@ Ifc4x3_rc1::IfcAdvancedFace::IfcAdvancedFace(aggregate_of< ::Ifc4x3_rc1::IfcFace // Function implementations for IfcAirTerminal boost::optional< ::Ifc4x3_rc1::IfcAirTerminalTypeEnum::Value > Ifc4x3_rc1::IfcAirTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAirTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAirTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcAirTerminal::declaration() const { return *IFC4X3_RC1_IfcAirTerminal_type; } @@ -13074,7 +13074,7 @@ Ifc4x3_rc1::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4x3_rc1 // Function implementations for IfcAirTerminalBox boost::optional< ::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Value > Ifc4x3_rc1::IfcAirTerminalBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcAirTerminalBox::declaration() const { return *IFC4X3_RC1_IfcAirTerminalBox_type; } @@ -13104,7 +13104,7 @@ Ifc4x3_rc1::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::If // Function implementations for IfcAirToAirHeatRecovery boost::optional< ::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4x3_rc1::IfcAirToAirHeatRecovery::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcAirToAirHeatRecovery::declaration() const { return *IFC4X3_RC1_IfcAirToAirHeatRecovery_type; } @@ -13124,7 +13124,7 @@ Ifc4x3_rc1::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string // Function implementations for IfcAlarm boost::optional< ::Ifc4x3_rc1::IfcAlarmTypeEnum::Value > Ifc4x3_rc1::IfcAlarm::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAlarmTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAlarmTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAlarmTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcAlarm::declaration() const { return *IFC4X3_RC1_IfcAlarm_type; } @@ -13144,7 +13144,7 @@ Ifc4x3_rc1::IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, ::Ifc4x3_rc1::If // Function implementations for IfcAlignment boost::optional< ::Ifc4x3_rc1::IfcAlignmentTypeEnum::Value > Ifc4x3_rc1::IfcAlignment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAlignmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAlignmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAlignmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcAlignment::declaration() const { return *IFC4X3_RC1_IfcAlignment_type; } @@ -13174,9 +13174,9 @@ Ifc4x3_rc1::IfcAlignment2DCantSegLine::IfcAlignment2DCantSegLine(boost::optional // Function implementations for IfcAlignment2DCantSegTransition boost::optional< double > Ifc4x3_rc1::IfcAlignment2DCantSegTransition::StartRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcAlignment2DCantSegTransition::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcAlignment2DCantSegTransition::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAlignment2DCantSegTransition::EndRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcAlignment2DCantSegTransition::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcAlignment2DCantSegTransition::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } bool Ifc4x3_rc1::IfcAlignment2DCantSegTransition::IsStartRadiusCCW() const { bool v = *data_->getArgument(11); return v; } void Ifc4x3_rc1::IfcAlignment2DCantSegTransition::setIsStartRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } bool Ifc4x3_rc1::IfcAlignment2DCantSegTransition::IsEndRadiusCCW() const { bool v = *data_->getArgument(12); return v; } @@ -13198,11 +13198,11 @@ void Ifc4x3_rc1::IfcAlignment2DCantSegment::setHorizontalLength(double v) { {Ifc double Ifc4x3_rc1::IfcAlignment2DCantSegment::StartCantLeft() const { double v = *data_->getArgument(5); return v; } void Ifc4x3_rc1::IfcAlignment2DCantSegment::setStartCantLeft(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAlignment2DCantSegment::EndCantLeft() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcAlignment2DCantSegment::setEndCantLeft(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcAlignment2DCantSegment::setEndCantLeft(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } double Ifc4x3_rc1::IfcAlignment2DCantSegment::StartCantRight() const { double v = *data_->getArgument(7); return v; } void Ifc4x3_rc1::IfcAlignment2DCantSegment::setStartCantRight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAlignment2DCantSegment::EndCantRight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcAlignment2DCantSegment::setEndCantRight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcAlignment2DCantSegment::setEndCantRight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcAlignment2DCant::list::ptr Ifc4x3_rc1::IfcAlignment2DCantSegment::ToCant() const { return data_->getInverse(IFC4X3_RC1_IfcAlignment2DCant_type, 0)->as(); } @@ -13213,7 +13213,7 @@ Ifc4x3_rc1::IfcAlignment2DCantSegment::IfcAlignment2DCantSegment(boost::optional // Function implementations for IfcAlignment2DHorizontal boost::optional< double > Ifc4x3_rc1::IfcAlignment2DHorizontal::StartDistAlong() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcAlignment2DHorizontal::setStartDistAlong(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcAlignment2DHorizontal::setStartDistAlong(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DHorizontalSegment >::ptr Ifc4x3_rc1::IfcAlignment2DHorizontal::Segments() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcAlignment2DHorizontalSegment >(); } void Ifc4x3_rc1::IfcAlignment2DHorizontal::setSegments(aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DHorizontalSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -13237,11 +13237,11 @@ Ifc4x3_rc1::IfcAlignment2DHorizontalSegment::IfcAlignment2DHorizontalSegment(boo // Function implementations for IfcAlignment2DSegment boost::optional< bool > Ifc4x3_rc1::IfcAlignment2DSegment::TangentialContinuity() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } bool v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcAlignment2DSegment::setTangentialContinuity(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcAlignment2DSegment::setTangentialContinuity(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAlignment2DSegment::StartTag() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcAlignment2DSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcAlignment2DSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAlignment2DSegment::EndTag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcAlignment2DSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcAlignment2DSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DSegment::declaration() const { return *IFC4X3_RC1_IfcAlignment2DSegment_type; } @@ -13283,9 +13283,9 @@ Ifc4x3_rc1::IfcAlignment2DVerSegParabolicArc::IfcAlignment2DVerSegParabolicArc(b // Function implementations for IfcAlignment2DVerSegTransition boost::optional< double > Ifc4x3_rc1::IfcAlignment2DVerSegTransition::StartRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcAlignment2DVerSegTransition::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcAlignment2DVerSegTransition::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAlignment2DVerSegTransition::EndRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcAlignment2DVerSegTransition::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcAlignment2DVerSegTransition::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } bool Ifc4x3_rc1::IfcAlignment2DVerSegTransition::IsStartRadiusCCW() const { bool v = *data_->getArgument(9); return v; } void Ifc4x3_rc1::IfcAlignment2DVerSegTransition::setIsStartRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } bool Ifc4x3_rc1::IfcAlignment2DVerSegTransition::IsEndRadiusCCW() const { bool v = *data_->getArgument(10); return v; } @@ -13333,7 +13333,7 @@ void Ifc4x3_rc1::IfcAlignmentCurve::setHorizontal(::Ifc4x3_rc1::IfcAlignment2DHo ::Ifc4x3_rc1::IfcAlignment2DVertical* Ifc4x3_rc1::IfcAlignmentCurve::Vertical() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcAlignment2DVertical>(true); } void Ifc4x3_rc1::IfcAlignmentCurve::setVertical(::Ifc4x3_rc1::IfcAlignment2DVertical* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAlignmentCurve::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcAlignmentCurve::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcAlignmentCurve::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcAlignmentCurve::declaration() const { return *IFC4X3_RC1_IfcAlignmentCurve_type; } @@ -13343,7 +13343,7 @@ Ifc4x3_rc1::IfcAlignmentCurve::IfcAlignmentCurve(::Ifc4x3_rc1::IfcAlignment2DHor // Function implementations for IfcAnnotation boost::optional< ::Ifc4x3_rc1::IfcAnnotationTypeEnum::Value > Ifc4x3_rc1::IfcAnnotation::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc1::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAnnotationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAnnotationTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAnnotationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAnnotationTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc1::IfcAnnotation::ContainedInStructure() const { return data_->getInverse(IFC4X3_RC1_IfcRelContainedInSpatialStructure_type, 4)->as(); } @@ -13356,7 +13356,7 @@ Ifc4x3_rc1::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4x3_rc1:: ::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcAnnotationFillArea::OuterBoundary() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurve>(true); } void Ifc4x3_rc1::IfcAnnotationFillArea::setOuterBoundary(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr > Ifc4x3_rc1::IfcAnnotationFillArea::InnerBoundaries() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcCurve >(); } -void Ifc4x3_rc1::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcAnnotationFillArea::declaration() const { return *IFC4X3_RC1_IfcAnnotationFillArea_type; } @@ -13382,25 +13382,25 @@ Ifc4x3_rc1::IfcApplication::IfcApplication(::Ifc4x3_rc1::IfcOrganization* v1_App // Function implementations for IfcAppliedValue boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc1::IfcAppliedValueSelect* Ifc4x3_rc1::IfcAppliedValue::AppliedValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcAppliedValueSelect>(true); } void Ifc4x3_rc1::IfcAppliedValue::setAppliedValue(::Ifc4x3_rc1::IfcAppliedValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcMeasureWithUnit* Ifc4x3_rc1::IfcAppliedValue::UnitBasis() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcMeasureWithUnit>(true); } void Ifc4x3_rc1::IfcAppliedValue::setUnitBasis(::Ifc4x3_rc1::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::ApplicableDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::FixedUntilDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::Category() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::Condition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc1::IfcArithmeticOperatorEnum::Value > Ifc4x3_rc1::IfcAppliedValue::ArithmeticOperator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcArithmeticOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_rc1::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcArithmeticOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_rc1::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcArithmeticOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > Ifc4x3_rc1::IfcAppliedValue::Components() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc1::IfcAppliedValue >(); } -void Ifc4x3_rc1::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcAppliedValue::HasExternalReference() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -13411,19 +13411,19 @@ Ifc4x3_rc1::IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_N // Function implementations for IfcApproval boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcApproval::TimeOfApproval() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Status() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Level() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Qualifier() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcApproval::RequestingApproval() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcActorSelect>(true); } void Ifc4x3_rc1::IfcApproval::setRequestingApproval(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcApproval::GivingApproval() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcActorSelect>(true); } @@ -13484,7 +13484,7 @@ Ifc4x3_rc1::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::I // Function implementations for IfcAsset boost::optional< std::string > Ifc4x3_rc1::IfcAsset::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcAsset::OriginalValue() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcCostValue>(true); } void Ifc4x3_rc1::IfcAsset::setOriginalValue(::Ifc4x3_rc1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } ::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcAsset::CurrentValue() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcCostValue>(true); } @@ -13498,7 +13498,7 @@ void Ifc4x3_rc1::IfcAsset::setUser(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite: ::Ifc4x3_rc1::IfcPerson* Ifc4x3_rc1::IfcAsset::ResponsiblePerson() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc1::IfcPerson>(true); } void Ifc4x3_rc1::IfcAsset::setResponsiblePerson(::Ifc4x3_rc1::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcAsset::IncorporationDate() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcAsset::DepreciatedValue() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc1::IfcCostValue>(true); } void Ifc4x3_rc1::IfcAsset::setDepreciatedValue(::Ifc4x3_rc1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -13518,21 +13518,21 @@ void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { {Ifc double Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } double Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { double v = *data_->getArgument(8); return v; } void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcAsymmetricIShapeProfileDef_type; } @@ -13542,7 +13542,7 @@ Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4x // Function implementations for IfcAudioVisualAppliance boost::optional< ::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Value > Ifc4x3_rc1::IfcAudioVisualAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcAudioVisualAppliance::declaration() const { return *IFC4X3_RC1_IfcAudioVisualAppliance_type; } @@ -13675,7 +13675,7 @@ Ifc4x3_rc1::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegre // Function implementations for IfcBeam boost::optional< ::Ifc4x3_rc1::IfcBeamTypeEnum::Value > Ifc4x3_rc1::IfcBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBeam::declaration() const { return *IFC4X3_RC1_IfcBeam_type; } @@ -13703,7 +13703,7 @@ Ifc4x3_rc1::IfcBeamType::IfcBeamType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcBearing boost::optional< ::Ifc4x3_rc1::IfcBearingTypeEnum::Value > Ifc4x3_rc1::IfcBearing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBearingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBearingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBearingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBearing::declaration() const { return *IFC4X3_RC1_IfcBearing_type; } @@ -13749,7 +13749,7 @@ Ifc4x3_rc1::IfcBlock::IfcBlock(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position, d // Function implementations for IfcBoiler boost::optional< ::Ifc4x3_rc1::IfcBoilerTypeEnum::Value > Ifc4x3_rc1::IfcBoiler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBoilerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBoilerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBoilerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBoiler::declaration() const { return *IFC4X3_RC1_IfcBoiler_type; } @@ -13799,7 +13799,7 @@ Ifc4x3_rc1::IfcBorehole::IfcBorehole(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcBoundaryCondition boost::optional< std::string > Ifc4x3_rc1::IfcBoundaryCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryCondition::declaration() const { return *IFC4X3_RC1_IfcBoundaryCondition_type; } @@ -13924,7 +13924,7 @@ Ifc4x3_rc1::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4x3_rc1::IfcSurface* v1_Ba // Function implementations for IfcBridge boost::optional< ::Ifc4x3_rc1::IfcBridgeTypeEnum::Value > Ifc4x3_rc1::IfcBridge::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBridgeTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc1::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBridgeTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBridgeTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBridge::declaration() const { return *IFC4X3_RC1_IfcBridge_type; } @@ -13942,9 +13942,9 @@ Ifc4x3_rc1::IfcBridgePart::IfcBridgePart(std::string v1_GlobalId, ::Ifc4x3_rc1:: // Function implementations for IfcBuilding boost::optional< double > Ifc4x3_rc1::IfcBuilding::ElevationOfRefHeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcBuilding::ElevationOfTerrain() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc1::IfcPostalAddress* Ifc4x3_rc1::IfcBuilding::BuildingAddress() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc1::IfcPostalAddress>(true); } void Ifc4x3_rc1::IfcBuilding::setBuildingAddress(::Ifc4x3_rc1::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } @@ -13956,7 +13956,7 @@ Ifc4x3_rc1::IfcBuilding::IfcBuilding(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcBuildingElementPart boost::optional< ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value > Ifc4x3_rc1::IfcBuildingElementPart::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBuildingElementPart::declaration() const { return *IFC4X3_RC1_IfcBuildingElementPart_type; } @@ -13976,7 +13976,7 @@ Ifc4x3_rc1::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v // Function implementations for IfcBuildingElementProxy boost::optional< ::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Value > Ifc4x3_rc1::IfcBuildingElementProxy::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBuildingElementProxy::declaration() const { return *IFC4X3_RC1_IfcBuildingElementProxy_type; } @@ -13996,7 +13996,7 @@ Ifc4x3_rc1::IfcBuildingElementProxyType::IfcBuildingElementProxyType(std::string // Function implementations for IfcBuildingStorey boost::optional< double > Ifc4x3_rc1::IfcBuildingStorey::Elevation() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBuildingStorey::declaration() const { return *IFC4X3_RC1_IfcBuildingStorey_type; } @@ -14006,9 +14006,9 @@ Ifc4x3_rc1::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcBuildingSystem boost::optional< ::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::Value > Ifc4x3_rc1::IfcBuildingSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc1::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcBuildingSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBuildingSystem::declaration() const { return *IFC4X3_RC1_IfcBuildingSystem_type; } @@ -14034,9 +14034,9 @@ Ifc4x3_rc1::IfcBuiltElementType::IfcBuiltElementType(std::string v1_GlobalId, :: // Function implementations for IfcBuiltSystem boost::optional< ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::Value > Ifc4x3_rc1::IfcBuiltSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc1::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcBuiltSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBuiltSystem::declaration() const { return *IFC4X3_RC1_IfcBuiltSystem_type; } @@ -14046,7 +14046,7 @@ Ifc4x3_rc1::IfcBuiltSystem::IfcBuiltSystem(std::string v1_GlobalId, ::Ifc4x3_rc1 // Function implementations for IfcBurner boost::optional< ::Ifc4x3_rc1::IfcBurnerTypeEnum::Value > Ifc4x3_rc1::IfcBurner::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBurnerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBurnerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBurnerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcBurner::declaration() const { return *IFC4X3_RC1_IfcBurner_type; } @@ -14074,7 +14074,7 @@ void Ifc4x3_rc1::IfcCShapeProfileDef::setWallThickness(double v) { {IfcWrite::If double Ifc4x3_rc1::IfcCShapeProfileDef::Girth() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc1::IfcCShapeProfileDef::setGirth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcCShapeProfileDef::InternalFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcCShapeProfileDef_type; } @@ -14084,7 +14084,7 @@ Ifc4x3_rc1::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4x3_rc1::IfcProfileTyp // Function implementations for IfcCableCarrierFitting boost::optional< ::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Value > Ifc4x3_rc1::IfcCableCarrierFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCableCarrierFitting::declaration() const { return *IFC4X3_RC1_IfcCableCarrierFitting_type; } @@ -14104,7 +14104,7 @@ Ifc4x3_rc1::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v // Function implementations for IfcCableCarrierSegment boost::optional< ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value > Ifc4x3_rc1::IfcCableCarrierSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCableCarrierSegment::declaration() const { return *IFC4X3_RC1_IfcCableCarrierSegment_type; } @@ -14124,7 +14124,7 @@ Ifc4x3_rc1::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v // Function implementations for IfcCableFitting boost::optional< ::Ifc4x3_rc1::IfcCableFittingTypeEnum::Value > Ifc4x3_rc1::IfcCableFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCableFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCableFitting::declaration() const { return *IFC4X3_RC1_IfcCableFitting_type; } @@ -14144,7 +14144,7 @@ Ifc4x3_rc1::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, :: // Function implementations for IfcCableSegment boost::optional< ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value > Ifc4x3_rc1::IfcCableSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCableSegment::declaration() const { return *IFC4X3_RC1_IfcCableSegment_type; } @@ -14164,7 +14164,7 @@ Ifc4x3_rc1::IfcCableSegmentType::IfcCableSegmentType(std::string v1_GlobalId, :: // Function implementations for IfcCaissonFoundation boost::optional< ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value > Ifc4x3_rc1::IfcCaissonFoundation::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCaissonFoundation::declaration() const { return *IFC4X3_RC1_IfcCaissonFoundation_type; } @@ -14204,7 +14204,7 @@ Ifc4x3_rc1::IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricReprese std::vector< std::vector< double > > Ifc4x3_rc1::IfcCartesianPointList2D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcCartesianPointList2D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcCartesianPointList2D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCartesianPointList2D::declaration() const { return *IFC4X3_RC1_IfcCartesianPointList2D_type; } @@ -14216,7 +14216,7 @@ Ifc4x3_rc1::IfcCartesianPointList2D::IfcCartesianPointList2D(std::vector< std::v std::vector< std::vector< double > > Ifc4x3_rc1::IfcCartesianPointList3D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcCartesianPointList3D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcCartesianPointList3D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCartesianPointList3D::declaration() const { return *IFC4X3_RC1_IfcCartesianPointList3D_type; } @@ -14232,7 +14232,7 @@ void Ifc4x3_rc1::IfcCartesianTransformationOperator::setAxis2(::Ifc4x3_rc1::IfcD ::Ifc4x3_rc1::IfcCartesianPoint* Ifc4x3_rc1::IfcCartesianTransformationOperator::LocalOrigin() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcCartesianPoint>(true); } void Ifc4x3_rc1::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc4x3_rc1::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcCartesianTransformationOperator::Scale() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator::declaration() const { return *IFC4X3_RC1_IfcCartesianTransformationOperator_type; } @@ -14250,7 +14250,7 @@ Ifc4x3_rc1::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOper // Function implementations for IfcCartesianTransformationOperator2DnonUniform boost::optional< double > Ifc4x3_rc1::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IFC4X3_RC1_IfcCartesianTransformationOperator2DnonUniform_type; } @@ -14270,9 +14270,9 @@ Ifc4x3_rc1::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOper // Function implementations for IfcCartesianTransformationOperator3DnonUniform boost::optional< double > Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IFC4X3_RC1_IfcCartesianTransformationOperator3DnonUniform_type; } @@ -14292,7 +14292,7 @@ Ifc4x3_rc1::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4x3_rc1::IfcPr // Function implementations for IfcChiller boost::optional< ::Ifc4x3_rc1::IfcChillerTypeEnum::Value > Ifc4x3_rc1::IfcChiller::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcChillerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcChillerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcChillerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcChiller::declaration() const { return *IFC4X3_RC1_IfcChiller_type; } @@ -14312,7 +14312,7 @@ Ifc4x3_rc1::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4x3_rc1 // Function implementations for IfcChimney boost::optional< ::Ifc4x3_rc1::IfcChimneyTypeEnum::Value > Ifc4x3_rc1::IfcChimney::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcChimneyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcChimneyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcChimneyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcChimney::declaration() const { return *IFC4X3_RC1_IfcChimney_type; } @@ -14390,19 +14390,19 @@ Ifc4x3_rc1::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, :: // Function implementations for IfcClassification boost::optional< std::string > Ifc4x3_rc1::IfcClassification::Source() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcClassification::Edition() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcClassification::EditionDate() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::string Ifc4x3_rc1::IfcClassification::Name() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcClassification::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcClassification::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcClassification::Location() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcClassification::ReferenceTokens() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc1::IfcRelAssociatesClassification::list::ptr Ifc4x3_rc1::IfcClassification::ClassificationForObjects() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x3_rc1::IfcClassificationReference::list::ptr Ifc4x3_rc1::IfcClassification::HasReferences() const { return data_->getInverse(IFC4X3_RC1_IfcClassificationReference_type, 3)->as(); } @@ -14416,9 +14416,9 @@ Ifc4x3_rc1::IfcClassification::IfcClassification(boost::optional< std::string > ::Ifc4x3_rc1::IfcClassificationReferenceSelect* Ifc4x3_rc1::IfcClassificationReference::ReferencedSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcClassificationReferenceSelect>(true); } void Ifc4x3_rc1::IfcClassificationReference::setReferencedSource(::Ifc4x3_rc1::IfcClassificationReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcClassificationReference::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcClassificationReference::Sort() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcRelAssociatesClassification::list::ptr Ifc4x3_rc1::IfcClassificationReference::ClassificationRefForObjects() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x3_rc1::IfcClassificationReference::list::ptr Ifc4x3_rc1::IfcClassificationReference::HasReferences() const { return data_->getInverse(IFC4X3_RC1_IfcClassificationReference_type, 3)->as(); } @@ -14438,7 +14438,7 @@ Ifc4x3_rc1::IfcClosedShell::IfcClosedShell(aggregate_of< ::Ifc4x3_rc1::IfcFace > // Function implementations for IfcCoil boost::optional< ::Ifc4x3_rc1::IfcCoilTypeEnum::Value > Ifc4x3_rc1::IfcCoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCoil::declaration() const { return *IFC4X3_RC1_IfcCoil_type; } @@ -14482,7 +14482,7 @@ Ifc4x3_rc1::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double // Function implementations for IfcColourSpecification boost::optional< std::string > Ifc4x3_rc1::IfcColourSpecification::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcColourSpecification::declaration() const { return *IFC4X3_RC1_IfcColourSpecification_type; } @@ -14492,7 +14492,7 @@ Ifc4x3_rc1::IfcColourSpecification::IfcColourSpecification(boost::optional< std: // Function implementations for IfcColumn boost::optional< ::Ifc4x3_rc1::IfcColumnTypeEnum::Value > Ifc4x3_rc1::IfcColumn::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcColumnTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcColumnTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcColumnTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcColumn::declaration() const { return *IFC4X3_RC1_IfcColumn_type; } @@ -14520,7 +14520,7 @@ Ifc4x3_rc1::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4x3_rc1:: // Function implementations for IfcCommunicationsAppliance boost::optional< ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value > Ifc4x3_rc1::IfcCommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCommunicationsAppliance::declaration() const { return *IFC4X3_RC1_IfcCommunicationsAppliance_type; } @@ -14552,11 +14552,11 @@ Ifc4x3_rc1::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::o // Function implementations for IfcComplexPropertyTemplate boost::optional< std::string > Ifc4x3_rc1::IfcComplexPropertyTemplate::UsageName() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< ::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4x3_rc1::IfcComplexPropertyTemplate::TemplateType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc1::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr > Ifc4x3_rc1::IfcComplexPropertyTemplate::HasPropertyTemplates() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc1::IfcPropertyTemplate >(); } -void Ifc4x3_rc1::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcComplexPropertyTemplate::declaration() const { return *IFC4X3_RC1_IfcComplexPropertyTemplate_type; } @@ -14603,7 +14603,7 @@ Ifc4x3_rc1::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4x3_rc1::Ifc aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr Ifc4x3_rc1::IfcCompositeProfileDef::Profiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcProfileDef >(); } void Ifc4x3_rc1::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcCompositeProfileDef::Label() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCompositeProfileDef::declaration() const { return *IFC4X3_RC1_IfcCompositeProfileDef_type; } @@ -14613,7 +14613,7 @@ Ifc4x3_rc1::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4x3_rc1::IfcProf // Function implementations for IfcCompressor boost::optional< ::Ifc4x3_rc1::IfcCompressorTypeEnum::Value > Ifc4x3_rc1::IfcCompressor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCompressorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCompressorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCompressorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCompressor::declaration() const { return *IFC4X3_RC1_IfcCompressor_type; } @@ -14633,7 +14633,7 @@ Ifc4x3_rc1::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCondenser boost::optional< ::Ifc4x3_rc1::IfcCondenserTypeEnum::Value > Ifc4x3_rc1::IfcCondenser::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCondenserTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCondenserTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCondenserTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCondenser::declaration() const { return *IFC4X3_RC1_IfcCondenser_type; } @@ -14693,11 +14693,11 @@ Ifc4x3_rc1::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEnt // Function implementations for IfcConnectionPointEccentricity boost::optional< double > Ifc4x3_rc1::IfcConnectionPointEccentricity::EccentricityInX() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcConnectionPointEccentricity::EccentricityInY() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcConnectionPointEccentricity::EccentricityInZ() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcConnectionPointEccentricity::declaration() const { return *IFC4X3_RC1_IfcConnectionPointEccentricity_type; } @@ -14745,17 +14745,17 @@ Ifc4x3_rc1::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4x3_rc std::string Ifc4x3_rc1::IfcConstraint::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcConstraint::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcConstraint::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc1::IfcConstraintEnum::Value Ifc4x3_rc1::IfcConstraint::ConstraintGrade() const { return ::Ifc4x3_rc1::IfcConstraintEnum::FromString(*data_->getArgument(2)); } void Ifc4x3_rc1::IfcConstraint::setConstraintGrade(::Ifc4x3_rc1::IfcConstraintEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcConstraintEnum::ToString(v)));data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcConstraint::ConstraintSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcConstraint::CreatingActor() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcActorSelect>(true); } void Ifc4x3_rc1::IfcConstraint::setCreatingActor(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcConstraint::CreationTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcConstraint::UserDefinedGrade() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcConstraint::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc1::IfcResourceConstraintRelationship::list::ptr Ifc4x3_rc1::IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(IFC4X3_RC1_IfcResourceConstraintRelationship_type, 2)->as(); } @@ -14767,7 +14767,7 @@ Ifc4x3_rc1::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< s // Function implementations for IfcConstructionEquipmentResource boost::optional< ::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4x3_rc1::IfcConstructionEquipmentResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcConstructionEquipmentResource::declaration() const { return *IFC4X3_RC1_IfcConstructionEquipmentResource_type; } @@ -14787,7 +14787,7 @@ Ifc4x3_rc1::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResour // Function implementations for IfcConstructionMaterialResource boost::optional< ::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4x3_rc1::IfcConstructionMaterialResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcConstructionMaterialResource::declaration() const { return *IFC4X3_RC1_IfcConstructionMaterialResource_type; } @@ -14807,7 +14807,7 @@ Ifc4x3_rc1::IfcConstructionMaterialResourceType::IfcConstructionMaterialResource // Function implementations for IfcConstructionProductResource boost::optional< ::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Value > Ifc4x3_rc1::IfcConstructionProductResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcConstructionProductResource::declaration() const { return *IFC4X3_RC1_IfcConstructionProductResource_type; } @@ -14829,7 +14829,7 @@ Ifc4x3_rc1::IfcConstructionProductResourceType::IfcConstructionProductResourceTy ::Ifc4x3_rc1::IfcResourceTime* Ifc4x3_rc1::IfcConstructionResource::Usage() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcResourceTime>(true); } void Ifc4x3_rc1::IfcConstructionResource::setUsage(::Ifc4x3_rc1::IfcResourceTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > Ifc4x3_rc1::IfcConstructionResource::BaseCosts() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc1::IfcAppliedValue >(); } -void Ifc4x3_rc1::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcPhysicalQuantity* Ifc4x3_rc1::IfcConstructionResource::BaseQuantity() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcPhysicalQuantity>(true); } void Ifc4x3_rc1::IfcConstructionResource::setBaseQuantity(::Ifc4x3_rc1::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -14841,7 +14841,7 @@ Ifc4x3_rc1::IfcConstructionResource::IfcConstructionResource(std::string v1_Glob // Function implementations for IfcConstructionResourceType boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > Ifc4x3_rc1::IfcConstructionResourceType::BaseCosts() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc1::IfcAppliedValue >(); } -void Ifc4x3_rc1::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x3_rc1::IfcPhysicalQuantity* Ifc4x3_rc1::IfcConstructionResourceType::BaseQuantity() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcPhysicalQuantity>(true); } void Ifc4x3_rc1::IfcConstructionResourceType::setBaseQuantity(::Ifc4x3_rc1::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -14853,13 +14853,13 @@ Ifc4x3_rc1::IfcConstructionResourceType::IfcConstructionResourceType(std::string // Function implementations for IfcContext boost::optional< std::string > Ifc4x3_rc1::IfcContext::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcContext::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcContext::Phase() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationContext >::ptr > Ifc4x3_rc1::IfcContext::RepresentationContexts() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcRepresentationContext >(); } -void Ifc4x3_rc1::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcUnitAssignment* Ifc4x3_rc1::IfcContext::UnitsInContext() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcUnitAssignment>(true); } void Ifc4x3_rc1::IfcContext::setUnitsInContext(::Ifc4x3_rc1::IfcUnitAssignment* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -14884,7 +14884,7 @@ Ifc4x3_rc1::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4x3_rc1::IfcDi // Function implementations for IfcControl boost::optional< std::string > Ifc4x3_rc1::IfcControl::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcRelAssignsToControl::list::ptr Ifc4x3_rc1::IfcControl::Controls() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToControl_type, 6)->as(); } @@ -14895,7 +14895,7 @@ Ifc4x3_rc1::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwn // Function implementations for IfcController boost::optional< ::Ifc4x3_rc1::IfcControllerTypeEnum::Value > Ifc4x3_rc1::IfcController::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcControllerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcControllerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcControllerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcController::declaration() const { return *IFC4X3_RC1_IfcController_type; } @@ -14938,7 +14938,7 @@ Ifc4x3_rc1::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(: // Function implementations for IfcConveyorSegment boost::optional< ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value > Ifc4x3_rc1::IfcConveyorSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcConveyorSegment::declaration() const { return *IFC4X3_RC1_IfcConveyorSegment_type; } @@ -14958,7 +14958,7 @@ Ifc4x3_rc1::IfcConveyorSegmentType::IfcConveyorSegmentType(std::string v1_Global // Function implementations for IfcCooledBeam boost::optional< ::Ifc4x3_rc1::IfcCooledBeamTypeEnum::Value > Ifc4x3_rc1::IfcCooledBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCooledBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCooledBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCooledBeam::declaration() const { return *IFC4X3_RC1_IfcCooledBeam_type; } @@ -14978,7 +14978,7 @@ Ifc4x3_rc1::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCoolingTower boost::optional< ::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Value > Ifc4x3_rc1::IfcCoolingTower::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCoolingTower::declaration() const { return *IFC4X3_RC1_IfcCoolingTower_type; } @@ -15012,11 +15012,11 @@ Ifc4x3_rc1::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4x3_rc1::IfcCoor std::string Ifc4x3_rc1::IfcCoordinateReferenceSystem::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcCoordinateReferenceSystem::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcCoordinateReferenceSystem::VerticalDatum() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc1::IfcCoordinateOperation::list::ptr Ifc4x3_rc1::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return data_->getInverse(IFC4X3_RC1_IfcCoordinateOperation_type, 0)->as(); } @@ -15027,11 +15027,11 @@ Ifc4x3_rc1::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(std::stri // Function implementations for IfcCostItem boost::optional< ::Ifc4x3_rc1::IfcCostItemTypeEnum::Value > Ifc4x3_rc1::IfcCostItem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCostItemTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc1::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCostItemTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCostItemTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCostValue >::ptr > Ifc4x3_rc1::IfcCostItem::CostValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcCostValue >(); } -void Ifc4x3_rc1::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr > Ifc4x3_rc1::IfcCostItem::CostQuantities() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc1::IfcPhysicalQuantity >(); } -void Ifc4x3_rc1::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCostItem::declaration() const { return *IFC4X3_RC1_IfcCostItem_type; } @@ -15041,13 +15041,13 @@ Ifc4x3_rc1::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcCostSchedule boost::optional< ::Ifc4x3_rc1::IfcCostScheduleTypeEnum::Value > Ifc4x3_rc1::IfcCostSchedule::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCostScheduleTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc1::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCostScheduleTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCostScheduleTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcCostSchedule::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcCostSchedule::SubmittedOn() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcCostSchedule::UpdateDate() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCostSchedule::declaration() const { return *IFC4X3_RC1_IfcCostSchedule_type; } @@ -15065,7 +15065,7 @@ Ifc4x3_rc1::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, b // Function implementations for IfcCourse boost::optional< ::Ifc4x3_rc1::IfcCourseTypeEnum::Value > Ifc4x3_rc1::IfcCourse::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCourseTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCourseTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCourseTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCourseTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCourseTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCourse::declaration() const { return *IFC4X3_RC1_IfcCourse_type; } @@ -15085,7 +15085,7 @@ Ifc4x3_rc1::IfcCourseType::IfcCourseType(std::string v1_GlobalId, ::Ifc4x3_rc1:: // Function implementations for IfcCovering boost::optional< ::Ifc4x3_rc1::IfcCoveringTypeEnum::Value > Ifc4x3_rc1::IfcCovering::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCoveringTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCoveringTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcRelCoversSpaces::list::ptr Ifc4x3_rc1::IfcCovering::CoversSpaces() const { return data_->getInverse(IFC4X3_RC1_IfcRelCoversSpaces_type, 5)->as(); } ::Ifc4x3_rc1::IfcRelCoversBldgElements::list::ptr Ifc4x3_rc1::IfcCovering::CoversElements() const { return data_->getInverse(IFC4X3_RC1_IfcRelCoversBldgElements_type, 5)->as(); } @@ -15107,7 +15107,7 @@ Ifc4x3_rc1::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcCrewResource boost::optional< ::Ifc4x3_rc1::IfcCrewResourceTypeEnum::Value > Ifc4x3_rc1::IfcCrewResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCrewResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCrewResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCrewResource::declaration() const { return *IFC4X3_RC1_IfcCrewResource_type; } @@ -15153,7 +15153,7 @@ void Ifc4x3_rc1::IfcCurrencyRelationship::setRelatedMonetaryUnit(::Ifc4x3_rc1::I double Ifc4x3_rc1::IfcCurrencyRelationship::ExchangeRate() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc1::IfcCurrencyRelationship::setExchangeRate(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcCurrencyRelationship::RateDateTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcLibraryInformation* Ifc4x3_rc1::IfcCurrencyRelationship::RateSource() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcLibraryInformation>(true); } void Ifc4x3_rc1::IfcCurrencyRelationship::setRateSource(::Ifc4x3_rc1::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -15165,7 +15165,7 @@ Ifc4x3_rc1::IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< st // Function implementations for IfcCurtainWall boost::optional< ::Ifc4x3_rc1::IfcCurtainWallTypeEnum::Value > Ifc4x3_rc1::IfcCurtainWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCurtainWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCurtainWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCurtainWall::declaration() const { return *IFC4X3_RC1_IfcCurtainWall_type; } @@ -15241,7 +15241,7 @@ void Ifc4x3_rc1::IfcCurveStyle::setCurveWidth(::Ifc4x3_rc1::IfcSizeSelect* v) { ::Ifc4x3_rc1::IfcColour* Ifc4x3_rc1::IfcCurveStyle::CurveColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcColour>(true); } void Ifc4x3_rc1::IfcCurveStyle::setCurveColour(::Ifc4x3_rc1::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcCurveStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcCurveStyle::declaration() const { return *IFC4X3_RC1_IfcCurveStyle_type; } @@ -15251,7 +15251,7 @@ Ifc4x3_rc1::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, // Function implementations for IfcCurveStyleFont boost::optional< std::string > Ifc4x3_rc1::IfcCurveStyleFont::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc4x3_rc1::IfcCurveStyleFontPattern >::ptr Ifc4x3_rc1::IfcCurveStyleFont::PatternList() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcCurveStyleFontPattern >(); } void Ifc4x3_rc1::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc4x3_rc1::IfcCurveStyleFontPattern >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -15263,7 +15263,7 @@ Ifc4x3_rc1::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > // Function implementations for IfcCurveStyleFontAndScaling boost::optional< std::string > Ifc4x3_rc1::IfcCurveStyleFontAndScaling::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc1::IfcCurveStyleFontSelect* Ifc4x3_rc1::IfcCurveStyleFontAndScaling::CurveFont() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCurveStyleFontSelect>(true); } void Ifc4x3_rc1::IfcCurveStyleFontAndScaling::setCurveFont(::Ifc4x3_rc1::IfcCurveStyleFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } double Ifc4x3_rc1::IfcCurveStyleFontAndScaling::CurveFontScaling() const { double v = *data_->getArgument(2); return v; } @@ -15299,7 +15299,7 @@ Ifc4x3_rc1::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4x3_rc1::IfcAxis2P // Function implementations for IfcDamper boost::optional< ::Ifc4x3_rc1::IfcDamperTypeEnum::Value > Ifc4x3_rc1::IfcDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDamper::declaration() const { return *IFC4X3_RC1_IfcDamper_type; } @@ -15339,7 +15339,7 @@ void Ifc4x3_rc1::IfcDerivedProfileDef::setParentProfile(::Ifc4x3_rc1::IfcProfile ::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* Ifc4x3_rc1::IfcDerivedProfileDef::Operator() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcCartesianTransformationOperator2D>(true); } void Ifc4x3_rc1::IfcDerivedProfileDef::setOperator(::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDerivedProfileDef::Label() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDerivedProfileDef::declaration() const { return *IFC4X3_RC1_IfcDerivedProfileDef_type; } @@ -15353,7 +15353,7 @@ void Ifc4x3_rc1::IfcDerivedUnit::setElements(aggregate_of< ::Ifc4x3_rc1::IfcDeri ::Ifc4x3_rc1::IfcDerivedUnitEnum::Value Ifc4x3_rc1::IfcDerivedUnit::UnitType() const { return ::Ifc4x3_rc1::IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); } void Ifc4x3_rc1::IfcDerivedUnit::setUnitType(::Ifc4x3_rc1::IfcDerivedUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDerivedUnitEnum::ToString(v)));data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDerivedUnit::UserDefinedType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDerivedUnit::declaration() const { return *IFC4X3_RC1_IfcDerivedUnit_type; } @@ -15409,9 +15409,9 @@ Ifc4x3_rc1::IfcDirection::IfcDirection(std::vector< double > /*[2:3]*/ v1_Direct ::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::Directrix() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcCurve>(true); } void Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::setDirectrix(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::declaration() const { return *IFC4X3_RC1_IfcDirectrixCurveSweptAreaSolid_type; } @@ -15435,7 +15435,7 @@ Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::IfcDirectrixDistanceSweptAreaSol // Function implementations for IfcDiscreteAccessory boost::optional< ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value > Ifc4x3_rc1::IfcDiscreteAccessory::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDiscreteAccessory::declaration() const { return *IFC4X3_RC1_IfcDiscreteAccessory_type; } @@ -15457,13 +15457,13 @@ Ifc4x3_rc1::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_Gl double Ifc4x3_rc1::IfcDistanceExpression::DistanceAlong() const { double v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcDistanceExpression::setDistanceAlong(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDistanceExpression::OffsetLateral() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDistanceExpression::OffsetVertical() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDistanceExpression::OffsetLongitudinal() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcDistanceExpression::AlongHorizontal() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcDistanceExpression::setAlongHorizontal(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcDistanceExpression::setAlongHorizontal(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDistanceExpression::declaration() const { return *IFC4X3_RC1_IfcDistanceExpression_type; } @@ -15473,7 +15473,7 @@ Ifc4x3_rc1::IfcDistanceExpression::IfcDistanceExpression(double v1_DistanceAlong // Function implementations for IfcDistributionBoard boost::optional< ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value > Ifc4x3_rc1::IfcDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDistributionBoard::declaration() const { return *IFC4X3_RC1_IfcDistributionBoard_type; } @@ -15493,7 +15493,7 @@ Ifc4x3_rc1::IfcDistributionBoardType::IfcDistributionBoardType(std::string v1_Gl // Function implementations for IfcDistributionChamberElement boost::optional< ::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Value > Ifc4x3_rc1::IfcDistributionChamberElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDistributionChamberElement::declaration() const { return *IFC4X3_RC1_IfcDistributionChamberElement_type; } @@ -15572,11 +15572,11 @@ Ifc4x3_rc1::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std:: // Function implementations for IfcDistributionPort boost::optional< ::Ifc4x3_rc1::IfcFlowDirectionEnum::Value > Ifc4x3_rc1::IfcDistributionPort::FlowDirection() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc1::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_rc1::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFlowDirectionEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_rc1::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFlowDirectionEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc1::IfcDistributionPortTypeEnum::Value > Ifc4x3_rc1::IfcDistributionPort::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDistributionPortTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionPortTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionPortTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > Ifc4x3_rc1::IfcDistributionPort::SystemType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDistributionSystemEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc1::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDistributionPort::declaration() const { return *IFC4X3_RC1_IfcDistributionPort_type; } @@ -15586,9 +15586,9 @@ Ifc4x3_rc1::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, :: // Function implementations for IfcDistributionSystem boost::optional< std::string > Ifc4x3_rc1::IfcDistributionSystem::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > Ifc4x3_rc1::IfcDistributionSystem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDistributionSystemEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc1::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDistributionSystem::declaration() const { return *IFC4X3_RC1_IfcDistributionSystem_type; } @@ -15602,35 +15602,35 @@ void Ifc4x3_rc1::IfcDocumentInformation::setIdentification(std::string v) { {Ifc std::string Ifc4x3_rc1::IfcDocumentInformation::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcDocumentInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::Location() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::Purpose() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::IntendedUse() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::Scope() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::Revision() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcDocumentInformation::DocumentOwner() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcActorSelect>(true); } void Ifc4x3_rc1::IfcDocumentInformation::setDocumentOwner(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcDocumentInformation::Editors() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::CreationTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::LastRevisionTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::ElectronicFormat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::ValidFrom() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::ValidUntil() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc1::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< ::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::Value > Ifc4x3_rc1::IfcDocumentInformation::Confidentiality() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); } -void Ifc4x3_rc1::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::ToString(*v)));data_->setArgument(15,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::ToString(*v)));}data_->setArgument(15,attr);} } boost::optional< ::Ifc4x3_rc1::IfcDocumentStatusEnum::Value > Ifc4x3_rc1::IfcDocumentInformation::Status() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); } -void Ifc4x3_rc1::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_rc1::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDocumentStatusEnum::ToString(*v)));data_->setArgument(16,attr);} } +void Ifc4x3_rc1::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_rc1::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDocumentStatusEnum::ToString(*v)));}data_->setArgument(16,attr);} } ::Ifc4x3_rc1::IfcRelAssociatesDocument::list::ptr Ifc4x3_rc1::IfcDocumentInformation::DocumentInfoForObjects() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociatesDocument_type, 5)->as(); } ::Ifc4x3_rc1::IfcDocumentReference::list::ptr Ifc4x3_rc1::IfcDocumentInformation::HasDocumentReferences() const { return data_->getInverse(IFC4X3_RC1_IfcDocumentReference_type, 4)->as(); } @@ -15648,7 +15648,7 @@ void Ifc4x3_rc1::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc4x aggregate_of< ::Ifc4x3_rc1::IfcDocumentInformation >::ptr Ifc4x3_rc1::IfcDocumentInformationRelationship::RelatedDocuments() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcDocumentInformation >(); } void Ifc4x3_rc1::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc4x3_rc1::IfcDocumentInformation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformationRelationship::RelationshipType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDocumentInformationRelationship::declaration() const { return *IFC4X3_RC1_IfcDocumentInformationRelationship_type; } @@ -15658,7 +15658,7 @@ Ifc4x3_rc1::IfcDocumentInformationRelationship::IfcDocumentInformationRelationsh // Function implementations for IfcDocumentReference boost::optional< std::string > Ifc4x3_rc1::IfcDocumentReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc1::IfcDocumentInformation* Ifc4x3_rc1::IfcDocumentReference::ReferencedDocument() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcDocumentInformation>(true); } void Ifc4x3_rc1::IfcDocumentReference::setReferencedDocument(::Ifc4x3_rc1::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -15671,15 +15671,15 @@ Ifc4x3_rc1::IfcDocumentReference::IfcDocumentReference(boost::optional< std::str // Function implementations for IfcDoor boost::optional< double > Ifc4x3_rc1::IfcDoor::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoor::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc1::IfcDoorTypeEnum::Value > Ifc4x3_rc1::IfcDoor::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDoorTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDoorTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDoorTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value > Ifc4x3_rc1::IfcDoor::OperationType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc1::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDoorTypeOperationEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDoorTypeOperationEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDoor::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDoor::declaration() const { return *IFC4X3_RC1_IfcDoor_type; } @@ -15689,31 +15689,31 @@ Ifc4x3_rc1::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHist // Function implementations for IfcDoorLiningProperties boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::ThresholdDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::ThresholdThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::TransomThickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::TransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::LiningOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::ThresholdOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::CasingThickness() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::CasingDepth() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } ::Ifc4x3_rc1::IfcShapeAspect* Ifc4x3_rc1::IfcDoorLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc4x3_rc1::IfcShapeAspect>(true); } void Ifc4x3_rc1::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc4x3_rc1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDoorLiningProperties::declaration() const { return *IFC4X3_RC1_IfcDoorLiningProperties_type; } @@ -15723,11 +15723,11 @@ Ifc4x3_rc1::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_Glob // Function implementations for IfcDoorPanelProperties boost::optional< double > Ifc4x3_rc1::IfcDoorPanelProperties::PanelDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc1::IfcDoorPanelOperationEnum::Value Ifc4x3_rc1::IfcDoorPanelProperties::PanelOperation() const { return ::Ifc4x3_rc1::IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc1::IfcDoorPanelProperties::setPanelOperation(::Ifc4x3_rc1::IfcDoorPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDoorPanelOperationEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcDoorPanelProperties::PanelWidth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc1::IfcDoorPanelPositionEnum::Value Ifc4x3_rc1::IfcDoorPanelProperties::PanelPosition() const { return ::Ifc4x3_rc1::IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc1::IfcDoorPanelProperties::setPanelPosition(::Ifc4x3_rc1::IfcDoorPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDoorPanelPositionEnum::ToString(v)));data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcShapeAspect* Ifc4x3_rc1::IfcDoorPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcShapeAspect>(true); } @@ -15769,9 +15769,9 @@ void Ifc4x3_rc1::IfcDoorType::setPredefinedType(::Ifc4x3_rc1::IfcDoorTypeEnum::V ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value Ifc4x3_rc1::IfcDoorType::OperationType() const { return ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc1::IfcDoorType::setOperationType(::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDoorTypeOperationEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcDoorType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcDoorType::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDoorType::declaration() const { return *IFC4X3_RC1_IfcDoorType_type; } @@ -15797,7 +15797,7 @@ Ifc4x3_rc1::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(s // Function implementations for IfcDuctFitting boost::optional< ::Ifc4x3_rc1::IfcDuctFittingTypeEnum::Value > Ifc4x3_rc1::IfcDuctFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDuctFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDuctFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDuctFitting::declaration() const { return *IFC4X3_RC1_IfcDuctFitting_type; } @@ -15817,7 +15817,7 @@ Ifc4x3_rc1::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcDuctSegment boost::optional< ::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Value > Ifc4x3_rc1::IfcDuctSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDuctSegment::declaration() const { return *IFC4X3_RC1_IfcDuctSegment_type; } @@ -15837,7 +15837,7 @@ Ifc4x3_rc1::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::If // Function implementations for IfcDuctSilencer boost::optional< ::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Value > Ifc4x3_rc1::IfcDuctSilencer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcDuctSilencer::declaration() const { return *IFC4X3_RC1_IfcDuctSilencer_type; } @@ -15857,7 +15857,7 @@ Ifc4x3_rc1::IfcDuctSilencerType::IfcDuctSilencerType(std::string v1_GlobalId, :: // Function implementations for IfcEarthworksCut boost::optional< ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::Value > Ifc4x3_rc1::IfcEarthworksCut::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcEarthworksCut::declaration() const { return *IFC4X3_RC1_IfcEarthworksCut_type; } @@ -15875,7 +15875,7 @@ Ifc4x3_rc1::IfcEarthworksElement::IfcEarthworksElement(std::string v1_GlobalId, // Function implementations for IfcEarthworksFill boost::optional< ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::Value > Ifc4x3_rc1::IfcEarthworksFill::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcEarthworksFill::declaration() const { return *IFC4X3_RC1_IfcEarthworksFill_type; } @@ -15919,7 +15919,7 @@ Ifc4x3_rc1::IfcEdgeLoop::IfcEdgeLoop(aggregate_of< ::Ifc4x3_rc1::IfcOrientedEdge // Function implementations for IfcElectricAppliance boost::optional< ::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Value > Ifc4x3_rc1::IfcElectricAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcElectricAppliance::declaration() const { return *IFC4X3_RC1_IfcElectricAppliance_type; } @@ -15939,7 +15939,7 @@ Ifc4x3_rc1::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_Gl // Function implementations for IfcElectricDistributionBoard boost::optional< ::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Value > Ifc4x3_rc1::IfcElectricDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcElectricDistributionBoard::declaration() const { return *IFC4X3_RC1_IfcElectricDistributionBoard_type; } @@ -15959,7 +15959,7 @@ Ifc4x3_rc1::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(s // Function implementations for IfcElectricFlowStorageDevice boost::optional< ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4x3_rc1::IfcElectricFlowStorageDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcElectricFlowStorageDevice::declaration() const { return *IFC4X3_RC1_IfcElectricFlowStorageDevice_type; } @@ -15979,7 +15979,7 @@ Ifc4x3_rc1::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(s // Function implementations for IfcElectricFlowTreatmentDevice boost::optional< ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value > Ifc4x3_rc1::IfcElectricFlowTreatmentDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcElectricFlowTreatmentDevice::declaration() const { return *IFC4X3_RC1_IfcElectricFlowTreatmentDevice_type; } @@ -15999,7 +15999,7 @@ Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceTy // Function implementations for IfcElectricGenerator boost::optional< ::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Value > Ifc4x3_rc1::IfcElectricGenerator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcElectricGenerator::declaration() const { return *IFC4X3_RC1_IfcElectricGenerator_type; } @@ -16019,7 +16019,7 @@ Ifc4x3_rc1::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_Gl // Function implementations for IfcElectricMotor boost::optional< ::Ifc4x3_rc1::IfcElectricMotorTypeEnum::Value > Ifc4x3_rc1::IfcElectricMotor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricMotorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricMotorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcElectricMotor::declaration() const { return *IFC4X3_RC1_IfcElectricMotor_type; } @@ -16039,7 +16039,7 @@ Ifc4x3_rc1::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, // Function implementations for IfcElectricTimeControl boost::optional< ::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Value > Ifc4x3_rc1::IfcElectricTimeControl::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcElectricTimeControl::declaration() const { return *IFC4X3_RC1_IfcElectricTimeControl_type; } @@ -16059,7 +16059,7 @@ Ifc4x3_rc1::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v // Function implementations for IfcElement boost::optional< std::string > Ifc4x3_rc1::IfcElement::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcRelFillsElement::list::ptr Ifc4x3_rc1::IfcElement::FillsVoids() const { return data_->getInverse(IFC4X3_RC1_IfcRelFillsElement_type, 5)->as(); } ::Ifc4x3_rc1::IfcRelConnectsElements::list::ptr Ifc4x3_rc1::IfcElement::ConnectedTo() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsElements_type, 5)->as(); } @@ -16080,9 +16080,9 @@ Ifc4x3_rc1::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwn // Function implementations for IfcElementAssembly boost::optional< ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value > Ifc4x3_rc1::IfcElementAssembly::AssemblyPlace() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAssemblyPlaceEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAssemblyPlaceEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value > Ifc4x3_rc1::IfcElementAssembly::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc1::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcElementAssembly::declaration() const { return *IFC4X3_RC1_IfcElementAssembly_type; } @@ -16118,7 +16118,7 @@ Ifc4x3_rc1::IfcElementComponentType::IfcElementComponentType(std::string v1_Glob // Function implementations for IfcElementQuantity boost::optional< std::string > Ifc4x3_rc1::IfcElementQuantity::MethodOfMeasurement() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr Ifc4x3_rc1::IfcElementQuantity::Quantities() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcPhysicalQuantity >(); } void Ifc4x3_rc1::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -16130,7 +16130,7 @@ Ifc4x3_rc1::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::If // Function implementations for IfcElementType boost::optional< std::string > Ifc4x3_rc1::IfcElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcElementType::declaration() const { return *IFC4X3_RC1_IfcElementType_type; } @@ -16190,7 +16190,7 @@ Ifc4x3_rc1::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::st // Function implementations for IfcEngine boost::optional< ::Ifc4x3_rc1::IfcEngineTypeEnum::Value > Ifc4x3_rc1::IfcEngine::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEngineTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEngineTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEngineTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcEngine::declaration() const { return *IFC4X3_RC1_IfcEngine_type; } @@ -16210,7 +16210,7 @@ Ifc4x3_rc1::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4x3_rc1:: // Function implementations for IfcEvaporativeCooler boost::optional< ::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Value > Ifc4x3_rc1::IfcEvaporativeCooler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcEvaporativeCooler::declaration() const { return *IFC4X3_RC1_IfcEvaporativeCooler_type; } @@ -16230,7 +16230,7 @@ Ifc4x3_rc1::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_Gl // Function implementations for IfcEvaporator boost::optional< ::Ifc4x3_rc1::IfcEvaporatorTypeEnum::Value > Ifc4x3_rc1::IfcEvaporator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEvaporatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEvaporatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcEvaporator::declaration() const { return *IFC4X3_RC1_IfcEvaporator_type; } @@ -16250,11 +16250,11 @@ Ifc4x3_rc1::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcEvent boost::optional< ::Ifc4x3_rc1::IfcEventTypeEnum::Value > Ifc4x3_rc1::IfcEvent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEventTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc1::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEventTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEventTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value > Ifc4x3_rc1::IfcEvent::EventTriggerType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEventTriggerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEventTriggerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcEvent::UserDefinedEventTriggerType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x3_rc1::IfcEventTime* Ifc4x3_rc1::IfcEvent::EventOccurenceTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcEventTime>(true); } void Ifc4x3_rc1::IfcEvent::setEventOccurenceTime(::Ifc4x3_rc1::IfcEventTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -16266,13 +16266,13 @@ Ifc4x3_rc1::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHi // Function implementations for IfcEventTime boost::optional< std::string > Ifc4x3_rc1::IfcEventTime::ActualDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcEventTime::EarlyDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcEventTime::LateDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcEventTime::ScheduleDate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcEventTime::declaration() const { return *IFC4X3_RC1_IfcEventTime_type; } @@ -16286,7 +16286,7 @@ void Ifc4x3_rc1::IfcEventType::setPredefinedType(::Ifc4x3_rc1::IfcEventTypeEnum: ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value Ifc4x3_rc1::IfcEventType::EventTriggerType() const { return ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc1::IfcEventType::setEventTriggerType(::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcEventTriggerTypeEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcEventType::UserDefinedEventTriggerType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcEventType::declaration() const { return *IFC4X3_RC1_IfcEventType_type; } @@ -16296,9 +16296,9 @@ Ifc4x3_rc1::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4x3_rc1::If // Function implementations for IfcExtendedProperties boost::optional< std::string > Ifc4x3_rc1::IfcExtendedProperties::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcExtendedProperties::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr Ifc4x3_rc1::IfcExtendedProperties::Properties() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcProperty >(); } void Ifc4x3_rc1::IfcExtendedProperties::setProperties(aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -16318,11 +16318,11 @@ Ifc4x3_rc1::IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseE // Function implementations for IfcExternalReference boost::optional< std::string > Ifc4x3_rc1::IfcExternalReference::Location() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcExternalReference::Identification() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcExternalReference::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcExternalReference::ExternalReferenceForResources() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 2)->as(); } @@ -16345,7 +16345,7 @@ Ifc4x3_rc1::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(b // Function implementations for IfcExternalSpatialElement boost::optional< ::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::Value > Ifc4x3_rc1::IfcExternalSpatialElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc1::IfcExternalSpatialElement::BoundedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelSpaceBoundary_type, 4)->as(); } @@ -16501,17 +16501,17 @@ Ifc4x3_rc1::IfcFacilityPart::IfcFacilityPart(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcFailureConnectionCondition boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::TensionFailureX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::TensionFailureY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::TensionFailureZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::CompressionFailureX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::CompressionFailureY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::CompressionFailureZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFailureConnectionCondition::declaration() const { return *IFC4X3_RC1_IfcFailureConnectionCondition_type; } @@ -16521,7 +16521,7 @@ Ifc4x3_rc1::IfcFailureConnectionCondition::IfcFailureConnectionCondition(boost:: // Function implementations for IfcFan boost::optional< ::Ifc4x3_rc1::IfcFanTypeEnum::Value > Ifc4x3_rc1::IfcFan::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFanTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFanTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFanTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFan::declaration() const { return *IFC4X3_RC1_IfcFan_type; } @@ -16541,7 +16541,7 @@ Ifc4x3_rc1::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwn // Function implementations for IfcFastener boost::optional< ::Ifc4x3_rc1::IfcFastenerTypeEnum::Value > Ifc4x3_rc1::IfcFastener::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFastenerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFastenerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFastenerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFastener::declaration() const { return *IFC4X3_RC1_IfcFastener_type; } @@ -16589,7 +16589,7 @@ Ifc4x3_rc1::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::stri aggregate_of_instance::ptr Ifc4x3_rc1::IfcFillAreaStyle::FillStyles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcFillAreaStyle::setFillStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcFillAreaStyle::ModelorDraughting() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcFillAreaStyle::setModelorDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcFillAreaStyle::setModelorDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFillAreaStyle::declaration() const { return *IFC4X3_RC1_IfcFillAreaStyle_type; } @@ -16631,7 +16631,7 @@ Ifc4x3_rc1::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(aggregate_of< ::Ifc4x3_ // Function implementations for IfcFilter boost::optional< ::Ifc4x3_rc1::IfcFilterTypeEnum::Value > Ifc4x3_rc1::IfcFilter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFilterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFilterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFilterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFilter::declaration() const { return *IFC4X3_RC1_IfcFilter_type; } @@ -16651,7 +16651,7 @@ Ifc4x3_rc1::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4x3_rc1:: // Function implementations for IfcFireSuppressionTerminal boost::optional< ::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4x3_rc1::IfcFireSuppressionTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFireSuppressionTerminal::declaration() const { return *IFC4X3_RC1_IfcFireSuppressionTerminal_type; } @@ -16713,7 +16713,7 @@ Ifc4x3_rc1::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcFlowInstrument boost::optional< ::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Value > Ifc4x3_rc1::IfcFlowInstrument::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFlowInstrument::declaration() const { return *IFC4X3_RC1_IfcFlowInstrument_type; } @@ -16733,7 +16733,7 @@ Ifc4x3_rc1::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId // Function implementations for IfcFlowMeter boost::optional< ::Ifc4x3_rc1::IfcFlowMeterTypeEnum::Value > Ifc4x3_rc1::IfcFlowMeter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFlowMeterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFlowMeterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFlowMeter::declaration() const { return *IFC4X3_RC1_IfcFlowMeter_type; } @@ -16833,7 +16833,7 @@ Ifc4x3_rc1::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v // Function implementations for IfcFooting boost::optional< ::Ifc4x3_rc1::IfcFootingTypeEnum::Value > Ifc4x3_rc1::IfcFooting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFootingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFootingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFootingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFooting::declaration() const { return *IFC4X3_RC1_IfcFooting_type; } @@ -16869,7 +16869,7 @@ Ifc4x3_rc1::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_Gl // Function implementations for IfcFurniture boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > Ifc4x3_rc1::IfcFurniture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFurnitureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFurniture::declaration() const { return *IFC4X3_RC1_IfcFurniture_type; } @@ -16881,7 +16881,7 @@ Ifc4x3_rc1::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4x3_rc1::If ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value Ifc4x3_rc1::IfcFurnitureType::AssemblyPlace() const { return ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc1::IfcFurnitureType::setAssemblyPlace(::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcAssemblyPlaceEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > Ifc4x3_rc1::IfcFurnitureType::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFurnitureTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcFurnitureType::declaration() const { return *IFC4X3_RC1_IfcFurnitureType_type; } @@ -16891,7 +16891,7 @@ Ifc4x3_rc1::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4x3 // Function implementations for IfcGeographicElement boost::optional< ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value > Ifc4x3_rc1::IfcGeographicElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcGeographicElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcGeographicElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcGeographicElement::declaration() const { return *IFC4X3_RC1_IfcGeographicElement_type; } @@ -16921,7 +16921,7 @@ Ifc4x3_rc1::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of_instance::pt int Ifc4x3_rc1::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { int v = *data_->getArgument(2); return v; } void Ifc4x3_rc1::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcGeometricRepresentationContext::Precision() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc1::IfcAxis2Placement* Ifc4x3_rc1::IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcAxis2Placement>(true); } void Ifc4x3_rc1::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc4x3_rc1::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } ::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcGeometricRepresentationContext::TrueNorth() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcDirection>(true); } @@ -16947,11 +16947,11 @@ Ifc4x3_rc1::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : I ::Ifc4x3_rc1::IfcGeometricRepresentationContext* Ifc4x3_rc1::IfcGeometricRepresentationSubContext::ParentContext() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcGeometricRepresentationContext>(true); } void Ifc4x3_rc1::IfcGeometricRepresentationSubContext::setParentContext(::Ifc4x3_rc1::IfcGeometricRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcGeometricRepresentationSubContext::TargetScale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcGeometricProjectionEnum::Value Ifc4x3_rc1::IfcGeometricRepresentationSubContext::TargetView() const { return ::Ifc4x3_rc1::IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc1::IfcGeometricRepresentationSubContext::setTargetView(::Ifc4x3_rc1::IfcGeometricProjectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcGeometricProjectionEnum::ToString(v)));data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcGeometricRepresentationSubContext::declaration() const { return *IFC4X3_RC1_IfcGeometricRepresentationSubContext_type; } @@ -17015,9 +17015,9 @@ void Ifc4x3_rc1::IfcGrid::setUAxes(aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::pt aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr Ifc4x3_rc1::IfcGrid::VAxes() const { aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc1::IfcGridAxis >(); } void Ifc4x3_rc1::IfcGrid::setVAxes(aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr > Ifc4x3_rc1::IfcGrid::WAxes() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc1::IfcGridAxis >(); } -void Ifc4x3_rc1::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc1::IfcGridTypeEnum::Value > Ifc4x3_rc1::IfcGrid::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcGridTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcGridTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcGridTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcGrid::declaration() const { return *IFC4X3_RC1_IfcGrid_type; } @@ -17027,7 +17027,7 @@ Ifc4x3_rc1::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHist // Function implementations for IfcGridAxis boost::optional< std::string > Ifc4x3_rc1::IfcGridAxis::AxisTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcGridAxis::AxisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCurve>(true); } void Ifc4x3_rc1::IfcGridAxis::setAxisCurve(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } bool Ifc4x3_rc1::IfcGridAxis::SameSense() const { bool v = *data_->getArgument(2); return v; } @@ -17078,7 +17078,7 @@ Ifc4x3_rc1::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4x3_rc1::IfcSurface* v1_Ba // Function implementations for IfcHeatExchanger boost::optional< ::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Value > Ifc4x3_rc1::IfcHeatExchanger::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcHeatExchanger::declaration() const { return *IFC4X3_RC1_IfcHeatExchanger_type; } @@ -17098,7 +17098,7 @@ Ifc4x3_rc1::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, // Function implementations for IfcHumidifier boost::optional< ::Ifc4x3_rc1::IfcHumidifierTypeEnum::Value > Ifc4x3_rc1::IfcHumidifier::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcHumidifierTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcHumidifierTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcHumidifierTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcHumidifier::declaration() const { return *IFC4X3_RC1_IfcHumidifier_type; } @@ -17126,11 +17126,11 @@ void Ifc4x3_rc1::IfcIShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc1::IfcIShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc1::IfcIShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcIShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc1::IfcIShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcIShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcIShapeProfileDef_type; } @@ -17170,7 +17170,7 @@ Ifc4x3_rc1::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(std::st // Function implementations for IfcInclinedReferenceSweptAreaSolid boost::optional< bool > Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::FixedAxisVertical() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } bool v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::setFixedAxisVertical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::setFixedAxisVertical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcAxisLateralInclination* Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::Inclinating() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcAxisLateralInclination>(true); } void Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::setInclinating(::Ifc4x3_rc1::IfcAxisLateralInclination* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -17184,7 +17184,7 @@ Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::IfcInclinedReferenceSweptAreaSol ::Ifc4x3_rc1::IfcTessellatedFaceSet* Ifc4x3_rc1::IfcIndexedColourMap::MappedTo() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcTessellatedFaceSet>(true); } void Ifc4x3_rc1::IfcIndexedColourMap::setMappedTo(::Ifc4x3_rc1::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc1::IfcIndexedColourMap::Opacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc1::IfcColourRgbList* Ifc4x3_rc1::IfcIndexedColourMap::Colours() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcColourRgbList>(true); } void Ifc4x3_rc1::IfcIndexedColourMap::setColours(::Ifc4x3_rc1::IfcColourRgbList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::vector< int > /*[1:?]*/ Ifc4x3_rc1::IfcIndexedColourMap::ColourIndex() const { std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } @@ -17200,9 +17200,9 @@ Ifc4x3_rc1::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4x3_rc1::IfcTessellate ::Ifc4x3_rc1::IfcCartesianPointList* Ifc4x3_rc1::IfcIndexedPolyCurve::Points() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCartesianPointList>(true); } void Ifc4x3_rc1::IfcIndexedPolyCurve::setPoints(::Ifc4x3_rc1::IfcCartesianPointList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcIndexedPolyCurve::Segments() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcIndexedPolyCurve::SelfIntersect() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcIndexedPolyCurve::declaration() const { return *IFC4X3_RC1_IfcIndexedPolyCurve_type; } @@ -17245,7 +17245,7 @@ Ifc4x3_rc1::IfcIndexedTextureMap::IfcIndexedTextureMap(aggregate_of< ::Ifc4x3_rc // Function implementations for IfcIndexedTriangleTextureMap boost::optional< std::vector< std::vector< int > > > Ifc4x3_rc1::IfcIndexedTriangleTextureMap::TexCoordIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcIndexedTriangleTextureMap::declaration() const { return *IFC4X3_RC1_IfcIndexedTriangleTextureMap_type; } @@ -17255,7 +17255,7 @@ Ifc4x3_rc1::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(aggregate // Function implementations for IfcInterceptor boost::optional< ::Ifc4x3_rc1::IfcInterceptorTypeEnum::Value > Ifc4x3_rc1::IfcInterceptor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcInterceptorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcInterceptorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcInterceptorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcInterceptor::declaration() const { return *IFC4X3_RC1_IfcInterceptor_type; } @@ -17283,13 +17283,13 @@ Ifc4x3_rc1::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4x3_rc1::IfcCurve* v // Function implementations for IfcInventory boost::optional< ::Ifc4x3_rc1::IfcInventoryTypeEnum::Value > Ifc4x3_rc1::IfcInventory::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc1::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcInventoryTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcInventoryTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcInventory::Jurisdiction() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcActorSelect>(true); } void Ifc4x3_rc1::IfcInventory::setJurisdiction(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > Ifc4x3_rc1::IfcInventory::ResponsiblePersons() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcPerson >(); } -void Ifc4x3_rc1::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcInventory::LastUpdateDate() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcInventory::CurrentValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcCostValue>(true); } void Ifc4x3_rc1::IfcInventory::setCurrentValue(::Ifc4x3_rc1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcInventory::OriginalValue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcCostValue>(true); } @@ -17325,7 +17325,7 @@ Ifc4x3_rc1::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string // Function implementations for IfcJunctionBox boost::optional< ::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Value > Ifc4x3_rc1::IfcJunctionBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcJunctionBox::declaration() const { return *IFC4X3_RC1_IfcJunctionBox_type; } @@ -17367,15 +17367,15 @@ Ifc4x3_rc1::IfcKerbType::IfcKerbType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO double Ifc4x3_rc1::IfcLShapeProfileDef::Depth() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcLShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcLShapeProfileDef::Width() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } double Ifc4x3_rc1::IfcLShapeProfileDef::Thickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x3_rc1::IfcLShapeProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcLShapeProfileDef::FilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcLShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcLShapeProfileDef::LegSlope() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcLShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcLShapeProfileDef_type; } @@ -17385,7 +17385,7 @@ Ifc4x3_rc1::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4x3_rc1::IfcProfileTyp // Function implementations for IfcLaborResource boost::optional< ::Ifc4x3_rc1::IfcLaborResourceTypeEnum::Value > Ifc4x3_rc1::IfcLaborResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLaborResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLaborResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcLaborResource::declaration() const { return *IFC4X3_RC1_IfcLaborResource_type; } @@ -17417,7 +17417,7 @@ Ifc4x3_rc1::IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost // Function implementations for IfcLamp boost::optional< ::Ifc4x3_rc1::IfcLampTypeEnum::Value > Ifc4x3_rc1::IfcLamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcLampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcLamp::declaration() const { return *IFC4X3_RC1_IfcLamp_type; } @@ -17439,15 +17439,15 @@ Ifc4x3_rc1::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO std::string Ifc4x3_rc1::IfcLibraryInformation::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcLibraryInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcLibraryInformation::Version() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcLibraryInformation::Publisher() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcActorSelect>(true); } void Ifc4x3_rc1::IfcLibraryInformation::setPublisher(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcLibraryInformation::VersionDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcLibraryInformation::Location() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcLibraryInformation::Description() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcRelAssociatesLibrary::list::ptr Ifc4x3_rc1::IfcLibraryInformation::LibraryInfoForObjects() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociatesLibrary_type, 5)->as(); } ::Ifc4x3_rc1::IfcLibraryReference::list::ptr Ifc4x3_rc1::IfcLibraryInformation::HasLibraryReferences() const { return data_->getInverse(IFC4X3_RC1_IfcLibraryReference_type, 5)->as(); } @@ -17459,9 +17459,9 @@ Ifc4x3_rc1::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, bo // Function implementations for IfcLibraryReference boost::optional< std::string > Ifc4x3_rc1::IfcLibraryReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcLibraryReference::Language() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc1::IfcLibraryInformation* Ifc4x3_rc1::IfcLibraryReference::ReferencedLibrary() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcLibraryInformation>(true); } void Ifc4x3_rc1::IfcLibraryReference::setReferencedLibrary(::Ifc4x3_rc1::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -17488,7 +17488,7 @@ Ifc4x3_rc1::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPla // Function implementations for IfcLightFixture boost::optional< ::Ifc4x3_rc1::IfcLightFixtureTypeEnum::Value > Ifc4x3_rc1::IfcLightFixture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLightFixtureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLightFixtureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcLightFixture::declaration() const { return *IFC4X3_RC1_IfcLightFixture_type; } @@ -17520,13 +17520,13 @@ Ifc4x3_rc1::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4x // Function implementations for IfcLightSource boost::optional< std::string > Ifc4x3_rc1::IfcLightSource::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc1::IfcColourRgb* Ifc4x3_rc1::IfcLightSource::LightColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcColourRgb>(true); } void Ifc4x3_rc1::IfcLightSource::setLightColour(::Ifc4x3_rc1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcLightSource::AmbientIntensity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcLightSource::Intensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcLightSource::declaration() const { return *IFC4X3_RC1_IfcLightSource_type; } @@ -17594,7 +17594,7 @@ Ifc4x3_rc1::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< ::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcLightSourceSpot::Orientation() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcDirection>(true); } void Ifc4x3_rc1::IfcLightSourceSpot::setOrientation(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcLightSourceSpot::ConcentrationExponent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } double Ifc4x3_rc1::IfcLightSourceSpot::SpreadAngle() const { double v = *data_->getArgument(11); return v; } void Ifc4x3_rc1::IfcLightSourceSpot::setSpreadAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } double Ifc4x3_rc1::IfcLightSourceSpot::BeamWidthAngle() const { double v = *data_->getArgument(12); return v; } @@ -17686,7 +17686,7 @@ Ifc4x3_rc1::IfcLinearSpanPlacement::IfcLinearSpanPlacement(::Ifc4x3_rc1::IfcObje // Function implementations for IfcLiquidTerminal boost::optional< ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value > Ifc4x3_rc1::IfcLiquidTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcLiquidTerminal::declaration() const { return *IFC4X3_RC1_IfcLiquidTerminal_type; } @@ -17740,11 +17740,11 @@ void Ifc4x3_rc1::IfcMapConversion::setNorthings(double v) { {IfcWrite::IfcWriteA double Ifc4x3_rc1::IfcMapConversion::OrthogonalHeight() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc1::IfcMapConversion::setOrthogonalHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc1::IfcMapConversion::XAxisAbscissa() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcMapConversion::XAxisOrdinate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcMapConversion::Scale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMapConversion::declaration() const { return *IFC4X3_RC1_IfcMapConversion_type; } @@ -17778,9 +17778,9 @@ Ifc4x3_rc1::IfcMarineFacility::IfcMarineFacility(std::string v1_GlobalId, ::Ifc4 std::string Ifc4x3_rc1::IfcMaterial::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcMaterial::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterial::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterial::Category() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcMaterialDefinitionRepresentation::list::ptr Ifc4x3_rc1::IfcMaterial::HasRepresentation() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialDefinitionRepresentation_type, 3)->as(); } ::Ifc4x3_rc1::IfcMaterialRelationship::list::ptr Ifc4x3_rc1::IfcMaterial::IsRelatedWith() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialRelationship_type, 3)->as(); } @@ -17805,15 +17805,15 @@ Ifc4x3_rc1::IfcMaterialClassificationRelationship::IfcMaterialClassificationRela // Function implementations for IfcMaterialConstituent boost::optional< std::string > Ifc4x3_rc1::IfcMaterialConstituent::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialConstituent::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc1::IfcMaterial* Ifc4x3_rc1::IfcMaterialConstituent::Material() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcMaterial>(true); } void Ifc4x3_rc1::IfcMaterialConstituent::setMaterial(::Ifc4x3_rc1::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcMaterialConstituent::Fraction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialConstituent::Category() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc1::IfcMaterialConstituentSet::list::ptr Ifc4x3_rc1::IfcMaterialConstituent::ToMaterialConstituentSet() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialConstituentSet_type, 2)->as(); } @@ -17824,11 +17824,11 @@ Ifc4x3_rc1::IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std: // Function implementations for IfcMaterialConstituentSet boost::optional< std::string > Ifc4x3_rc1::IfcMaterialConstituentSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialConstituentSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcMaterialConstituent >::ptr > Ifc4x3_rc1::IfcMaterialConstituentSet::MaterialConstituents() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcMaterialConstituent >(); } -void Ifc4x3_rc1::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMaterialConstituentSet::declaration() const { return *IFC4X3_RC1_IfcMaterialConstituentSet_type; } @@ -17863,15 +17863,15 @@ void Ifc4x3_rc1::IfcMaterialLayer::setMaterial(::Ifc4x3_rc1::IfcMaterial* v) { { double Ifc4x3_rc1::IfcMaterialLayer::LayerThickness() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcMaterialLayer::setLayerThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< boost::logic::tribool > Ifc4x3_rc1::IfcMaterialLayer::IsVentilated() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } boost::logic::tribool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialLayer::Name() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialLayer::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialLayer::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x3_rc1::IfcMaterialLayer::Priority() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc1::IfcMaterialLayerSet::list::ptr Ifc4x3_rc1::IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialLayerSet_type, 0)->as(); } @@ -17884,9 +17884,9 @@ Ifc4x3_rc1::IfcMaterialLayer::IfcMaterialLayer(::Ifc4x3_rc1::IfcMaterial* v1_Mat aggregate_of< ::Ifc4x3_rc1::IfcMaterialLayer >::ptr Ifc4x3_rc1::IfcMaterialLayerSet::MaterialLayers() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcMaterialLayer >(); } void Ifc4x3_rc1::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc4x3_rc1::IfcMaterialLayer >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialLayerSet::LayerSetName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialLayerSet::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMaterialLayerSet::declaration() const { return *IFC4X3_RC1_IfcMaterialLayerSet_type; } @@ -17904,7 +17904,7 @@ void Ifc4x3_rc1::IfcMaterialLayerSetUsage::setDirectionSense(::Ifc4x3_rc1::IfcDi double Ifc4x3_rc1::IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMaterialLayerSetUsage::declaration() const { return *IFC4X3_RC1_IfcMaterialLayerSetUsage_type; } @@ -17936,17 +17936,17 @@ Ifc4x3_rc1::IfcMaterialList::IfcMaterialList(aggregate_of< ::Ifc4x3_rc1::IfcMate // Function implementations for IfcMaterialProfile boost::optional< std::string > Ifc4x3_rc1::IfcMaterialProfile::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialProfile::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc1::IfcMaterial* Ifc4x3_rc1::IfcMaterialProfile::Material() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcMaterial>(true); } void Ifc4x3_rc1::IfcMaterialProfile::setMaterial(::Ifc4x3_rc1::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcMaterialProfile::Profile() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcProfileDef>(true); } void Ifc4x3_rc1::IfcMaterialProfile::setProfile(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc1::IfcMaterialProfile::Priority() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialProfile::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcMaterialProfileSet::list::ptr Ifc4x3_rc1::IfcMaterialProfile::ToMaterialProfileSet() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialProfileSet_type, 2)->as(); } @@ -17957,9 +17957,9 @@ Ifc4x3_rc1::IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string // Function implementations for IfcMaterialProfileSet boost::optional< std::string > Ifc4x3_rc1::IfcMaterialProfileSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialProfileSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc1::IfcMaterialProfile >::ptr Ifc4x3_rc1::IfcMaterialProfileSet::MaterialProfiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcMaterialProfile >(); } void Ifc4x3_rc1::IfcMaterialProfileSet::setMaterialProfiles(aggregate_of< ::Ifc4x3_rc1::IfcMaterialProfile >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcCompositeProfileDef* Ifc4x3_rc1::IfcMaterialProfileSet::CompositeProfile() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcCompositeProfileDef>(true); } @@ -17975,9 +17975,9 @@ Ifc4x3_rc1::IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::s ::Ifc4x3_rc1::IfcMaterialProfileSet* Ifc4x3_rc1::IfcMaterialProfileSetUsage::ForProfileSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcMaterialProfileSet>(true); } void Ifc4x3_rc1::IfcMaterialProfileSetUsage::setForProfileSet(::Ifc4x3_rc1::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< int > Ifc4x3_rc1::IfcMaterialProfileSetUsage::CardinalPoint() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfileSetUsage::declaration() const { return *IFC4X3_RC1_IfcMaterialProfileSetUsage_type; } @@ -17989,7 +17989,7 @@ Ifc4x3_rc1::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4x3_rc1: ::Ifc4x3_rc1::IfcMaterialProfileSet* Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcMaterialProfileSet>(true); } void Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(::Ifc4x3_rc1::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::declaration() const { return *IFC4X3_RC1_IfcMaterialProfileSetUsageTapering_type; } @@ -18023,7 +18023,7 @@ void Ifc4x3_rc1::IfcMaterialRelationship::setRelatingMaterial(::Ifc4x3_rc1::IfcM aggregate_of< ::Ifc4x3_rc1::IfcMaterial >::ptr Ifc4x3_rc1::IfcMaterialRelationship::RelatedMaterials() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcMaterial >(); } void Ifc4x3_rc1::IfcMaterialRelationship::setRelatedMaterials(aggregate_of< ::Ifc4x3_rc1::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMaterialRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMaterialRelationship::declaration() const { return *IFC4X3_RC1_IfcMaterialRelationship_type; } @@ -18054,11 +18054,11 @@ Ifc4x3_rc1::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4x3_rc1::IfcValue* v1_Va // Function implementations for IfcMechanicalFastener boost::optional< double > Ifc4x3_rc1::IfcMechanicalFastener::NominalDiameter() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc1::IfcMechanicalFastener::NominalLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value > Ifc4x3_rc1::IfcMechanicalFastener::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMechanicalFastener::declaration() const { return *IFC4X3_RC1_IfcMechanicalFastener_type; } @@ -18070,9 +18070,9 @@ Ifc4x3_rc1::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value Ifc4x3_rc1::IfcMechanicalFastenerType::PredefinedType() const { return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc1::IfcMechanicalFastenerType::setPredefinedType(::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcMechanicalFastenerType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcMechanicalFastenerType::NominalLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMechanicalFastenerType::declaration() const { return *IFC4X3_RC1_IfcMechanicalFastenerType_type; } @@ -18082,7 +18082,7 @@ Ifc4x3_rc1::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_ // Function implementations for IfcMedicalDevice boost::optional< ::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Value > Ifc4x3_rc1::IfcMedicalDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMedicalDevice::declaration() const { return *IFC4X3_RC1_IfcMedicalDevice_type; } @@ -18102,7 +18102,7 @@ Ifc4x3_rc1::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, // Function implementations for IfcMember boost::optional< ::Ifc4x3_rc1::IfcMemberTypeEnum::Value > Ifc4x3_rc1::IfcMember::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMemberTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMemberTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMemberTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMember::declaration() const { return *IFC4X3_RC1_IfcMember_type; } @@ -18132,7 +18132,7 @@ Ifc4x3_rc1::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4x3_rc1:: ::Ifc4x3_rc1::IfcBenchmarkEnum::Value Ifc4x3_rc1::IfcMetric::Benchmark() const { return ::Ifc4x3_rc1::IfcBenchmarkEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc1::IfcMetric::setBenchmark(::Ifc4x3_rc1::IfcBenchmarkEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBenchmarkEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcMetric::ValueSource() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcMetricValueSelect* Ifc4x3_rc1::IfcMetric::DataValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcMetricValueSelect>(true); } void Ifc4x3_rc1::IfcMetric::setDataValue(::Ifc4x3_rc1::IfcMetricValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x3_rc1::IfcReference* Ifc4x3_rc1::IfcMetric::ReferencePath() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcReference>(true); } @@ -18154,7 +18154,7 @@ Ifc4x3_rc1::IfcMirroredProfileDef::IfcMirroredProfileDef(::Ifc4x3_rc1::IfcProfil // Function implementations for IfcMobileTelecommunicationsAppliance boost::optional< ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value > Ifc4x3_rc1::IfcMobileTelecommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMobileTelecommunicationsAppliance::declaration() const { return *IFC4X3_RC1_IfcMobileTelecommunicationsAppliance_type; } @@ -18184,7 +18184,7 @@ Ifc4x3_rc1::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil: // Function implementations for IfcMooringDevice boost::optional< ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value > Ifc4x3_rc1::IfcMooringDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMooringDevice::declaration() const { return *IFC4X3_RC1_IfcMooringDevice_type; } @@ -18204,7 +18204,7 @@ Ifc4x3_rc1::IfcMooringDeviceType::IfcMooringDeviceType(std::string v1_GlobalId, // Function implementations for IfcMotorConnection boost::optional< ::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Value > Ifc4x3_rc1::IfcMotorConnection::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcMotorConnection::declaration() const { return *IFC4X3_RC1_IfcMotorConnection_type; } @@ -18236,7 +18236,7 @@ Ifc4x3_rc1::IfcNamedUnit::IfcNamedUnit(::Ifc4x3_rc1::IfcDimensionalExponents* v1 // Function implementations for IfcNavigationElement boost::optional< ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value > Ifc4x3_rc1::IfcNavigationElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcNavigationElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcNavigationElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcNavigationElement::declaration() const { return *IFC4X3_RC1_IfcNavigationElement_type; } @@ -18256,7 +18256,7 @@ Ifc4x3_rc1::IfcNavigationElementType::IfcNavigationElementType(std::string v1_Gl // Function implementations for IfcObject boost::optional< std::string > Ifc4x3_rc1::IfcObject::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc1::IfcRelDefinesByObject::list::ptr Ifc4x3_rc1::IfcObject::IsDeclaredBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByObject_type, 4)->as(); } ::Ifc4x3_rc1::IfcRelDefinesByObject::list::ptr Ifc4x3_rc1::IfcObject::Declares() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByObject_type, 5)->as(); } @@ -18296,13 +18296,13 @@ Ifc4x3_rc1::IfcObjectPlacement::IfcObjectPlacement(::Ifc4x3_rc1::IfcObjectPlacem // Function implementations for IfcObjective boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcConstraint >::ptr > Ifc4x3_rc1::IfcObjective::BenchmarkValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcConstraint >(); } -void Ifc4x3_rc1::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc1::IfcLogicalOperatorEnum::Value > Ifc4x3_rc1::IfcObjective::LogicalAggregator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcLogicalOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_rc1::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLogicalOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_rc1::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLogicalOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcObjectiveEnum::Value Ifc4x3_rc1::IfcObjective::ObjectiveQualifier() const { return ::Ifc4x3_rc1::IfcObjectiveEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc1::IfcObjective::setObjectiveQualifier(::Ifc4x3_rc1::IfcObjectiveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcObjectiveEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcObjective::UserDefinedQualifier() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcObjective::declaration() const { return *IFC4X3_RC1_IfcObjective_type; } @@ -18312,7 +18312,7 @@ Ifc4x3_rc1::IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std // Function implementations for IfcOccupant boost::optional< ::Ifc4x3_rc1::IfcOccupantTypeEnum::Value > Ifc4x3_rc1::IfcOccupant::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcOccupantTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc1::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcOccupantTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcOccupantTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcOccupant::declaration() const { return *IFC4X3_RC1_IfcOccupant_type; } @@ -18360,7 +18360,7 @@ Ifc4x3_rc1::IfcOffsetCurve3D::IfcOffsetCurve3D(::Ifc4x3_rc1::IfcCurve* v1_BasisC aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr Ifc4x3_rc1::IfcOffsetCurveByDistances::OffsetValues() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcDistanceExpression >(); } void Ifc4x3_rc1::IfcOffsetCurveByDistances::setOffsetValues(aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcOffsetCurveByDistances::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcOffsetCurveByDistances::declaration() const { return *IFC4X3_RC1_IfcOffsetCurveByDistances_type; } @@ -18376,7 +18376,7 @@ void Ifc4x3_rc1::IfcOpenCrossProfileDef::setWidths(std::vector< double > /*[1:?] std::vector< double > /*[1:?]*/ Ifc4x3_rc1::IfcOpenCrossProfileDef::Slopes() const { std::vector< double > /*[1:?]*/ v = *data_->getArgument(4); return v; } void Ifc4x3_rc1::IfcOpenCrossProfileDef::setSlopes(std::vector< double > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[2:?]*/ > Ifc4x3_rc1::IfcOpenCrossProfileDef::Tags() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[2:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcOpenCrossProfileDef::declaration() const { return *IFC4X3_RC1_IfcOpenCrossProfileDef_type; } @@ -18394,7 +18394,7 @@ Ifc4x3_rc1::IfcOpenShell::IfcOpenShell(aggregate_of< ::Ifc4x3_rc1::IfcFace >::pt // Function implementations for IfcOpeningElement boost::optional< ::Ifc4x3_rc1::IfcOpeningElementTypeEnum::Value > Ifc4x3_rc1::IfcOpeningElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcOpeningElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcOpeningElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcOpeningElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcRelFillsElement::list::ptr Ifc4x3_rc1::IfcOpeningElement::HasFillings() const { return data_->getInverse(IFC4X3_RC1_IfcRelFillsElement_type, 4)->as(); } @@ -18413,15 +18413,15 @@ Ifc4x3_rc1::IfcOpeningStandardCase::IfcOpeningStandardCase(std::string v1_Global // Function implementations for IfcOrganization boost::optional< std::string > Ifc4x3_rc1::IfcOrganization::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } std::string Ifc4x3_rc1::IfcOrganization::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcOrganization::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcOrganization::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > Ifc4x3_rc1::IfcOrganization::Roles() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcActorRole >(); } -void Ifc4x3_rc1::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > Ifc4x3_rc1::IfcOrganization::Addresses() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcAddress >(); } -void Ifc4x3_rc1::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(4,attr);} } ::Ifc4x3_rc1::IfcOrganizationRelationship::list::ptr Ifc4x3_rc1::IfcOrganization::IsRelatedBy() const { return data_->getInverse(IFC4X3_RC1_IfcOrganizationRelationship_type, 3)->as(); } ::Ifc4x3_rc1::IfcOrganizationRelationship::list::ptr Ifc4x3_rc1::IfcOrganization::Relates() const { return data_->getInverse(IFC4X3_RC1_IfcOrganizationRelationship_type, 2)->as(); } @@ -18478,7 +18478,7 @@ Ifc4x3_rc1::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(aggregate_of< ::Ifc4x3_ // Function implementations for IfcOutlet boost::optional< ::Ifc4x3_rc1::IfcOutletTypeEnum::Value > Ifc4x3_rc1::IfcOutlet::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcOutletTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcOutletTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcOutletTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcOutlet::declaration() const { return *IFC4X3_RC1_IfcOutlet_type; } @@ -18502,11 +18502,11 @@ void Ifc4x3_rc1::IfcOwnerHistory::setOwningUser(::Ifc4x3_rc1::IfcPersonAndOrgani ::Ifc4x3_rc1::IfcApplication* Ifc4x3_rc1::IfcOwnerHistory::OwningApplication() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcApplication>(true); } void Ifc4x3_rc1::IfcOwnerHistory::setOwningApplication(::Ifc4x3_rc1::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > Ifc4x3_rc1::IfcOwnerHistory::State() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcStateEnum::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc1::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStateEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStateEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< ::Ifc4x3_rc1::IfcChangeActionEnum::Value > Ifc4x3_rc1::IfcOwnerHistory::ChangeAction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcChangeActionEnum::FromString(*data_->getArgument(3)); } -void Ifc4x3_rc1::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_rc1::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcChangeActionEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_rc1::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcChangeActionEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc1::IfcOwnerHistory::LastModifiedDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc1::IfcPersonAndOrganization* Ifc4x3_rc1::IfcOwnerHistory::LastModifyingUser() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcPersonAndOrganization>(true); } void Ifc4x3_rc1::IfcOwnerHistory::setLastModifyingUser(::Ifc4x3_rc1::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcApplication* Ifc4x3_rc1::IfcOwnerHistory::LastModifyingApplication() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcApplication>(true); } @@ -18542,7 +18542,7 @@ Ifc4x3_rc1::IfcPath::IfcPath(aggregate_of< ::Ifc4x3_rc1::IfcOrientedEdge >::ptr // Function implementations for IfcPavement boost::optional< bool > Ifc4x3_rc1::IfcPavement::Flexible() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } bool v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcPavement::setFlexible(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcPavement::setFlexible(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPavement::declaration() const { return *IFC4X3_RC1_IfcPavement_type; } @@ -18576,7 +18576,7 @@ Ifc4x3_rc1::IfcPcurve::IfcPcurve(::Ifc4x3_rc1::IfcSurface* v1_BasisSurface, ::If std::string Ifc4x3_rc1::IfcPerformanceHistory::LifeCyclePhase() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x3_rc1::IfcPerformanceHistory::setLifeCyclePhase(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::Value > Ifc4x3_rc1::IfcPerformanceHistory::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc1::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPerformanceHistory::declaration() const { return *IFC4X3_RC1_IfcPerformanceHistory_type; } @@ -18590,9 +18590,9 @@ void Ifc4x3_rc1::IfcPermeableCoveringProperties::setOperationType(::Ifc4x3_rc1:: ::Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value Ifc4x3_rc1::IfcPermeableCoveringProperties::PanelPosition() const { return ::Ifc4x3_rc1::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc1::IfcPermeableCoveringProperties::setPanelPosition(::Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcPermeableCoveringProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcPermeableCoveringProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcShapeAspect* Ifc4x3_rc1::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcShapeAspect>(true); } void Ifc4x3_rc1::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc4x3_rc1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -18604,11 +18604,11 @@ Ifc4x3_rc1::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std:: // Function implementations for IfcPermit boost::optional< ::Ifc4x3_rc1::IfcPermitTypeEnum::Value > Ifc4x3_rc1::IfcPermit::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPermitTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc1::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPermitTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPermitTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPermit::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPermit::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPermit::declaration() const { return *IFC4X3_RC1_IfcPermit_type; } @@ -18618,21 +18618,21 @@ Ifc4x3_rc1::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwner // Function implementations for IfcPerson boost::optional< std::string > Ifc4x3_rc1::IfcPerson::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPerson::FamilyName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPerson::GivenName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcPerson::MiddleNames() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcPerson::PrefixTitles() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcPerson::SuffixTitles() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > Ifc4x3_rc1::IfcPerson::Roles() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc1::IfcActorRole >(); } -void Ifc4x3_rc1::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > Ifc4x3_rc1::IfcPerson::Addresses() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcAddress >(); } -void Ifc4x3_rc1::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcPersonAndOrganization::list::ptr Ifc4x3_rc1::IfcPerson::EngagedIn() const { return data_->getInverse(IFC4X3_RC1_IfcPersonAndOrganization_type, 0)->as(); } @@ -18647,7 +18647,7 @@ void Ifc4x3_rc1::IfcPersonAndOrganization::setThePerson(::Ifc4x3_rc1::IfcPerson* ::Ifc4x3_rc1::IfcOrganization* Ifc4x3_rc1::IfcPersonAndOrganization::TheOrganization() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcOrganization>(true); } void Ifc4x3_rc1::IfcPersonAndOrganization::setTheOrganization(::Ifc4x3_rc1::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > Ifc4x3_rc1::IfcPersonAndOrganization::Roles() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcActorRole >(); } -void Ifc4x3_rc1::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPersonAndOrganization::declaration() const { return *IFC4X3_RC1_IfcPersonAndOrganization_type; } @@ -18661,9 +18661,9 @@ void Ifc4x3_rc1::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::If std::string Ifc4x3_rc1::IfcPhysicalComplexQuantity::Discrimination() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPhysicalComplexQuantity::Quality() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPhysicalComplexQuantity::Usage() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPhysicalComplexQuantity::declaration() const { return *IFC4X3_RC1_IfcPhysicalComplexQuantity_type; } @@ -18675,7 +18675,7 @@ Ifc4x3_rc1::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v std::string Ifc4x3_rc1::IfcPhysicalQuantity::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcPhysicalQuantity::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPhysicalQuantity::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcPhysicalQuantity::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc1::IfcPhysicalComplexQuantity::list::ptr Ifc4x3_rc1::IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(IFC4X3_RC1_IfcPhysicalComplexQuantity_type, 2)->as(); } @@ -18697,9 +18697,9 @@ Ifc4x3_rc1::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_ // Function implementations for IfcPile boost::optional< ::Ifc4x3_rc1::IfcPileTypeEnum::Value > Ifc4x3_rc1::IfcPile::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPileTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPileTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPileTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc1::IfcPileConstructionEnum::Value > Ifc4x3_rc1::IfcPile::ConstructionType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPileConstructionEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc1::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_rc1::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPileConstructionEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_rc1::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPileConstructionEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPile::declaration() const { return *IFC4X3_RC1_IfcPile_type; } @@ -18719,7 +18719,7 @@ Ifc4x3_rc1::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcPipeFitting boost::optional< ::Ifc4x3_rc1::IfcPipeFittingTypeEnum::Value > Ifc4x3_rc1::IfcPipeFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPipeFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPipeFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPipeFitting::declaration() const { return *IFC4X3_RC1_IfcPipeFitting_type; } @@ -18739,7 +18739,7 @@ Ifc4x3_rc1::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcPipeSegment boost::optional< ::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Value > Ifc4x3_rc1::IfcPipeSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPipeSegment::declaration() const { return *IFC4X3_RC1_IfcPipeSegment_type; } @@ -18823,7 +18823,7 @@ Ifc4x3_rc1::IfcPlant::IfcPlant(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHi // Function implementations for IfcPlate boost::optional< ::Ifc4x3_rc1::IfcPlateTypeEnum::Value > Ifc4x3_rc1::IfcPlate::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPlateTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPlateTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPlateTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPlate::declaration() const { return *IFC4X3_RC1_IfcPlate_type; } @@ -18907,11 +18907,11 @@ Ifc4x3_rc1::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4x3_ // Function implementations for IfcPolygonalFaceSet boost::optional< bool > Ifc4x3_rc1::IfcPolygonalFaceSet::Closed() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc1::IfcIndexedPolygonalFace >::ptr Ifc4x3_rc1::IfcPolygonalFaceSet::Faces() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcIndexedPolygonalFace >(); } void Ifc4x3_rc1::IfcPolygonalFaceSet::setFaces(aggregate_of< ::Ifc4x3_rc1::IfcIndexedPolygonalFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcPolygonalFaceSet::PnIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPolygonalFaceSet::declaration() const { return *IFC4X3_RC1_IfcPolygonalFaceSet_type; } @@ -18952,19 +18952,19 @@ Ifc4x3_rc1::IfcPositioningElement::IfcPositioningElement(std::string v1_GlobalId // Function implementations for IfcPostalAddress boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::InternalLocation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcPostalAddress::AddressLines() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::PostalBox() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::Town() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::Region() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::PostalCode() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::Country() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPostalAddress::declaration() const { return *IFC4X3_RC1_IfcPostalAddress_type; } @@ -19034,11 +19034,11 @@ Ifc4x3_rc1::IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity( std::string Ifc4x3_rc1::IfcPresentationLayerAssignment::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcPresentationLayerAssignment::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPresentationLayerAssignment::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of_instance::ptr Ifc4x3_rc1::IfcPresentationLayerAssignment::AssignedItems() const { aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } void Ifc4x3_rc1::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPresentationLayerAssignment::Identifier() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPresentationLayerAssignment::declaration() const { return *IFC4X3_RC1_IfcPresentationLayerAssignment_type; } @@ -19064,7 +19064,7 @@ Ifc4x3_rc1::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::st // Function implementations for IfcPresentationStyle boost::optional< std::string > Ifc4x3_rc1::IfcPresentationStyle::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPresentationStyle::declaration() const { return *IFC4X3_RC1_IfcPresentationStyle_type; } @@ -19084,7 +19084,7 @@ Ifc4x3_rc1::IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(aggre // Function implementations for IfcProcedure boost::optional< ::Ifc4x3_rc1::IfcProcedureTypeEnum::Value > Ifc4x3_rc1::IfcProcedure::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProcedureTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc1::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProcedureTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProcedureTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcProcedure::declaration() const { return *IFC4X3_RC1_IfcProcedure_type; } @@ -19104,9 +19104,9 @@ Ifc4x3_rc1::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4x3 // Function implementations for IfcProcess boost::optional< std::string > Ifc4x3_rc1::IfcProcess::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcProcess::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc1::IfcRelSequence::list::ptr Ifc4x3_rc1::IfcProcess::IsPredecessorTo() const { return data_->getInverse(IFC4X3_RC1_IfcRelSequence_type, 4)->as(); } ::Ifc4x3_rc1::IfcRelSequence::list::ptr Ifc4x3_rc1::IfcProcess::IsSuccessorFrom() const { return data_->getInverse(IFC4X3_RC1_IfcRelSequence_type, 5)->as(); } @@ -19144,9 +19144,9 @@ Ifc4x3_rc1::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional // Function implementations for IfcProductRepresentation boost::optional< std::string > Ifc4x3_rc1::IfcProductRepresentation::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcProductRepresentation::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc1::IfcRepresentation >::ptr Ifc4x3_rc1::IfcProductRepresentation::Representations() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcRepresentation >(); } void Ifc4x3_rc1::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc4x3_rc1::IfcRepresentation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -19160,7 +19160,7 @@ Ifc4x3_rc1::IfcProductRepresentation::IfcProductRepresentation(boost::optional< ::Ifc4x3_rc1::IfcProfileTypeEnum::Value Ifc4x3_rc1::IfcProfileDef::ProfileType() const { return ::Ifc4x3_rc1::IfcProfileTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc1::IfcProfileDef::setProfileType(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcProfileDef::ProfileName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcProfileDef::HasExternalReference() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc1::IfcProfileProperties::list::ptr Ifc4x3_rc1::IfcProfileDef::HasProperties() const { return data_->getInverse(IFC4X3_RC1_IfcProfileProperties_type, 3)->as(); } @@ -19198,11 +19198,11 @@ Ifc4x3_rc1::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcProjectOrder boost::optional< ::Ifc4x3_rc1::IfcProjectOrderTypeEnum::Value > Ifc4x3_rc1::IfcProjectOrder::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc1::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectOrderTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectOrderTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcProjectOrder::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcProjectOrder::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcProjectOrder::declaration() const { return *IFC4X3_RC1_IfcProjectOrder_type; } @@ -19212,9 +19212,9 @@ Ifc4x3_rc1::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcProjectedCRS boost::optional< std::string > Ifc4x3_rc1::IfcProjectedCRS::MapProjection() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcProjectedCRS::MapZone() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcNamedUnit* Ifc4x3_rc1::IfcProjectedCRS::MapUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcNamedUnit>(true); } void Ifc4x3_rc1::IfcProjectedCRS::setMapUnit(::Ifc4x3_rc1::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -19226,7 +19226,7 @@ Ifc4x3_rc1::IfcProjectedCRS::IfcProjectedCRS(std::string v1_Name, boost::optiona // Function implementations for IfcProjectionElement boost::optional< ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::Value > Ifc4x3_rc1::IfcProjectionElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectionElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectionElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcProjectionElement::declaration() const { return *IFC4X3_RC1_IfcProjectionElement_type; } @@ -19238,7 +19238,7 @@ Ifc4x3_rc1::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, std::string Ifc4x3_rc1::IfcProperty::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcProperty::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcProperty::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc1::IfcPropertySet::list::ptr Ifc4x3_rc1::IfcProperty::PartOfPset() const { return data_->getInverse(IFC4X3_RC1_IfcPropertySet_type, 4)->as(); } ::Ifc4x3_rc1::IfcPropertyDependencyRelationship::list::ptr Ifc4x3_rc1::IfcProperty::PropertyForDependance() const { return data_->getInverse(IFC4X3_RC1_IfcPropertyDependencyRelationship_type, 2)->as(); } @@ -19293,7 +19293,7 @@ void Ifc4x3_rc1::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc4x ::Ifc4x3_rc1::IfcProperty* Ifc4x3_rc1::IfcPropertyDependencyRelationship::DependantProperty() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcProperty>(true); } void Ifc4x3_rc1::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc4x3_rc1::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPropertyDependencyRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPropertyDependencyRelationship::declaration() const { return *IFC4X3_RC1_IfcPropertyDependencyRelationship_type; } @@ -19303,7 +19303,7 @@ Ifc4x3_rc1::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship // Function implementations for IfcPropertyEnumeratedValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcPropertyEnumeratedValue::EnumerationValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcPropertyEnumeration* Ifc4x3_rc1::IfcPropertyEnumeratedValue::EnumerationReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcPropertyEnumeration>(true); } void Ifc4x3_rc1::IfcPropertyEnumeratedValue::setEnumerationReference(::Ifc4x3_rc1::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19329,7 +19329,7 @@ Ifc4x3_rc1::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, // Function implementations for IfcPropertyListValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcPropertyListValue::ListValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcPropertyListValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcUnit>(true); } void Ifc4x3_rc1::IfcPropertyListValue::setUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19341,7 +19341,7 @@ Ifc4x3_rc1::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boos // Function implementations for IfcPropertyReferenceValue boost::optional< std::string > Ifc4x3_rc1::IfcPropertyReferenceValue::UsageName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcObjectReferenceSelect* Ifc4x3_rc1::IfcPropertyReferenceValue::PropertyReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcObjectReferenceSelect>(true); } void Ifc4x3_rc1::IfcPropertyReferenceValue::setPropertyReference(::Ifc4x3_rc1::IfcObjectReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19374,9 +19374,9 @@ Ifc4x3_rc1::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_Gl // Function implementations for IfcPropertySetTemplate boost::optional< ::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::Value > Ifc4x3_rc1::IfcPropertySetTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x3_rc1::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPropertySetTemplate::ApplicableEntity() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr Ifc4x3_rc1::IfcPropertySetTemplate::HasPropertyTemplates() const { aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc1::IfcPropertyTemplate >(); } void Ifc4x3_rc1::IfcPropertySetTemplate::setHasPropertyTemplates(aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(6,attr);} } @@ -19401,17 +19401,17 @@ Ifc4x3_rc1::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, // Function implementations for IfcPropertyTableValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcPropertyTableValue::DefiningValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcPropertyTableValue::DefinedValues() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcPropertyTableValue::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcPropertyTableValue::DefiningUnit() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcUnit>(true); } void Ifc4x3_rc1::IfcPropertyTableValue::setDefiningUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcPropertyTableValue::DefinedUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcUnit>(true); } void Ifc4x3_rc1::IfcPropertyTableValue::setDefinedUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc1::IfcCurveInterpolationEnum::Value > Ifc4x3_rc1::IfcPropertyTableValue::CurveInterpolation() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCurveInterpolationEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc1::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_rc1::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCurveInterpolationEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_rc1::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCurveInterpolationEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPropertyTableValue::declaration() const { return *IFC4X3_RC1_IfcPropertyTableValue_type; } @@ -19439,7 +19439,7 @@ Ifc4x3_rc1::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::st // Function implementations for IfcProtectiveDevice boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Value > Ifc4x3_rc1::IfcProtectiveDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcProtectiveDevice::declaration() const { return *IFC4X3_RC1_IfcProtectiveDevice_type; } @@ -19449,7 +19449,7 @@ Ifc4x3_rc1::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, :: // Function implementations for IfcProtectiveDeviceTrippingUnit boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnit::declaration() const { return *IFC4X3_RC1_IfcProtectiveDeviceTrippingUnit_type; } @@ -19481,7 +19481,7 @@ Ifc4x3_rc1::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_Glob ::Ifc4x3_rc1::IfcObjectTypeEnum::Value Ifc4x3_rc1::IfcProxy::ProxyType() const { return ::Ifc4x3_rc1::IfcObjectTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc1::IfcProxy::setProxyType(::Ifc4x3_rc1::IfcObjectTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcProxy::Tag() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcProxy::declaration() const { return *IFC4X3_RC1_IfcProxy_type; } @@ -19491,7 +19491,7 @@ Ifc4x3_rc1::IfcProxy::IfcProxy(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHi // Function implementations for IfcPump boost::optional< ::Ifc4x3_rc1::IfcPumpTypeEnum::Value > Ifc4x3_rc1::IfcPump::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPumpTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPumpTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPumpTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcPump::declaration() const { return *IFC4X3_RC1_IfcPump_type; } @@ -19513,7 +19513,7 @@ Ifc4x3_rc1::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO double Ifc4x3_rc1::IfcQuantityArea::AreaValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcQuantityArea::setAreaValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcQuantityArea::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcQuantityArea::declaration() const { return *IFC4X3_RC1_IfcQuantityArea_type; } @@ -19525,7 +19525,7 @@ Ifc4x3_rc1::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optiona double Ifc4x3_rc1::IfcQuantityCount::CountValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcQuantityCount::setCountValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcQuantityCount::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcQuantityCount::declaration() const { return *IFC4X3_RC1_IfcQuantityCount_type; } @@ -19537,7 +19537,7 @@ Ifc4x3_rc1::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optio double Ifc4x3_rc1::IfcQuantityLength::LengthValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcQuantityLength::setLengthValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcQuantityLength::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcQuantityLength::declaration() const { return *IFC4X3_RC1_IfcQuantityLength_type; } @@ -19557,7 +19557,7 @@ Ifc4x3_rc1::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4x3_rc1 double Ifc4x3_rc1::IfcQuantityTime::TimeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcQuantityTime::setTimeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcQuantityTime::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcQuantityTime::declaration() const { return *IFC4X3_RC1_IfcQuantityTime_type; } @@ -19569,7 +19569,7 @@ Ifc4x3_rc1::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optiona double Ifc4x3_rc1::IfcQuantityVolume::VolumeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcQuantityVolume::setVolumeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcQuantityVolume::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcQuantityVolume::declaration() const { return *IFC4X3_RC1_IfcQuantityVolume_type; } @@ -19581,7 +19581,7 @@ Ifc4x3_rc1::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::opt double Ifc4x3_rc1::IfcQuantityWeight::WeightValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcQuantityWeight::setWeightValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcQuantityWeight::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcQuantityWeight::declaration() const { return *IFC4X3_RC1_IfcQuantityWeight_type; } @@ -19591,7 +19591,7 @@ Ifc4x3_rc1::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::opt // Function implementations for IfcRail boost::optional< ::Ifc4x3_rc1::IfcRailTypeEnum::Value > Ifc4x3_rc1::IfcRail::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcRailTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRailTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRailTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRailTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRailTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRail::declaration() const { return *IFC4X3_RC1_IfcRail_type; } @@ -19611,7 +19611,7 @@ Ifc4x3_rc1::IfcRailType::IfcRailType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcRailing boost::optional< ::Ifc4x3_rc1::IfcRailingTypeEnum::Value > Ifc4x3_rc1::IfcRailing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcRailingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRailingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRailingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRailing::declaration() const { return *IFC4X3_RC1_IfcRailing_type; } @@ -19639,7 +19639,7 @@ Ifc4x3_rc1::IfcRailway::IfcRailway(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwn // Function implementations for IfcRamp boost::optional< ::Ifc4x3_rc1::IfcRampTypeEnum::Value > Ifc4x3_rc1::IfcRamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcRampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRamp::declaration() const { return *IFC4X3_RC1_IfcRamp_type; } @@ -19649,7 +19649,7 @@ Ifc4x3_rc1::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHist // Function implementations for IfcRampFlight boost::optional< ::Ifc4x3_rc1::IfcRampFlightTypeEnum::Value > Ifc4x3_rc1::IfcRampFlight::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcRampFlightTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRampFlightTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRampFlightTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRampFlight::declaration() const { return *IFC4X3_RC1_IfcRampFlight_type; } @@ -19701,9 +19701,9 @@ Ifc4x3_rc1::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKno double Ifc4x3_rc1::IfcRectangleHollowProfileDef::WallThickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x3_rc1::IfcRectangleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRectangleHollowProfileDef::declaration() const { return *IFC4X3_RC1_IfcRectangleHollowProfileDef_type; } @@ -19763,19 +19763,19 @@ Ifc4x3_rc1::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4x3_ ::Ifc4x3_rc1::IfcRecurrenceTypeEnum::Value Ifc4x3_rc1::IfcRecurrencePattern::RecurrenceType() const { return ::Ifc4x3_rc1::IfcRecurrenceTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc1::IfcRecurrencePattern::setRecurrenceType(::Ifc4x3_rc1::IfcRecurrenceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcRecurrenceTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcRecurrencePattern::DayComponent() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcRecurrencePattern::WeekdayComponent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcRecurrencePattern::MonthComponent() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc1::IfcRecurrencePattern::Position() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< int > Ifc4x3_rc1::IfcRecurrencePattern::Interval() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } int v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x3_rc1::IfcRecurrencePattern::Occurrences() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTimePeriod >::ptr > Ifc4x3_rc1::IfcRecurrencePattern::TimePeriods() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcTimePeriod >(); } -void Ifc4x3_rc1::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRecurrencePattern::declaration() const { return *IFC4X3_RC1_IfcRecurrencePattern_type; } @@ -19785,13 +19785,13 @@ Ifc4x3_rc1::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4x3_rc1::IfcRecurren // Function implementations for IfcReference boost::optional< std::string > Ifc4x3_rc1::IfcReference::TypeIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcReference::AttributeIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcReference::InstanceName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcReference::ListPositions() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc1::IfcReference* Ifc4x3_rc1::IfcReference::InnerReference() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcReference>(true); } void Ifc4x3_rc1::IfcReference::setInnerReference(::Ifc4x3_rc1::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -19803,9 +19803,9 @@ Ifc4x3_rc1::IfcReference::IfcReference(boost::optional< std::string > v1_TypeIde // Function implementations for IfcReferent boost::optional< ::Ifc4x3_rc1::IfcReferentTypeEnum::Value > Ifc4x3_rc1::IfcReferent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReferentTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc1::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReferentTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReferentTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReferent::RestartDistance() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcReferent::declaration() const { return *IFC4X3_RC1_IfcReferent_type; } @@ -19827,7 +19827,7 @@ Ifc4x3_rc1::IfcRegularTimeSeries::IfcRegularTimeSeries(std::string v1_Name, boos // Function implementations for IfcReinforcedSoil boost::optional< ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::Value > Ifc4x3_rc1::IfcReinforcedSoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcReinforcedSoil::declaration() const { return *IFC4X3_RC1_IfcReinforcedSoil_type; } @@ -19841,13 +19841,13 @@ void Ifc4x3_rc1::IfcReinforcementBarProperties::setTotalCrossSectionArea(double std::string Ifc4x3_rc1::IfcReinforcementBarProperties::SteelGrade() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcReinforcementBarProperties::setSteelGrade(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc1::IfcReinforcementBarProperties::BarSurface() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc1::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcementBarProperties::EffectiveDepth() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcementBarProperties::NominalBarDiameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcementBarProperties::BarCount() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcReinforcementBarProperties::declaration() const { return *IFC4X3_RC1_IfcReinforcementBarProperties_type; } @@ -19857,7 +19857,7 @@ Ifc4x3_rc1::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double // Function implementations for IfcReinforcementDefinitionProperties boost::optional< std::string > Ifc4x3_rc1::IfcReinforcementDefinitionProperties::DefinitionType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x3_rc1::IfcSectionReinforcementProperties >::ptr Ifc4x3_rc1::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcSectionReinforcementProperties >(); } void Ifc4x3_rc1::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc4x3_rc1::IfcSectionReinforcementProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -19869,15 +19869,15 @@ Ifc4x3_rc1::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProp // Function implementations for IfcReinforcingBar boost::optional< double > Ifc4x3_rc1::IfcReinforcingBar::NominalDiameter() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingBar::CrossSectionArea() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingBar::BarLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value > Ifc4x3_rc1::IfcReinforcingBar::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc1::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc1::IfcReinforcingBar::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc1::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingBar::declaration() const { return *IFC4X3_RC1_IfcReinforcingBar_type; } @@ -19889,17 +19889,17 @@ Ifc4x3_rc1::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4 ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value Ifc4x3_rc1::IfcReinforcingBarType::PredefinedType() const { return ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc1::IfcReinforcingBarType::setPredefinedType(::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingBarType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingBarType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingBarType::BarLength() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc1::IfcReinforcingBarType::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc1::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcReinforcingBarType::BendingShapeCode() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc1::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc1::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcReinforcingBarType::BendingParameters() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(15); return v; } -void Ifc4x3_rc1::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc1::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingBarType::declaration() const { return *IFC4X3_RC1_IfcReinforcingBarType_type; } @@ -19909,7 +19909,7 @@ Ifc4x3_rc1::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId // Function implementations for IfcReinforcingElement boost::optional< std::string > Ifc4x3_rc1::IfcReinforcingElement::SteelGrade() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingElement::declaration() const { return *IFC4X3_RC1_IfcReinforcingElement_type; } @@ -19927,23 +19927,23 @@ Ifc4x3_rc1::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_ // Function implementations for IfcReinforcingMesh boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::MeshLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::MeshWidth() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc1::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc1::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc1::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc1::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc1::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::TransverseBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc1::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc1::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value > Ifc4x3_rc1::IfcReinforcingMesh::PredefinedType() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(17)); } -void Ifc4x3_rc1::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::ToString(*v)));data_->setArgument(17,attr);} } +void Ifc4x3_rc1::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::ToString(*v)));}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingMesh::declaration() const { return *IFC4X3_RC1_IfcReinforcingMesh_type; } @@ -19955,25 +19955,25 @@ Ifc4x3_rc1::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::If ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value Ifc4x3_rc1::IfcReinforcingMeshType::PredefinedType() const { return ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc1::IfcReinforcingMeshType::setPredefinedType(::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::MeshLength() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::MeshWidth() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc1::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc1::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc1::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc1::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc1::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc1::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc1::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::TransverseBarSpacing() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x3_rc1::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc1::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcReinforcingMeshType::BendingShapeCode() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x3_rc1::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x3_rc1::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcReinforcingMeshType::BendingParameters() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(19); return v; } -void Ifc4x3_rc1::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x3_rc1::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingMeshType::declaration() const { return *IFC4X3_RC1_IfcReinforcingMeshType_type; } @@ -19997,7 +19997,7 @@ Ifc4x3_rc1::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4x3 aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr Ifc4x3_rc1::IfcRelAssigns::RelatedObjects() const { aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcObjectDefinition >(); } void Ifc4x3_rc1::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} } boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > Ifc4x3_rc1::IfcRelAssigns::RelatedObjectsType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcObjectTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc1::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRelAssigns::declaration() const { return *IFC4X3_RC1_IfcRelAssigns_type; } @@ -20111,7 +20111,7 @@ Ifc4x3_rc1::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std:: // Function implementations for IfcRelAssociatesConstraint boost::optional< std::string > Ifc4x3_rc1::IfcRelAssociatesConstraint::Intent() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcConstraint* Ifc4x3_rc1::IfcRelAssociatesConstraint::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcConstraint>(true); } void Ifc4x3_rc1::IfcRelAssociatesConstraint::setRelatingConstraint(::Ifc4x3_rc1::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -20247,7 +20247,7 @@ void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc4x3_rc ::Ifc4x3_rc1::IfcStructuralConnectionCondition* Ifc4x3_rc1::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcStructuralConnectionCondition>(true); } void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc4x3_rc1::IfcStructuralConnectionCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcRelConnectsStructuralMember::SupportedLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(true); } void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -20271,7 +20271,7 @@ Ifc4x3_rc1::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std:: aggregate_of< ::Ifc4x3_rc1::IfcElement >::ptr Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::RealizingElements() const { aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcElement >(); } void Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc4x3_rc1::IfcElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::declaration() const { return *IFC4X3_RC1_IfcRelConnectsWithRealizingElements_type; } @@ -20423,7 +20423,7 @@ void Ifc4x3_rc1::IfcRelInterferesElements::setRelatedElement(::Ifc4x3_rc1::IfcIn ::Ifc4x3_rc1::IfcConnectionGeometry* Ifc4x3_rc1::IfcRelInterferesElements::InterferenceGeometry() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcConnectionGeometry>(true); } void Ifc4x3_rc1::IfcRelInterferesElements::setInterferenceGeometry(::Ifc4x3_rc1::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcRelInterferesElements::InterferenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::logic::tribool Ifc4x3_rc1::IfcRelInterferesElements::ImpliedOrder() const { boost::logic::tribool v = *data_->getArgument(8); return v; } void Ifc4x3_rc1::IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -20489,9 +20489,9 @@ void Ifc4x3_rc1::IfcRelSequence::setRelatedProcess(::Ifc4x3_rc1::IfcProcess* v) ::Ifc4x3_rc1::IfcLagTime* Ifc4x3_rc1::IfcRelSequence::TimeLag() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcLagTime>(true); } void Ifc4x3_rc1::IfcRelSequence::setTimeLag(::Ifc4x3_rc1::IfcLagTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc1::IfcSequenceEnum::Value > Ifc4x3_rc1::IfcRelSequence::SequenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSequenceEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc1::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_rc1::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSequenceEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_rc1::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSequenceEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcRelSequence::UserDefinedSequenceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRelSequence::declaration() const { return *IFC4X3_RC1_IfcRelSequence_type; } @@ -20585,9 +20585,9 @@ Ifc4x3_rc1::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCu ::Ifc4x3_rc1::IfcRepresentationContext* Ifc4x3_rc1::IfcRepresentation::ContextOfItems() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcRepresentationContext>(true); } void Ifc4x3_rc1::IfcRepresentation::setContextOfItems(::Ifc4x3_rc1::IfcRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcRepresentation::RepresentationIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcRepresentation::RepresentationType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } aggregate_of< ::Ifc4x3_rc1::IfcRepresentationItem >::ptr Ifc4x3_rc1::IfcRepresentation::Items() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcRepresentationItem >(); } void Ifc4x3_rc1::IfcRepresentation::setItems(aggregate_of< ::Ifc4x3_rc1::IfcRepresentationItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } @@ -20602,9 +20602,9 @@ Ifc4x3_rc1::IfcRepresentation::IfcRepresentation(::Ifc4x3_rc1::IfcRepresentation // Function implementations for IfcRepresentationContext boost::optional< std::string > Ifc4x3_rc1::IfcRepresentationContext::ContextIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcRepresentationContext::ContextType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc1::IfcRepresentation::list::ptr Ifc4x3_rc1::IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(IFC4X3_RC1_IfcRepresentation_type, 0)->as(); } @@ -20639,9 +20639,9 @@ Ifc4x3_rc1::IfcRepresentationMap::IfcRepresentationMap(::Ifc4x3_rc1::IfcAxis2Pla // Function implementations for IfcResource boost::optional< std::string > Ifc4x3_rc1::IfcResource::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResource::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc1::IfcRelAssignsToResource::list::ptr Ifc4x3_rc1::IfcResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToResource_type, 6)->as(); } @@ -20676,9 +20676,9 @@ Ifc4x3_rc1::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship // Function implementations for IfcResourceLevelRelationship boost::optional< std::string > Ifc4x3_rc1::IfcResourceLevelRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResourceLevelRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcResourceLevelRelationship::declaration() const { return *IFC4X3_RC1_IfcResourceLevelRelationship_type; } @@ -20688,35 +20688,35 @@ Ifc4x3_rc1::IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::op // Function implementations for IfcResourceTime boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ScheduleWork() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcResourceTime::ScheduleUsage() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ScheduleContour() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::LevelingDelay() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcResourceTime::IsOverAllocated() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::StatusTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ActualWork() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc1::IfcResourceTime::ActualUsage() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ActualStart() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x3_rc1::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ActualFinish() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc1::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::RemainingWork() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x3_rc1::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc1::IfcResourceTime::RemainingUsage() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc1::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x3_rc1::IfcResourceTime::Completion() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x3_rc1::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc1::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcResourceTime::declaration() const { return *IFC4X3_RC1_IfcResourceTime_type; } @@ -20780,7 +20780,7 @@ Ifc4x3_rc1::IfcRoad::IfcRoad(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHist // Function implementations for IfcRoof boost::optional< ::Ifc4x3_rc1::IfcRoofTypeEnum::Value > Ifc4x3_rc1::IfcRoof::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcRoofTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRoofTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRoofTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRoof::declaration() const { return *IFC4X3_RC1_IfcRoof_type; } @@ -20804,9 +20804,9 @@ void Ifc4x3_rc1::IfcRoot::setGlobalId(std::string v) { {IfcWrite::IfcWriteArgume ::Ifc4x3_rc1::IfcOwnerHistory* Ifc4x3_rc1::IfcRoot::OwnerHistory() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcOwnerHistory>(true); } void Ifc4x3_rc1::IfcRoot::setOwnerHistory(::Ifc4x3_rc1::IfcOwnerHistory* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcRoot::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcRoot::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcRoot::declaration() const { return *IFC4X3_RC1_IfcRoot_type; } @@ -20826,7 +20826,7 @@ Ifc4x3_rc1::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4x // Function implementations for IfcSIUnit boost::optional< ::Ifc4x3_rc1::IfcSIPrefix::Value > Ifc4x3_rc1::IfcSIUnit::Prefix() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSIPrefix::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc1::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_rc1::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSIPrefix::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_rc1::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSIPrefix::ToString(*v)));}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcSIUnitName::Value Ifc4x3_rc1::IfcSIUnit::Name() const { return ::Ifc4x3_rc1::IfcSIUnitName::FromString(*data_->getArgument(3)); } void Ifc4x3_rc1::IfcSIUnit::setName(::Ifc4x3_rc1::IfcSIUnitName::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSIUnitName::ToString(v)));data_->setArgument(3,attr);} } @@ -20838,7 +20838,7 @@ Ifc4x3_rc1::IfcSIUnit::IfcSIUnit(::Ifc4x3_rc1::IfcUnitEnum::Value v2_UnitType, b // Function implementations for IfcSanitaryTerminal boost::optional< ::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Value > Ifc4x3_rc1::IfcSanitaryTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSanitaryTerminal::declaration() const { return *IFC4X3_RC1_IfcSanitaryTerminal_type; } @@ -20858,11 +20858,11 @@ Ifc4x3_rc1::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_Glob // Function implementations for IfcSchedulingTime boost::optional< std::string > Ifc4x3_rc1::IfcSchedulingTime::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > Ifc4x3_rc1::IfcSchedulingTime::DataOrigin() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDataOriginEnum::FromString(*data_->getArgument(1)); } -void Ifc4x3_rc1::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(*v)));data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(*v)));}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcSchedulingTime::UserDefinedDataOrigin() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSchedulingTime::declaration() const { return *IFC4X3_RC1_IfcSchedulingTime_type; } @@ -20898,7 +20898,7 @@ void Ifc4x3_rc1::IfcSectionReinforcementProperties::setLongitudinalStartPosition double Ifc4x3_rc1::IfcSectionReinforcementProperties::LongitudinalEndPosition() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSectionReinforcementProperties::TransversePosition() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcReinforcingBarRoleEnum::Value Ifc4x3_rc1::IfcSectionReinforcementProperties::ReinforcementRole() const { return ::Ifc4x3_rc1::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); } void Ifc4x3_rc1::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc4x3_rc1::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(3,attr);} } ::Ifc4x3_rc1::IfcSectionProperties* Ifc4x3_rc1::IfcSectionReinforcementProperties::SectionDefinition() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcSectionProperties>(true); } @@ -20968,7 +20968,7 @@ Ifc4x3_rc1::IfcSectionedSurface::IfcSectionedSurface(::Ifc4x3_rc1::IfcCurve* v1_ // Function implementations for IfcSensor boost::optional< ::Ifc4x3_rc1::IfcSensorTypeEnum::Value > Ifc4x3_rc1::IfcSensor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSensorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSensorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSensorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSensor::declaration() const { return *IFC4X3_RC1_IfcSensor_type; } @@ -20988,7 +20988,7 @@ Ifc4x3_rc1::IfcSensorType::IfcSensorType(std::string v1_GlobalId, ::Ifc4x3_rc1:: // Function implementations for IfcShadingDevice boost::optional< ::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Value > Ifc4x3_rc1::IfcShadingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcShadingDevice::declaration() const { return *IFC4X3_RC1_IfcShadingDevice_type; } @@ -21010,9 +21010,9 @@ Ifc4x3_rc1::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, aggregate_of< ::Ifc4x3_rc1::IfcShapeModel >::ptr Ifc4x3_rc1::IfcShapeAspect::ShapeRepresentations() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcShapeModel >(); } void Ifc4x3_rc1::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc4x3_rc1::IfcShapeModel >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcShapeAspect::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcShapeAspect::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::logic::tribool Ifc4x3_rc1::IfcShapeAspect::ProductDefinitional() const { boost::logic::tribool v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc1::IfcProductRepresentationSelect* Ifc4x3_rc1::IfcShapeAspect::PartOfProductDefinitionShape() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcProductRepresentationSelect>(true); } @@ -21054,7 +21054,7 @@ Ifc4x3_rc1::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(aggregate_of_in // Function implementations for IfcSign boost::optional< ::Ifc4x3_rc1::IfcSignTypeEnum::Value > Ifc4x3_rc1::IfcSign::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSignTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSignTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSignTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSignTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSignTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSign::declaration() const { return *IFC4X3_RC1_IfcSign_type; } @@ -21074,7 +21074,7 @@ Ifc4x3_rc1::IfcSignType::IfcSignType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcSignal boost::optional< ::Ifc4x3_rc1::IfcSignalTypeEnum::Value > Ifc4x3_rc1::IfcSignal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSignalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSignalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSignalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSignalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSignalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSignal::declaration() const { return *IFC4X3_RC1_IfcSignal_type; } @@ -21102,11 +21102,11 @@ Ifc4x3_rc1::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::opt // Function implementations for IfcSimplePropertyTemplate boost::optional< ::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4x3_rc1::IfcSimplePropertyTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x3_rc1::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc1::IfcPropertyEnumeration* Ifc4x3_rc1::IfcSimplePropertyTemplate::Enumerators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcPropertyEnumeration>(true); } void Ifc4x3_rc1::IfcSimplePropertyTemplate::setEnumerators(::Ifc4x3_rc1::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcSimplePropertyTemplate::PrimaryUnit() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcUnit>(true); } @@ -21114,9 +21114,9 @@ void Ifc4x3_rc1::IfcSimplePropertyTemplate::setPrimaryUnit(::Ifc4x3_rc1::IfcUnit ::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcSimplePropertyTemplate::SecondaryUnit() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcUnit>(true); } void Ifc4x3_rc1::IfcSimplePropertyTemplate::setSecondaryUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcSimplePropertyTemplate::Expression() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > Ifc4x3_rc1::IfcSimplePropertyTemplate::AccessState() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcStateEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc1::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStateEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStateEnum::ToString(*v)));}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSimplePropertyTemplate::declaration() const { return *IFC4X3_RC1_IfcSimplePropertyTemplate_type; } @@ -21126,13 +21126,13 @@ Ifc4x3_rc1::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_ // Function implementations for IfcSite boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc1::IfcSite::RefLatitude() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc1::IfcSite::RefLongitude() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSite::RefElevation() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcSite::LandTitleNumber() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x3_rc1::IfcPostalAddress* Ifc4x3_rc1::IfcSite::SiteAddress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc1::IfcPostalAddress>(true); } void Ifc4x3_rc1::IfcSite::setSiteAddress(::Ifc4x3_rc1::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -21144,7 +21144,7 @@ Ifc4x3_rc1::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHist // Function implementations for IfcSlab boost::optional< ::Ifc4x3_rc1::IfcSlabTypeEnum::Value > Ifc4x3_rc1::IfcSlab::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSlabTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSlabTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSlabTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSlab::declaration() const { return *IFC4X3_RC1_IfcSlab_type; } @@ -21180,11 +21180,11 @@ Ifc4x3_rc1::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcSlippageConnectionCondition boost::optional< double > Ifc4x3_rc1::IfcSlippageConnectionCondition::SlippageX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSlippageConnectionCondition::SlippageY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSlippageConnectionCondition::SlippageZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSlippageConnectionCondition::declaration() const { return *IFC4X3_RC1_IfcSlippageConnectionCondition_type; } @@ -21194,7 +21194,7 @@ Ifc4x3_rc1::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost // Function implementations for IfcSolarDevice boost::optional< ::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Value > Ifc4x3_rc1::IfcSolarDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSolarDevice::declaration() const { return *IFC4X3_RC1_IfcSolarDevice_type; } @@ -21230,9 +21230,9 @@ Ifc4x3_rc1::IfcSolidStratum::IfcSolidStratum(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcSpace boost::optional< ::Ifc4x3_rc1::IfcSpaceTypeEnum::Value > Ifc4x3_rc1::IfcSpace::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc1::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSpaceTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSpaceTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSpace::ElevationWithFlooring() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc1::IfcRelCoversSpaces::list::ptr Ifc4x3_rc1::IfcSpace::HasCoverings() const { return data_->getInverse(IFC4X3_RC1_IfcRelCoversSpaces_type, 4)->as(); } ::Ifc4x3_rc1::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc1::IfcSpace::BoundedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelSpaceBoundary_type, 4)->as(); } @@ -21244,7 +21244,7 @@ Ifc4x3_rc1::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHi // Function implementations for IfcSpaceHeater boost::optional< ::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Value > Ifc4x3_rc1::IfcSpaceHeater::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSpaceHeater::declaration() const { return *IFC4X3_RC1_IfcSpaceHeater_type; } @@ -21266,7 +21266,7 @@ Ifc4x3_rc1::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::If ::Ifc4x3_rc1::IfcSpaceTypeEnum::Value Ifc4x3_rc1::IfcSpaceType::PredefinedType() const { return ::Ifc4x3_rc1::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc1::IfcSpaceType::setPredefinedType(::Ifc4x3_rc1::IfcSpaceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSpaceTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcSpaceType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSpaceType::declaration() const { return *IFC4X3_RC1_IfcSpaceType_type; } @@ -21276,7 +21276,7 @@ Ifc4x3_rc1::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4x3_rc1::If // Function implementations for IfcSpatialElement boost::optional< std::string > Ifc4x3_rc1::IfcSpatialElement::LongName() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc1::IfcSpatialElement::ContainsElements() const { return data_->getInverse(IFC4X3_RC1_IfcRelContainedInSpatialStructure_type, 5)->as(); } ::Ifc4x3_rc1::IfcRelServicesBuildings::list::ptr Ifc4x3_rc1::IfcSpatialElement::ServicedBySystems() const { return data_->getInverse(IFC4X3_RC1_IfcRelServicesBuildings_type, 5)->as(); } @@ -21289,7 +21289,7 @@ Ifc4x3_rc1::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcSpatialElementType boost::optional< std::string > Ifc4x3_rc1::IfcSpatialElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSpatialElementType::declaration() const { return *IFC4X3_RC1_IfcSpatialElementType_type; } @@ -21299,7 +21299,7 @@ Ifc4x3_rc1::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId // Function implementations for IfcSpatialStructureElement boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > Ifc4x3_rc1::IfcSpatialStructureElement::CompositionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSpatialStructureElement::declaration() const { return *IFC4X3_RC1_IfcSpatialStructureElement_type; } @@ -21317,7 +21317,7 @@ Ifc4x3_rc1::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std:: // Function implementations for IfcSpatialZone boost::optional< ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value > Ifc4x3_rc1::IfcSpatialZone::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSpatialZone::declaration() const { return *IFC4X3_RC1_IfcSpatialZone_type; } @@ -21329,7 +21329,7 @@ Ifc4x3_rc1::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4x3_rc1 ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value Ifc4x3_rc1::IfcSpatialZoneType::PredefinedType() const { return ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc1::IfcSpatialZoneType::setPredefinedType(::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcSpatialZoneType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSpatialZoneType::declaration() const { return *IFC4X3_RC1_IfcSpatialZoneType_type; } @@ -21359,7 +21359,7 @@ Ifc4x3_rc1::IfcSphericalSurface::IfcSphericalSurface(::Ifc4x3_rc1::IfcAxis2Place // Function implementations for IfcStackTerminal boost::optional< ::Ifc4x3_rc1::IfcStackTerminalTypeEnum::Value > Ifc4x3_rc1::IfcStackTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStackTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStackTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStackTerminal::declaration() const { return *IFC4X3_RC1_IfcStackTerminal_type; } @@ -21379,7 +21379,7 @@ Ifc4x3_rc1::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, // Function implementations for IfcStair boost::optional< ::Ifc4x3_rc1::IfcStairTypeEnum::Value > Ifc4x3_rc1::IfcStair::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcStairTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStairTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStairTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStair::declaration() const { return *IFC4X3_RC1_IfcStair_type; } @@ -21389,15 +21389,15 @@ Ifc4x3_rc1::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHi // Function implementations for IfcStairFlight boost::optional< int > Ifc4x3_rc1::IfcStairFlight::NumberOfRisers() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } int v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< int > Ifc4x3_rc1::IfcStairFlight::NumberOfTreads() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStairFlight::RiserHeight() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStairFlight::TreadLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc1::IfcStairFlightTypeEnum::Value > Ifc4x3_rc1::IfcStairFlight::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcStairFlightTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc1::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStairFlightTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStairFlightTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStairFlight::declaration() const { return *IFC4X3_RC1_IfcStairFlight_type; } @@ -21427,7 +21427,7 @@ Ifc4x3_rc1::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4x3_rc1::If // Function implementations for IfcStructuralAction boost::optional< bool > Ifc4x3_rc1::IfcStructuralAction::DestabilizingLoad() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralAction::declaration() const { return *IFC4X3_RC1_IfcStructuralAction_type; } @@ -21454,9 +21454,9 @@ void Ifc4x3_rc1::IfcStructuralAnalysisModel::setPredefinedType(::Ifc4x3_rc1::Ifc ::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(true); } void Ifc4x3_rc1::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadGroup >::ptr > Ifc4x3_rc1::IfcStructuralAnalysisModel::LoadedBy() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcStructuralLoadGroup >(); } -void Ifc4x3_rc1::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralResultGroup >::ptr > Ifc4x3_rc1::IfcStructuralAnalysisModel::HasResults() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc1::IfcStructuralResultGroup >(); } -void Ifc4x3_rc1::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcObjectPlacement* Ifc4x3_rc1::IfcStructuralAnalysisModel::SharedPlacement() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcObjectPlacement>(true); } void Ifc4x3_rc1::IfcStructuralAnalysisModel::setSharedPlacement(::Ifc4x3_rc1::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -21479,7 +21479,7 @@ Ifc4x3_rc1::IfcStructuralConnection::IfcStructuralConnection(std::string v1_Glob // Function implementations for IfcStructuralConnectionCondition boost::optional< std::string > Ifc4x3_rc1::IfcStructuralConnectionCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralConnectionCondition::declaration() const { return *IFC4X3_RC1_IfcStructuralConnectionCondition_type; } @@ -21489,7 +21489,7 @@ Ifc4x3_rc1::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(b // Function implementations for IfcStructuralCurveAction boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc1::IfcStructuralCurveAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_rc1::IfcStructuralCurveAction::PredefinedType() const { return ::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x3_rc1::IfcStructuralCurveAction::setPredefinedType(::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -21558,7 +21558,7 @@ Ifc4x3_rc1::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_ // Function implementations for IfcStructuralLoad boost::optional< std::string > Ifc4x3_rc1::IfcStructuralLoad::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoad::declaration() const { return *IFC4X3_RC1_IfcStructuralLoad_type; } @@ -21568,7 +21568,7 @@ Ifc4x3_rc1::IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > // Function implementations for IfcStructuralLoadCase boost::optional< std::vector< double > /*[3:3]*/ > Ifc4x3_rc1::IfcStructuralLoadCase::SelfWeightCoefficients() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< double > /*[3:3]*/ v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadCase::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadCase_type; } @@ -21580,7 +21580,7 @@ Ifc4x3_rc1::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadOrResult >::ptr Ifc4x3_rc1::IfcStructuralLoadConfiguration::Values() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcStructuralLoadOrResult >(); } void Ifc4x3_rc1::IfcStructuralLoadConfiguration::setValues(aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadOrResult >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::vector< std::vector< double > > > Ifc4x3_rc1::IfcStructuralLoadConfiguration::Locations() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadConfiguration::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadConfiguration_type; } @@ -21596,9 +21596,9 @@ void Ifc4x3_rc1::IfcStructuralLoadGroup::setActionType(::Ifc4x3_rc1::IfcActionTy ::Ifc4x3_rc1::IfcActionSourceTypeEnum::Value Ifc4x3_rc1::IfcStructuralLoadGroup::ActionSource() const { return ::Ifc4x3_rc1::IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc1::IfcStructuralLoadGroup::setActionSource(::Ifc4x3_rc1::IfcActionSourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcActionSourceTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadGroup::Coefficient() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcStructuralLoadGroup::Purpose() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x3_rc1::IfcStructuralResultGroup::list::ptr Ifc4x3_rc1::IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(IFC4X3_RC1_IfcStructuralResultGroup_type, 6)->as(); } ::Ifc4x3_rc1::IfcStructuralAnalysisModel::list::ptr Ifc4x3_rc1::IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(IFC4X3_RC1_IfcStructuralAnalysisModel_type, 7)->as(); } @@ -21610,17 +21610,17 @@ Ifc4x3_rc1::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_Global // Function implementations for IfcStructuralLoadLinearForce boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearMomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearMomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadLinearForce::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadLinearForce_type; } @@ -21638,11 +21638,11 @@ Ifc4x3_rc1::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional // Function implementations for IfcStructuralLoadPlanarForce boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadPlanarForce::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadPlanarForce_type; } @@ -21652,17 +21652,17 @@ Ifc4x3_rc1::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::op // Function implementations for IfcStructuralLoadSingleDisplacement boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadSingleDisplacement_type; } @@ -21672,7 +21672,7 @@ Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplace // Function implementations for IfcStructuralLoadSingleDisplacementDistortion boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadSingleDisplacementDistortion_type; } @@ -21682,17 +21682,17 @@ Ifc4x3_rc1::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSing // Function implementations for IfcStructuralLoadSingleForce boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::ForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::ForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::ForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::MomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::MomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::MomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleForce::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadSingleForce_type; } @@ -21702,7 +21702,7 @@ Ifc4x3_rc1::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::op // Function implementations for IfcStructuralLoadSingleForceWarping boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleForceWarping::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadSingleForceWarping_type; } @@ -21720,11 +21720,11 @@ Ifc4x3_rc1::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< st // Function implementations for IfcStructuralLoadTemperature boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadTemperature::DeltaTConstant() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadTemperature::DeltaTY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadTemperature::DeltaTZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadTemperature::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadTemperature_type; } @@ -21800,7 +21800,7 @@ Ifc4x3_rc1::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_Gl // Function implementations for IfcStructuralSurfaceAction boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc1::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_rc1::IfcStructuralSurfaceAction::PredefinedType() const { return ::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x3_rc1::IfcStructuralSurfaceAction::setPredefinedType(::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -21822,7 +21822,7 @@ Ifc4x3_rc1::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std:: ::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4x3_rc1::IfcStructuralSurfaceMember::PredefinedType() const { return ::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc1::IfcStructuralSurfaceMember::setPredefinedType(::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcStructuralSurfaceMember::Thickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceMember::declaration() const { return *IFC4X3_RC1_IfcStructuralSurfaceMember_type; } @@ -21862,7 +21862,7 @@ void Ifc4x3_rc1::IfcStyledItem::setItem(::Ifc4x3_rc1::IfcRepresentationItem* v) aggregate_of_instance::ptr Ifc4x3_rc1::IfcStyledItem::Styles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcStyledItem::setStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcStyledItem::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcStyledItem::declaration() const { return *IFC4X3_RC1_IfcStyledItem_type; } @@ -21880,7 +21880,7 @@ Ifc4x3_rc1::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4x3_rc1::IfcRe // Function implementations for IfcSubContractResource boost::optional< ::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Value > Ifc4x3_rc1::IfcSubContractResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSubContractResource::declaration() const { return *IFC4X3_RC1_IfcSubContractResource_type; } @@ -21942,7 +21942,7 @@ Ifc4x3_rc1::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4x // Function implementations for IfcSurfaceFeature boost::optional< ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::Value > Ifc4x3_rc1::IfcSurfaceFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceFeature::declaration() const { return *IFC4X3_RC1_IfcSurfaceFeature_type; } @@ -21974,11 +21974,11 @@ Ifc4x3_rc1::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4x3_rc1::IfcProf // Function implementations for IfcSurfaceReinforcementArea boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc1::IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc1::IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceReinforcementArea::declaration() const { return *IFC4X3_RC1_IfcSurfaceReinforcementArea_type; } @@ -22016,9 +22016,9 @@ Ifc4x3_rc1::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4x3_rc1::IfcCo // Function implementations for IfcSurfaceStyleRefraction boost::optional< double > Ifc4x3_rc1::IfcSurfaceStyleRefraction::RefractionIndex() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSurfaceStyleRefraction::DispersionFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleRefraction::declaration() const { return *IFC4X3_RC1_IfcSurfaceStyleRefraction_type; } @@ -22052,7 +22052,7 @@ Ifc4x3_rc1::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4x3_rc1::Ifc ::Ifc4x3_rc1::IfcColourRgb* Ifc4x3_rc1::IfcSurfaceStyleShading::SurfaceColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcColourRgb>(true); } void Ifc4x3_rc1::IfcSurfaceStyleShading::setSurfaceColour(::Ifc4x3_rc1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSurfaceStyleShading::Transparency() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleShading::declaration() const { return *IFC4X3_RC1_IfcSurfaceStyleShading_type; } @@ -22076,11 +22076,11 @@ void Ifc4x3_rc1::IfcSurfaceTexture::setRepeatS(bool v) { {IfcWrite::IfcWriteArgu bool Ifc4x3_rc1::IfcSurfaceTexture::RepeatT() const { bool v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcSurfaceTexture::setRepeatT(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcSurfaceTexture::Mode() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* Ifc4x3_rc1::IfcSurfaceTexture::TextureTransform() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcCartesianTransformationOperator2D>(true); } void Ifc4x3_rc1::IfcSurfaceTexture::setTextureTransform(::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcSurfaceTexture::Parameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc1::IfcTextureCoordinate::list::ptr Ifc4x3_rc1::IfcSurfaceTexture::IsMappedBy() const { return data_->getInverse(IFC4X3_RC1_IfcTextureCoordinate_type, 0)->as(); } ::Ifc4x3_rc1::IfcSurfaceStyleWithTextures::list::ptr Ifc4x3_rc1::IfcSurfaceTexture::UsedInStyles() const { return data_->getInverse(IFC4X3_RC1_IfcSurfaceStyleWithTextures_type, 0)->as(); } @@ -22108,11 +22108,11 @@ void Ifc4x3_rc1::IfcSweptDiskSolid::setDirectrix(::Ifc4x3_rc1::IfcCurve* v) { {I double Ifc4x3_rc1::IfcSweptDiskSolid::Radius() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcSweptDiskSolid::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSweptDiskSolid::InnerRadius() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSweptDiskSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcSweptDiskSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSweptDiskSolid::declaration() const { return *IFC4X3_RC1_IfcSweptDiskSolid_type; } @@ -22122,7 +22122,7 @@ Ifc4x3_rc1::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4x3_rc1::IfcCurve* v1_Dire // Function implementations for IfcSweptDiskSolidPolygonal boost::optional< double > Ifc4x3_rc1::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSweptDiskSolidPolygonal::declaration() const { return *IFC4X3_RC1_IfcSweptDiskSolidPolygonal_type; } @@ -22144,7 +22144,7 @@ Ifc4x3_rc1::IfcSweptSurface::IfcSweptSurface(::Ifc4x3_rc1::IfcProfileDef* v1_Swe // Function implementations for IfcSwitchingDevice boost::optional< ::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Value > Ifc4x3_rc1::IfcSwitchingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSwitchingDevice::declaration() const { return *IFC4X3_RC1_IfcSwitchingDevice_type; } @@ -22174,7 +22174,7 @@ Ifc4x3_rc1::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwner // Function implementations for IfcSystemFurnitureElement boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc1::IfcSystemFurnitureElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSystemFurnitureElement::declaration() const { return *IFC4X3_RC1_IfcSystemFurnitureElement_type; } @@ -22184,7 +22184,7 @@ Ifc4x3_rc1::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_ // Function implementations for IfcSystemFurnitureElementType boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc1::IfcSystemFurnitureElementType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc1::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcSystemFurnitureElementType::declaration() const { return *IFC4X3_RC1_IfcSystemFurnitureElementType_type; } @@ -22202,15 +22202,15 @@ void Ifc4x3_rc1::IfcTShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc1::IfcTShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc1::IfcTShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTShapeProfileDef::WebEdgeRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTShapeProfileDef::WebSlope() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcTShapeProfileDef_type; } @@ -22220,11 +22220,11 @@ Ifc4x3_rc1::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4x3_rc1::IfcProfileTyp // Function implementations for IfcTable boost::optional< std::string > Ifc4x3_rc1::IfcTable::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableRow >::ptr > Ifc4x3_rc1::IfcTable::Rows() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcTableRow >(); } -void Ifc4x3_rc1::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableColumn >::ptr > Ifc4x3_rc1::IfcTable::Columns() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcTableColumn >(); } -void Ifc4x3_rc1::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTable::declaration() const { return *IFC4X3_RC1_IfcTable_type; } @@ -22234,11 +22234,11 @@ Ifc4x3_rc1::IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::op // Function implementations for IfcTableColumn boost::optional< std::string > Ifc4x3_rc1::IfcTableColumn::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTableColumn::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTableColumn::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcTableColumn::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcUnit>(true); } void Ifc4x3_rc1::IfcTableColumn::setUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc1::IfcReference* Ifc4x3_rc1::IfcTableColumn::ReferencePath() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcReference>(true); } @@ -22252,9 +22252,9 @@ Ifc4x3_rc1::IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Ide // Function implementations for IfcTableRow boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcTableRow::RowCells() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(0); return v; } -void Ifc4x3_rc1::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc1::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcTableRow::IsHeading() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTableRow::declaration() const { return *IFC4X3_RC1_IfcTableRow_type; } @@ -22264,7 +22264,7 @@ Ifc4x3_rc1::IfcTableRow::IfcTableRow(boost::optional< aggregate_of_instance::ptr // Function implementations for IfcTank boost::optional< ::Ifc4x3_rc1::IfcTankTypeEnum::Value > Ifc4x3_rc1::IfcTank::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTankTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTankTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTankTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTank::declaration() const { return *IFC4X3_RC1_IfcTank_type; } @@ -22284,17 +22284,17 @@ Ifc4x3_rc1::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcTask boost::optional< std::string > Ifc4x3_rc1::IfcTask::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTask::WorkMethod() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } bool Ifc4x3_rc1::IfcTask::IsMilestone() const { bool v = *data_->getArgument(9); return v; } void Ifc4x3_rc1::IfcTask::setIsMilestone(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< int > Ifc4x3_rc1::IfcTask::Priority() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } int v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc1::IfcTaskTime* Ifc4x3_rc1::IfcTask::TaskTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc1::IfcTaskTime>(true); } void Ifc4x3_rc1::IfcTask::setTaskTime(::Ifc4x3_rc1::IfcTaskTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc1::IfcTaskTypeEnum::Value > Ifc4x3_rc1::IfcTask::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTaskTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc1::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTaskTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTaskTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTask::declaration() const { return *IFC4X3_RC1_IfcTask_type; } @@ -22304,39 +22304,39 @@ Ifc4x3_rc1::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHist // Function implementations for IfcTaskTime boost::optional< ::Ifc4x3_rc1::IfcTaskDurationEnum::Value > Ifc4x3_rc1::IfcTaskTime::DurationType() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTaskDurationEnum::FromString(*data_->getArgument(3)); } -void Ifc4x3_rc1::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_rc1::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTaskDurationEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_rc1::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTaskDurationEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ScheduleDuration() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::EarlyStart() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::EarlyFinish() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::LateStart() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::LateFinish() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::FreeFloat() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::TotalFloat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcTaskTime::IsCritical() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } bool v = *data_->getArgument(13); return v; } -void Ifc4x3_rc1::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::StatusTime() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc1::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ActualDuration() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x3_rc1::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ActualStart() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } std::string v = *data_->getArgument(16); return v; } -void Ifc4x3_rc1::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ActualFinish() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } std::string v = *data_->getArgument(17); return v; } -void Ifc4x3_rc1::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::RemainingTime() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x3_rc1::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTaskTime::Completion() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } double v = *data_->getArgument(19); return v; } -void Ifc4x3_rc1::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x3_rc1::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTaskTime::declaration() const { return *IFC4X3_RC1_IfcTaskTime_type; } @@ -22358,7 +22358,7 @@ Ifc4x3_rc1::IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::str ::Ifc4x3_rc1::IfcTaskTypeEnum::Value Ifc4x3_rc1::IfcTaskType::PredefinedType() const { return ::Ifc4x3_rc1::IfcTaskTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc1::IfcTaskType::setPredefinedType(::Ifc4x3_rc1::IfcTaskTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTaskTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTaskType::WorkMethod() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTaskType::declaration() const { return *IFC4X3_RC1_IfcTaskType_type; } @@ -22368,17 +22368,17 @@ Ifc4x3_rc1::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcTelecomAddress boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcTelecomAddress::TelephoneNumbers() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcTelecomAddress::FacsimileNumbers() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTelecomAddress::PagerNumber() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcTelecomAddress::ElectronicMailAddresses() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTelecomAddress::WWWHomePageURL() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcTelecomAddress::MessagingIDs() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTelecomAddress::declaration() const { return *IFC4X3_RC1_IfcTelecomAddress_type; } @@ -22388,21 +22388,21 @@ Ifc4x3_rc1::IfcTelecomAddress::IfcTelecomAddress(boost::optional< ::Ifc4x3_rc1:: // Function implementations for IfcTendon boost::optional< ::Ifc4x3_rc1::IfcTendonTypeEnum::Value > Ifc4x3_rc1::IfcTendon::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc1::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTendonTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTendonTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTendon::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTendon::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTendon::TensionForce() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTendon::PreStress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc1::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTendon::FrictionCoefficient() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc1::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc1::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTendon::AnchorageSlip() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc1::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc1::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTendon::MinCurvatureRadius() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc1::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc1::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTendon::declaration() const { return *IFC4X3_RC1_IfcTendon_type; } @@ -22412,7 +22412,7 @@ Ifc4x3_rc1::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwner // Function implementations for IfcTendonAnchor boost::optional< ::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Value > Ifc4x3_rc1::IfcTendonAnchor::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc1::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTendonAnchor::declaration() const { return *IFC4X3_RC1_IfcTendonAnchor_type; } @@ -22454,11 +22454,11 @@ Ifc4x3_rc1::IfcTendonConduitType::IfcTendonConduitType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcTendonTypeEnum::Value Ifc4x3_rc1::IfcTendonType::PredefinedType() const { return ::Ifc4x3_rc1::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc1::IfcTendonType::setPredefinedType(::Ifc4x3_rc1::IfcTendonTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTendonTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTendonType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTendonType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTendonType::SheathDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTendonType::declaration() const { return *IFC4X3_RC1_IfcTendonType_type; } @@ -22520,7 +22520,7 @@ void Ifc4x3_rc1::IfcTextStyle::setTextStyle(::Ifc4x3_rc1::IfcTextStyleTextModel* ::Ifc4x3_rc1::IfcTextFontSelect* Ifc4x3_rc1::IfcTextStyle::TextFontStyle() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcTextFontSelect>(true); } void Ifc4x3_rc1::IfcTextStyle::setTextFontStyle(::Ifc4x3_rc1::IfcTextFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcTextStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTextStyle::declaration() const { return *IFC4X3_RC1_IfcTextStyle_type; } @@ -22532,11 +22532,11 @@ Ifc4x3_rc1::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, : std::vector< std::string > /*[1:?]*/ Ifc4x3_rc1::IfcTextStyleFontModel::FontFamily() const { std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleFontModel::FontStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleFontModel::FontVariant() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleFontModel::FontWeight() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcTextStyleFontModel::FontSize() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcSizeSelect>(true); } void Ifc4x3_rc1::IfcTextStyleFontModel::setFontSize(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -22562,15 +22562,15 @@ Ifc4x3_rc1::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4x3_rc1: ::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcTextStyleTextModel::TextIndent() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcSizeSelect>(true); } void Ifc4x3_rc1::IfcTextStyleTextModel::setTextIndent(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleTextModel::TextAlign() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleTextModel::TextDecoration() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcTextStyleTextModel::LetterSpacing() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcSizeSelect>(true); } void Ifc4x3_rc1::IfcTextStyleTextModel::setLetterSpacing(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcTextStyleTextModel::WordSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcSizeSelect>(true); } void Ifc4x3_rc1::IfcTextStyleTextModel::setWordSpacing(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleTextModel::TextTransform() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcTextStyleTextModel::LineHeight() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcSizeSelect>(true); } void Ifc4x3_rc1::IfcTextStyleTextModel::setLineHeight(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -22594,7 +22594,7 @@ Ifc4x3_rc1::IfcTextureCoordinate::IfcTextureCoordinate(aggregate_of< ::Ifc4x3_rc std::string Ifc4x3_rc1::IfcTextureCoordinateGenerator::Mode() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc1::IfcTextureCoordinateGenerator::setMode(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[1:?]*/ > Ifc4x3_rc1::IfcTextureCoordinateGenerator::Parameter() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTextureCoordinateGenerator::declaration() const { return *IFC4X3_RC1_IfcTextureCoordinateGenerator_type; } @@ -22650,7 +22650,7 @@ Ifc4x3_rc1::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v std::string Ifc4x3_rc1::IfcTimeSeries::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc1::IfcTimeSeries::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTimeSeries::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } std::string Ifc4x3_rc1::IfcTimeSeries::StartTime() const { std::string v = *data_->getArgument(2); return v; } void Ifc4x3_rc1::IfcTimeSeries::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::string Ifc4x3_rc1::IfcTimeSeries::EndTime() const { std::string v = *data_->getArgument(3); return v; } @@ -22660,7 +22660,7 @@ void Ifc4x3_rc1::IfcTimeSeries::setTimeSeriesDataType(::Ifc4x3_rc1::IfcTimeSerie ::Ifc4x3_rc1::IfcDataOriginEnum::Value Ifc4x3_rc1::IfcTimeSeries::DataOrigin() const { return ::Ifc4x3_rc1::IfcDataOriginEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc1::IfcTimeSeries::setDataOrigin(::Ifc4x3_rc1::IfcDataOriginEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTimeSeries::UserDefinedDataOrigin() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcTimeSeries::Unit() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcUnit>(true); } void Ifc4x3_rc1::IfcTimeSeries::setUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } @@ -22711,7 +22711,7 @@ Ifc4x3_rc1::IfcToroidalSurface::IfcToroidalSurface(::Ifc4x3_rc1::IfcAxis2Placeme // Function implementations for IfcTrackElement boost::optional< ::Ifc4x3_rc1::IfcTrackElementTypeEnum::Value > Ifc4x3_rc1::IfcTrackElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTrackElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTrackElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTrackElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTrackElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTrackElement::declaration() const { return *IFC4X3_RC1_IfcTrackElement_type; } @@ -22731,7 +22731,7 @@ Ifc4x3_rc1::IfcTrackElementType::IfcTrackElementType(std::string v1_GlobalId, :: // Function implementations for IfcTransformer boost::optional< ::Ifc4x3_rc1::IfcTransformerTypeEnum::Value > Ifc4x3_rc1::IfcTransformer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTransformerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTransformerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTransformerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTransformer::declaration() const { return *IFC4X3_RC1_IfcTransformer_type; } @@ -22751,9 +22751,9 @@ Ifc4x3_rc1::IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, ::If // Function implementations for IfcTransitionCurveSegment2D boost::optional< double > Ifc4x3_rc1::IfcTransitionCurveSegment2D::StartRadius() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc1::IfcTransitionCurveSegment2D::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc1::IfcTransitionCurveSegment2D::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc1::IfcTransitionCurveSegment2D::EndRadius() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcTransitionCurveSegment2D::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcTransitionCurveSegment2D::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } bool Ifc4x3_rc1::IfcTransitionCurveSegment2D::IsStartRadiusCCW() const { bool v = *data_->getArgument(5); return v; } void Ifc4x3_rc1::IfcTransitionCurveSegment2D::setIsStartRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } bool Ifc4x3_rc1::IfcTransitionCurveSegment2D::IsEndRadiusCCW() const { bool v = *data_->getArgument(6); return v; } @@ -22805,13 +22805,13 @@ Ifc4x3_rc1::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4x3_rc1::IfcProf // Function implementations for IfcTriangulatedFaceSet boost::optional< std::vector< std::vector< double > > > Ifc4x3_rc1::IfcTriangulatedFaceSet::Normals() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(1); return v; } -void Ifc4x3_rc1::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc1::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcTriangulatedFaceSet::Closed() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc1::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc1::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::vector< std::vector< int > > Ifc4x3_rc1::IfcTriangulatedFaceSet::CoordIndex() const { std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } void Ifc4x3_rc1::IfcTriangulatedFaceSet::setCoordIndex(std::vector< std::vector< int > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcTriangulatedFaceSet::PnIndex() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTriangulatedFaceSet::declaration() const { return *IFC4X3_RC1_IfcTriangulatedFaceSet_type; } @@ -22849,7 +22849,7 @@ Ifc4x3_rc1::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4x3_rc1::IfcCurve* v1_BasisCur // Function implementations for IfcTubeBundle boost::optional< ::Ifc4x3_rc1::IfcTubeBundleTypeEnum::Value > Ifc4x3_rc1::IfcTubeBundle::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTubeBundleTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTubeBundleTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcTubeBundle::declaration() const { return *IFC4X3_RC1_IfcTubeBundle_type; } @@ -22869,9 +22869,9 @@ Ifc4x3_rc1::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcTypeObject boost::optional< std::string > Ifc4x3_rc1::IfcTypeObject::ApplicableOccurrence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > Ifc4x3_rc1::IfcTypeObject::HasPropertySets() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcPropertySetDefinition >(); } -void Ifc4x3_rc1::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(5,attr);} } ::Ifc4x3_rc1::IfcRelDefinesByType::list::ptr Ifc4x3_rc1::IfcTypeObject::Types() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByType_type, 5)->as(); } @@ -22882,11 +22882,11 @@ Ifc4x3_rc1::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4x3_rc1:: // Function implementations for IfcTypeProcess boost::optional< std::string > Ifc4x3_rc1::IfcTypeProcess::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTypeProcess::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTypeProcess::ProcessType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcRelAssignsToProcess::list::ptr Ifc4x3_rc1::IfcTypeProcess::OperatesOn() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToProcess_type, 6)->as(); } @@ -22897,9 +22897,9 @@ Ifc4x3_rc1::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4x3_rc1 // Function implementations for IfcTypeProduct boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > Ifc4x3_rc1::IfcTypeProduct::RepresentationMaps() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc1::IfcRepresentationMap >(); } -void Ifc4x3_rc1::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTypeProduct::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcRelAssignsToProduct::list::ptr Ifc4x3_rc1::IfcTypeProduct::ReferencedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToProduct_type, 6)->as(); } @@ -22910,11 +22910,11 @@ Ifc4x3_rc1::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4x3_rc1 // Function implementations for IfcTypeResource boost::optional< std::string > Ifc4x3_rc1::IfcTypeResource::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTypeResource::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcTypeResource::ResourceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc1::IfcRelAssignsToResource::list::ptr Ifc4x3_rc1::IfcTypeResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToResource_type, 6)->as(); } @@ -22933,11 +22933,11 @@ void Ifc4x3_rc1::IfcUShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc1::IfcUShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc1::IfcUShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcUShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcUShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc1::IfcUShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcUShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcUShapeProfileDef_type; } @@ -22957,7 +22957,7 @@ Ifc4x3_rc1::IfcUnitAssignment::IfcUnitAssignment(aggregate_of_instance::ptr v1_U // Function implementations for IfcUnitaryControlElement boost::optional< ::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Value > Ifc4x3_rc1::IfcUnitaryControlElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcUnitaryControlElement::declaration() const { return *IFC4X3_RC1_IfcUnitaryControlElement_type; } @@ -22977,7 +22977,7 @@ Ifc4x3_rc1::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::stri // Function implementations for IfcUnitaryEquipment boost::optional< ::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Value > Ifc4x3_rc1::IfcUnitaryEquipment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcUnitaryEquipment::declaration() const { return *IFC4X3_RC1_IfcUnitaryEquipment_type; } @@ -22997,7 +22997,7 @@ Ifc4x3_rc1::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_Glob // Function implementations for IfcValve boost::optional< ::Ifc4x3_rc1::IfcValveTypeEnum::Value > Ifc4x3_rc1::IfcValve::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcValveTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcValveTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcValveTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcValve::declaration() const { return *IFC4X3_RC1_IfcValve_type; } @@ -23057,7 +23057,7 @@ Ifc4x3_rc1::IfcVertexPoint::IfcVertexPoint(::Ifc4x3_rc1::IfcPoint* v1_VertexGeom // Function implementations for IfcVibrationDamper boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc1::IfcVibrationDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcVibrationDamper::declaration() const { return *IFC4X3_RC1_IfcVibrationDamper_type; } @@ -23067,7 +23067,7 @@ Ifc4x3_rc1::IfcVibrationDamper::IfcVibrationDamper(std::string v1_GlobalId, ::If // Function implementations for IfcVibrationDamperType boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc1::IfcVibrationDamperType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc1::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcVibrationDamperType::declaration() const { return *IFC4X3_RC1_IfcVibrationDamperType_type; } @@ -23077,7 +23077,7 @@ Ifc4x3_rc1::IfcVibrationDamperType::IfcVibrationDamperType(std::string v1_Global // Function implementations for IfcVibrationIsolator boost::optional< ::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Value > Ifc4x3_rc1::IfcVibrationIsolator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcVibrationIsolator::declaration() const { return *IFC4X3_RC1_IfcVibrationIsolator_type; } @@ -23125,7 +23125,7 @@ Ifc4x3_rc1::IfcVoidStratum::IfcVoidStratum(std::string v1_GlobalId, ::Ifc4x3_rc1 // Function implementations for IfcVoidingFeature boost::optional< ::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::Value > Ifc4x3_rc1::IfcVoidingFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcVoidingFeature::declaration() const { return *IFC4X3_RC1_IfcVoidingFeature_type; } @@ -23135,7 +23135,7 @@ Ifc4x3_rc1::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcWall boost::optional< ::Ifc4x3_rc1::IfcWallTypeEnum::Value > Ifc4x3_rc1::IfcWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcWall::declaration() const { return *IFC4X3_RC1_IfcWall_type; } @@ -23171,7 +23171,7 @@ Ifc4x3_rc1::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcWasteTerminal boost::optional< ::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Value > Ifc4x3_rc1::IfcWasteTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcWasteTerminal::declaration() const { return *IFC4X3_RC1_IfcWasteTerminal_type; } @@ -23199,15 +23199,15 @@ Ifc4x3_rc1::IfcWaterStratum::IfcWaterStratum(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcWindow boost::optional< double > Ifc4x3_rc1::IfcWindow::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindow::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc1::IfcWindowTypeEnum::Value > Ifc4x3_rc1::IfcWindow::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWindowTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc1::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWindowTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWindowTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value > Ifc4x3_rc1::IfcWindow::PartitioningType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc1::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcWindow::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcWindow::declaration() const { return *IFC4X3_RC1_IfcWindow_type; } @@ -23217,29 +23217,29 @@ Ifc4x3_rc1::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwner // Function implementations for IfcWindowLiningProperties boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::TransomThickness() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::MullionThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::FirstTransomOffset() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::SecondTransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::FirstMullionOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::SecondMullionOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } ::Ifc4x3_rc1::IfcShapeAspect* Ifc4x3_rc1::IfcWindowLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc4x3_rc1::IfcShapeAspect>(true); } void Ifc4x3_rc1::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc4x3_rc1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::LiningOffset() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcWindowLiningProperties::declaration() const { return *IFC4X3_RC1_IfcWindowLiningProperties_type; } @@ -23253,9 +23253,9 @@ void Ifc4x3_rc1::IfcWindowPanelProperties::setOperationType(::Ifc4x3_rc1::IfcWin ::Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value Ifc4x3_rc1::IfcWindowPanelProperties::PanelPosition() const { return ::Ifc4x3_rc1::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc1::IfcWindowPanelProperties::setPanelPosition(::Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowPanelProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc1::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcWindowPanelProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc1::IfcShapeAspect* Ifc4x3_rc1::IfcWindowPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcShapeAspect>(true); } void Ifc4x3_rc1::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc4x3_rc1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -23295,9 +23295,9 @@ void Ifc4x3_rc1::IfcWindowType::setPredefinedType(::Ifc4x3_rc1::IfcWindowTypeEnu ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value Ifc4x3_rc1::IfcWindowType::PartitioningType() const { return ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc1::IfcWindowType::setPartitioningType(::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x3_rc1::IfcWindowType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x3_rc1::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc1::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcWindowType::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcWindowType::declaration() const { return *IFC4X3_RC1_IfcWindowType_type; } @@ -23307,11 +23307,11 @@ Ifc4x3_rc1::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4x3_rc1:: // Function implementations for IfcWorkCalendar boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > Ifc4x3_rc1::IfcWorkCalendar::WorkingTimes() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc1::IfcWorkTime >(); } -void Ifc4x3_rc1::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc1::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > Ifc4x3_rc1::IfcWorkCalendar::ExceptionTimes() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcWorkTime >(); } -void Ifc4x3_rc1::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::Value > Ifc4x3_rc1::IfcWorkCalendar::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc1::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcWorkCalendar::declaration() const { return *IFC4X3_RC1_IfcWorkCalendar_type; } @@ -23323,17 +23323,17 @@ Ifc4x3_rc1::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4x3_r std::string Ifc4x3_rc1::IfcWorkControl::CreationDate() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x3_rc1::IfcWorkControl::setCreationDate(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > Ifc4x3_rc1::IfcWorkControl::Creators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcPerson >(); } -void Ifc4x3_rc1::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcWorkControl::Purpose() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcWorkControl::Duration() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc1::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc1::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcWorkControl::TotalFloat() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc1::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc1::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } std::string Ifc4x3_rc1::IfcWorkControl::StartTime() const { std::string v = *data_->getArgument(11); return v; } void Ifc4x3_rc1::IfcWorkControl::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcWorkControl::FinishTime() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc1::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc1::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcWorkControl::declaration() const { return *IFC4X3_RC1_IfcWorkControl_type; } @@ -23343,7 +23343,7 @@ Ifc4x3_rc1::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4x3_rc1 // Function implementations for IfcWorkPlan boost::optional< ::Ifc4x3_rc1::IfcWorkPlanTypeEnum::Value > Ifc4x3_rc1::IfcWorkPlan::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWorkPlanTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc1::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWorkPlanTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWorkPlanTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcWorkPlan::declaration() const { return *IFC4X3_RC1_IfcWorkPlan_type; } @@ -23353,7 +23353,7 @@ Ifc4x3_rc1::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcO // Function implementations for IfcWorkSchedule boost::optional< ::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::Value > Ifc4x3_rc1::IfcWorkSchedule::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc1::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc1::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcWorkSchedule::declaration() const { return *IFC4X3_RC1_IfcWorkSchedule_type; } @@ -23365,9 +23365,9 @@ Ifc4x3_rc1::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4x3_r ::Ifc4x3_rc1::IfcRecurrencePattern* Ifc4x3_rc1::IfcWorkTime::RecurrencePattern() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcRecurrencePattern>(true); } void Ifc4x3_rc1::IfcWorkTime::setRecurrencePattern(::Ifc4x3_rc1::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcWorkTime::Start() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc1::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc1::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc1::IfcWorkTime::Finish() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcWorkTime::declaration() const { return *IFC4X3_RC1_IfcWorkTime_type; } @@ -23385,9 +23385,9 @@ void Ifc4x3_rc1::IfcZShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc1::IfcZShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc1::IfcZShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc1::IfcZShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc1::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc1::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc1::IfcZShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc1::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc1::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcZShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcZShapeProfileDef_type; } @@ -23397,7 +23397,7 @@ Ifc4x3_rc1::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4x3_rc1::IfcProfileTyp // Function implementations for IfcZone boost::optional< std::string > Ifc4x3_rc1::IfcZone::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc1::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc1::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc1::IfcZone::declaration() const { return *IFC4X3_RC1_IfcZone_type; } diff --git a/src/ifcparse/Ifc4x3_rc1.h b/src/ifcparse/Ifc4x3_rc1.h index 15dc641edf..0d49d07989 100644 --- a/src/ifcparse/Ifc4x3_rc1.h +++ b/src/ifcparse/Ifc4x3_rc1.h @@ -42,7 +42,9 @@ struct Ifc4x3_rc1 { -static const IfcParse::schema_definition& get_schema(); +IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); + +IFC_PARSE_API static void clear_schema(); static const char* const Identifier; diff --git a/src/ifcparse/Ifc4x3_rc2-schema.cpp b/src/ifcparse/Ifc4x3_rc2-schema.cpp index 944de6b57a..bc307a9205 100644 --- a/src/ifcparse/Ifc4x3_rc2-schema.cpp +++ b/src/ifcparse/Ifc4x3_rc2-schema.cpp @@ -17245,9 +17245,16 @@ IfcParse::schema_definition* IFC4X3_RC2_populate_schema() { #pragma optimize("", on) #endif -const schema_definition& Ifc4x3_rc2::get_schema() { +static std::unique_ptr schema; - static const schema_definition* s = IFC4X3_RC2_populate_schema(); - return *s; +void Ifc4x3_rc2::clear_schema() { + schema.reset(); +} + +const schema_definition& Ifc4x3_rc2::get_schema() { + if (!schema) { + schema.reset(IFC4X3_RC2_populate_schema()); + } + return *schema; } diff --git a/src/ifcparse/Ifc4x3_rc2.cpp b/src/ifcparse/Ifc4x3_rc2.cpp index 344e3010e3..f461d1734d 100644 --- a/src/ifcparse/Ifc4x3_rc2.cpp +++ b/src/ifcparse/Ifc4x3_rc2.cpp @@ -13099,11 +13099,11 @@ Ifc4x3_rc2::IfcWarpingMomentMeasure::operator double() const { return *data_->ge // Function implementations for IfcActionRequest boost::optional< ::Ifc4x3_rc2::IfcActionRequestTypeEnum::Value > Ifc4x3_rc2::IfcActionRequest::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcActionRequestTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc2::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcActionRequestTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcActionRequestTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcActionRequest::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcActionRequest::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcActionRequest::declaration() const { return *IFC4X3_RC2_IfcActionRequest_type; } @@ -13126,9 +13126,9 @@ Ifc4x3_rc2::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHi ::Ifc4x3_rc2::IfcRoleEnum::Value Ifc4x3_rc2::IfcActorRole::Role() const { return ::Ifc4x3_rc2::IfcRoleEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc2::IfcActorRole::setRole(::Ifc4x3_rc2::IfcRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcRoleEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcActorRole::UserDefinedRole() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcActorRole::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcActorRole::HasExternalReference() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -13139,7 +13139,7 @@ Ifc4x3_rc2::IfcActorRole::IfcActorRole(::Ifc4x3_rc2::IfcRoleEnum::Value v1_Role, // Function implementations for IfcActuator boost::optional< ::Ifc4x3_rc2::IfcActuatorTypeEnum::Value > Ifc4x3_rc2::IfcActuator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcActuatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcActuatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcActuatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcActuator::declaration() const { return *IFC4X3_RC2_IfcActuator_type; } @@ -13159,11 +13159,11 @@ Ifc4x3_rc2::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcAddress boost::optional< ::Ifc4x3_rc2::IfcAddressTypeEnum::Value > Ifc4x3_rc2::IfcAddress::Purpose() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAddressTypeEnum::FromString(*data_->getArgument(0)); } -void Ifc4x3_rc2::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_rc2::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAddressTypeEnum::ToString(*v)));data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_rc2::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAddressTypeEnum::ToString(*v)));}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcAddress::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcAddress::UserDefinedPurpose() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcPerson::list::ptr Ifc4x3_rc2::IfcAddress::OfPerson() const { return data_->getInverse(IFC4X3_RC2_IfcPerson_type, 7)->as(); } ::Ifc4x3_rc2::IfcOrganization::list::ptr Ifc4x3_rc2::IfcAddress::OfOrganization() const { return data_->getInverse(IFC4X3_RC2_IfcOrganization_type, 4)->as(); } @@ -13201,7 +13201,7 @@ Ifc4x3_rc2::IfcAdvancedFace::IfcAdvancedFace(aggregate_of< ::Ifc4x3_rc2::IfcFace // Function implementations for IfcAirTerminal boost::optional< ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::Value > Ifc4x3_rc2::IfcAirTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAirTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAirTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcAirTerminal::declaration() const { return *IFC4X3_RC2_IfcAirTerminal_type; } @@ -13211,7 +13211,7 @@ Ifc4x3_rc2::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4x3_rc2 // Function implementations for IfcAirTerminalBox boost::optional< ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::Value > Ifc4x3_rc2::IfcAirTerminalBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcAirTerminalBox::declaration() const { return *IFC4X3_RC2_IfcAirTerminalBox_type; } @@ -13241,7 +13241,7 @@ Ifc4x3_rc2::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::If // Function implementations for IfcAirToAirHeatRecovery boost::optional< ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4x3_rc2::IfcAirToAirHeatRecovery::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcAirToAirHeatRecovery::declaration() const { return *IFC4X3_RC2_IfcAirToAirHeatRecovery_type; } @@ -13261,7 +13261,7 @@ Ifc4x3_rc2::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string // Function implementations for IfcAlarm boost::optional< ::Ifc4x3_rc2::IfcAlarmTypeEnum::Value > Ifc4x3_rc2::IfcAlarm::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAlarmTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAlarmTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAlarmTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcAlarm::declaration() const { return *IFC4X3_RC2_IfcAlarm_type; } @@ -13281,7 +13281,7 @@ Ifc4x3_rc2::IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, ::Ifc4x3_rc2::If // Function implementations for IfcAlignment boost::optional< ::Ifc4x3_rc2::IfcAlignmentTypeEnum::Value > Ifc4x3_rc2::IfcAlignment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAlignmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAlignmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAlignmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcAlignment::declaration() const { return *IFC4X3_RC2_IfcAlignment_type; } @@ -13341,13 +13341,13 @@ void Ifc4x3_rc2::IfcAlignmentCantSegment::setHorizontalLength(double v) { {IfcWr double Ifc4x3_rc2::IfcAlignmentCantSegment::StartCantLeft() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc2::IfcAlignmentCantSegment::setStartCantLeft(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAlignmentCantSegment::EndCantLeft() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcAlignmentCantSegment::setEndCantLeft(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcAlignmentCantSegment::setEndCantLeft(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } double Ifc4x3_rc2::IfcAlignmentCantSegment::StartCantRight() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcAlignmentCantSegment::setStartCantRight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAlignmentCantSegment::EndCantRight() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcAlignmentCantSegment::setEndCantRight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcAlignmentCantSegment::setEndCantRight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAlignmentCantSegment::SmoothingLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcAlignmentCantSegment::setSmoothingLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcAlignmentCantSegment::setSmoothingLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::Value Ifc4x3_rc2::IfcAlignmentCantSegment::PredefinedType() const { return ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc2::IfcAlignmentCantSegment::setPredefinedType(::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} } @@ -13363,7 +13363,7 @@ void Ifc4x3_rc2::IfcAlignmentCurve::setHorizontal(::Ifc4x3_rc2::IfcAlignmentHori ::Ifc4x3_rc2::IfcAlignmentVertical* Ifc4x3_rc2::IfcAlignmentCurve::Vertical() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcAlignmentVertical>(true); } void Ifc4x3_rc2::IfcAlignmentCurve::setVertical(::Ifc4x3_rc2::IfcAlignmentVertical* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcAlignmentCurve::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcAlignmentCurve::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcAlignmentCurve::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentCurve::declaration() const { return *IFC4X3_RC2_IfcAlignmentCurve_type; } @@ -13373,7 +13373,7 @@ Ifc4x3_rc2::IfcAlignmentCurve::IfcAlignmentCurve(::Ifc4x3_rc2::IfcAlignmentHoriz // Function implementations for IfcAlignmentHorizontal boost::optional< double > Ifc4x3_rc2::IfcAlignmentHorizontal::StartDistAlong() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcAlignmentHorizontal::setStartDistAlong(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcAlignmentHorizontal::setStartDistAlong(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } aggregate_of< ::Ifc4x3_rc2::IfcAlignmentHorizontalSegment >::ptr Ifc4x3_rc2::IfcAlignmentHorizontal::Segments() const { aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc2::IfcAlignmentHorizontalSegment >(); } void Ifc4x3_rc2::IfcAlignmentHorizontal::setSegments(aggregate_of< ::Ifc4x3_rc2::IfcAlignmentHorizontalSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} } @@ -13395,7 +13395,7 @@ void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setEndRadiusOfCurvature(double v double Ifc4x3_rc2::IfcAlignmentHorizontalSegment::SegmentLength() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setSegmentLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAlignmentHorizontalSegment::GravityCenterLineHeight() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setGravityCenterLineHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setGravityCenterLineHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::Value Ifc4x3_rc2::IfcAlignmentHorizontalSegment::PredefinedType() const { return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setPredefinedType(::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::ToString(v)));data_->setArgument(8,attr);} } @@ -13407,9 +13407,9 @@ Ifc4x3_rc2::IfcAlignmentHorizontalSegment::IfcAlignmentHorizontalSegment(boost:: // Function implementations for IfcAlignmentParameterSegment boost::optional< std::string > Ifc4x3_rc2::IfcAlignmentParameterSegment::StartTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcAlignmentParameterSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcAlignmentParameterSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcAlignmentParameterSegment::EndTag() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcAlignmentParameterSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcAlignmentParameterSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentParameterSegment::declaration() const { return *IFC4X3_RC2_IfcAlignmentParameterSegment_type; } @@ -13449,7 +13449,7 @@ void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setStartGradient(double v) { {IfcW double Ifc4x3_rc2::IfcAlignmentVerticalSegment::EndGradient() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setEndGradient(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAlignmentVerticalSegment::RadiusOfCurvature() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setRadiusOfCurvature(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setRadiusOfCurvature(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::Value Ifc4x3_rc2::IfcAlignmentVerticalSegment::PredefinedType() const { return ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setPredefinedType(::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::ToString(v)));data_->setArgument(8,attr);} } @@ -13461,7 +13461,7 @@ Ifc4x3_rc2::IfcAlignmentVerticalSegment::IfcAlignmentVerticalSegment(boost::opti // Function implementations for IfcAnnotation boost::optional< ::Ifc4x3_rc2::IfcAnnotationTypeEnum::Value > Ifc4x3_rc2::IfcAnnotation::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc2::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAnnotationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAnnotationTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAnnotationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAnnotationTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc2::IfcAnnotation::ContainedInStructure() const { return data_->getInverse(IFC4X3_RC2_IfcRelContainedInSpatialStructure_type, 4)->as(); } @@ -13474,7 +13474,7 @@ Ifc4x3_rc2::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4x3_rc2:: ::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcAnnotationFillArea::OuterBoundary() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurve>(true); } void Ifc4x3_rc2::IfcAnnotationFillArea::setOuterBoundary(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr > Ifc4x3_rc2::IfcAnnotationFillArea::InnerBoundaries() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcCurve >(); } -void Ifc4x3_rc2::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcAnnotationFillArea::declaration() const { return *IFC4X3_RC2_IfcAnnotationFillArea_type; } @@ -13500,25 +13500,25 @@ Ifc4x3_rc2::IfcApplication::IfcApplication(::Ifc4x3_rc2::IfcOrganization* v1_App // Function implementations for IfcAppliedValue boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc2::IfcAppliedValueSelect* Ifc4x3_rc2::IfcAppliedValue::AppliedValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcAppliedValueSelect>(true); } void Ifc4x3_rc2::IfcAppliedValue::setAppliedValue(::Ifc4x3_rc2::IfcAppliedValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcMeasureWithUnit* Ifc4x3_rc2::IfcAppliedValue::UnitBasis() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcMeasureWithUnit>(true); } void Ifc4x3_rc2::IfcAppliedValue::setUnitBasis(::Ifc4x3_rc2::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::ApplicableDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::FixedUntilDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::Category() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::Condition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::Value > Ifc4x3_rc2::IfcAppliedValue::ArithmeticOperator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcArithmeticOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcArithmeticOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > Ifc4x3_rc2::IfcAppliedValue::Components() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc2::IfcAppliedValue >(); } -void Ifc4x3_rc2::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcAppliedValue::HasExternalReference() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -13529,19 +13529,19 @@ Ifc4x3_rc2::IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_N // Function implementations for IfcApproval boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcApproval::TimeOfApproval() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Status() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Level() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Qualifier() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcApproval::RequestingApproval() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); } void Ifc4x3_rc2::IfcApproval::setRequestingApproval(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcApproval::GivingApproval() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); } @@ -13602,7 +13602,7 @@ Ifc4x3_rc2::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::I // Function implementations for IfcAsset boost::optional< std::string > Ifc4x3_rc2::IfcAsset::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcAsset::OriginalValue() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcCostValue>(true); } void Ifc4x3_rc2::IfcAsset::setOriginalValue(::Ifc4x3_rc2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } ::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcAsset::CurrentValue() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcCostValue>(true); } @@ -13616,7 +13616,7 @@ void Ifc4x3_rc2::IfcAsset::setUser(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite: ::Ifc4x3_rc2::IfcPerson* Ifc4x3_rc2::IfcAsset::ResponsiblePerson() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc2::IfcPerson>(true); } void Ifc4x3_rc2::IfcAsset::setResponsiblePerson(::Ifc4x3_rc2::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcAsset::IncorporationDate() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcAsset::DepreciatedValue() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc2::IfcCostValue>(true); } void Ifc4x3_rc2::IfcAsset::setDepreciatedValue(::Ifc4x3_rc2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -13636,21 +13636,21 @@ void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { {Ifc double Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } double Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { double v = *data_->getArgument(8); return v; } void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcAsymmetricIShapeProfileDef_type; } @@ -13660,7 +13660,7 @@ Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4x // Function implementations for IfcAudioVisualAppliance boost::optional< ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::Value > Ifc4x3_rc2::IfcAudioVisualAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcAudioVisualAppliance::declaration() const { return *IFC4X3_RC2_IfcAudioVisualAppliance_type; } @@ -13805,7 +13805,7 @@ Ifc4x3_rc2::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegre // Function implementations for IfcBeam boost::optional< ::Ifc4x3_rc2::IfcBeamTypeEnum::Value > Ifc4x3_rc2::IfcBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBeam::declaration() const { return *IFC4X3_RC2_IfcBeam_type; } @@ -13833,7 +13833,7 @@ Ifc4x3_rc2::IfcBeamType::IfcBeamType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcBearing boost::optional< ::Ifc4x3_rc2::IfcBearingTypeEnum::Value > Ifc4x3_rc2::IfcBearing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBearingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBearingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBearingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBearing::declaration() const { return *IFC4X3_RC2_IfcBearing_type; } @@ -13893,7 +13893,7 @@ Ifc4x3_rc2::IfcBlossCurve::IfcBlossCurve(::Ifc4x3_rc2::IfcAxis2Placement* v1_Pos // Function implementations for IfcBoiler boost::optional< ::Ifc4x3_rc2::IfcBoilerTypeEnum::Value > Ifc4x3_rc2::IfcBoiler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBoilerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBoilerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBoilerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBoiler::declaration() const { return *IFC4X3_RC2_IfcBoiler_type; } @@ -13943,7 +13943,7 @@ Ifc4x3_rc2::IfcBorehole::IfcBorehole(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcBoundaryCondition boost::optional< std::string > Ifc4x3_rc2::IfcBoundaryCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryCondition::declaration() const { return *IFC4X3_RC2_IfcBoundaryCondition_type; } @@ -14068,7 +14068,7 @@ Ifc4x3_rc2::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4x3_rc2::IfcSurface* v1_Ba // Function implementations for IfcBridge boost::optional< ::Ifc4x3_rc2::IfcBridgeTypeEnum::Value > Ifc4x3_rc2::IfcBridge::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBridgeTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc2::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBridgeTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBridgeTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBridge::declaration() const { return *IFC4X3_RC2_IfcBridge_type; } @@ -14086,9 +14086,9 @@ Ifc4x3_rc2::IfcBridgePart::IfcBridgePart(std::string v1_GlobalId, ::Ifc4x3_rc2:: // Function implementations for IfcBuilding boost::optional< double > Ifc4x3_rc2::IfcBuilding::ElevationOfRefHeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcBuilding::ElevationOfTerrain() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc2::IfcPostalAddress* Ifc4x3_rc2::IfcBuilding::BuildingAddress() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc2::IfcPostalAddress>(true); } void Ifc4x3_rc2::IfcBuilding::setBuildingAddress(::Ifc4x3_rc2::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } @@ -14100,7 +14100,7 @@ Ifc4x3_rc2::IfcBuilding::IfcBuilding(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcBuildingElementPart boost::optional< ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::Value > Ifc4x3_rc2::IfcBuildingElementPart::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBuildingElementPart::declaration() const { return *IFC4X3_RC2_IfcBuildingElementPart_type; } @@ -14120,7 +14120,7 @@ Ifc4x3_rc2::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v // Function implementations for IfcBuildingElementProxy boost::optional< ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::Value > Ifc4x3_rc2::IfcBuildingElementProxy::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBuildingElementProxy::declaration() const { return *IFC4X3_RC2_IfcBuildingElementProxy_type; } @@ -14140,7 +14140,7 @@ Ifc4x3_rc2::IfcBuildingElementProxyType::IfcBuildingElementProxyType(std::string // Function implementations for IfcBuildingStorey boost::optional< double > Ifc4x3_rc2::IfcBuildingStorey::Elevation() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBuildingStorey::declaration() const { return *IFC4X3_RC2_IfcBuildingStorey_type; } @@ -14150,9 +14150,9 @@ Ifc4x3_rc2::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcBuildingSystem boost::optional< ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::Value > Ifc4x3_rc2::IfcBuildingSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc2::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcBuildingSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBuildingSystem::declaration() const { return *IFC4X3_RC2_IfcBuildingSystem_type; } @@ -14178,9 +14178,9 @@ Ifc4x3_rc2::IfcBuiltElementType::IfcBuiltElementType(std::string v1_GlobalId, :: // Function implementations for IfcBuiltSystem boost::optional< ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::Value > Ifc4x3_rc2::IfcBuiltSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc2::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcBuiltSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBuiltSystem::declaration() const { return *IFC4X3_RC2_IfcBuiltSystem_type; } @@ -14190,7 +14190,7 @@ Ifc4x3_rc2::IfcBuiltSystem::IfcBuiltSystem(std::string v1_GlobalId, ::Ifc4x3_rc2 // Function implementations for IfcBurner boost::optional< ::Ifc4x3_rc2::IfcBurnerTypeEnum::Value > Ifc4x3_rc2::IfcBurner::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBurnerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBurnerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBurnerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcBurner::declaration() const { return *IFC4X3_RC2_IfcBurner_type; } @@ -14218,7 +14218,7 @@ void Ifc4x3_rc2::IfcCShapeProfileDef::setWallThickness(double v) { {IfcWrite::If double Ifc4x3_rc2::IfcCShapeProfileDef::Girth() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcCShapeProfileDef::setGirth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcCShapeProfileDef::InternalFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcCShapeProfileDef_type; } @@ -14228,7 +14228,7 @@ Ifc4x3_rc2::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4x3_rc2::IfcProfileTyp // Function implementations for IfcCableCarrierFitting boost::optional< ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::Value > Ifc4x3_rc2::IfcCableCarrierFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCableCarrierFitting::declaration() const { return *IFC4X3_RC2_IfcCableCarrierFitting_type; } @@ -14248,7 +14248,7 @@ Ifc4x3_rc2::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v // Function implementations for IfcCableCarrierSegment boost::optional< ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::Value > Ifc4x3_rc2::IfcCableCarrierSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCableCarrierSegment::declaration() const { return *IFC4X3_RC2_IfcCableCarrierSegment_type; } @@ -14268,7 +14268,7 @@ Ifc4x3_rc2::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v // Function implementations for IfcCableFitting boost::optional< ::Ifc4x3_rc2::IfcCableFittingTypeEnum::Value > Ifc4x3_rc2::IfcCableFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCableFitting::declaration() const { return *IFC4X3_RC2_IfcCableFitting_type; } @@ -14288,7 +14288,7 @@ Ifc4x3_rc2::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, :: // Function implementations for IfcCableSegment boost::optional< ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::Value > Ifc4x3_rc2::IfcCableSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCableSegment::declaration() const { return *IFC4X3_RC2_IfcCableSegment_type; } @@ -14308,7 +14308,7 @@ Ifc4x3_rc2::IfcCableSegmentType::IfcCableSegmentType(std::string v1_GlobalId, :: // Function implementations for IfcCaissonFoundation boost::optional< ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::Value > Ifc4x3_rc2::IfcCaissonFoundation::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCaissonFoundation::declaration() const { return *IFC4X3_RC2_IfcCaissonFoundation_type; } @@ -14348,7 +14348,7 @@ Ifc4x3_rc2::IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricReprese std::vector< std::vector< double > > Ifc4x3_rc2::IfcCartesianPointList2D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x3_rc2::IfcCartesianPointList2D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcCartesianPointList2D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCartesianPointList2D::declaration() const { return *IFC4X3_RC2_IfcCartesianPointList2D_type; } @@ -14360,7 +14360,7 @@ Ifc4x3_rc2::IfcCartesianPointList2D::IfcCartesianPointList2D(std::vector< std::v std::vector< std::vector< double > > Ifc4x3_rc2::IfcCartesianPointList3D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x3_rc2::IfcCartesianPointList3D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcCartesianPointList3D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCartesianPointList3D::declaration() const { return *IFC4X3_RC2_IfcCartesianPointList3D_type; } @@ -14376,7 +14376,7 @@ void Ifc4x3_rc2::IfcCartesianTransformationOperator::setAxis2(::Ifc4x3_rc2::IfcD ::Ifc4x3_rc2::IfcCartesianPoint* Ifc4x3_rc2::IfcCartesianTransformationOperator::LocalOrigin() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCartesianPoint>(true); } void Ifc4x3_rc2::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc4x3_rc2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcCartesianTransformationOperator::Scale() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator::declaration() const { return *IFC4X3_RC2_IfcCartesianTransformationOperator_type; } @@ -14394,7 +14394,7 @@ Ifc4x3_rc2::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOper // Function implementations for IfcCartesianTransformationOperator2DnonUniform boost::optional< double > Ifc4x3_rc2::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IFC4X3_RC2_IfcCartesianTransformationOperator2DnonUniform_type; } @@ -14414,9 +14414,9 @@ Ifc4x3_rc2::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOper // Function implementations for IfcCartesianTransformationOperator3DnonUniform boost::optional< double > Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IFC4X3_RC2_IfcCartesianTransformationOperator3DnonUniform_type; } @@ -14436,7 +14436,7 @@ Ifc4x3_rc2::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4x3_rc2::IfcPr // Function implementations for IfcChiller boost::optional< ::Ifc4x3_rc2::IfcChillerTypeEnum::Value > Ifc4x3_rc2::IfcChiller::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcChillerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcChillerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcChillerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcChiller::declaration() const { return *IFC4X3_RC2_IfcChiller_type; } @@ -14456,7 +14456,7 @@ Ifc4x3_rc2::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4x3_rc2 // Function implementations for IfcChimney boost::optional< ::Ifc4x3_rc2::IfcChimneyTypeEnum::Value > Ifc4x3_rc2::IfcChimney::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcChimneyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcChimneyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcChimneyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcChimney::declaration() const { return *IFC4X3_RC2_IfcChimney_type; } @@ -14534,19 +14534,19 @@ Ifc4x3_rc2::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, :: // Function implementations for IfcClassification boost::optional< std::string > Ifc4x3_rc2::IfcClassification::Source() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcClassification::Edition() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcClassification::EditionDate() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::string Ifc4x3_rc2::IfcClassification::Name() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcClassification::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcClassification::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcClassification::Location() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcClassification::ReferenceTokens() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc2::IfcRelAssociatesClassification::list::ptr Ifc4x3_rc2::IfcClassification::ClassificationForObjects() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x3_rc2::IfcClassificationReference::list::ptr Ifc4x3_rc2::IfcClassification::HasReferences() const { return data_->getInverse(IFC4X3_RC2_IfcClassificationReference_type, 3)->as(); } @@ -14560,9 +14560,9 @@ Ifc4x3_rc2::IfcClassification::IfcClassification(boost::optional< std::string > ::Ifc4x3_rc2::IfcClassificationReferenceSelect* Ifc4x3_rc2::IfcClassificationReference::ReferencedSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcClassificationReferenceSelect>(true); } void Ifc4x3_rc2::IfcClassificationReference::setReferencedSource(::Ifc4x3_rc2::IfcClassificationReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcClassificationReference::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcClassificationReference::Sort() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcRelAssociatesClassification::list::ptr Ifc4x3_rc2::IfcClassificationReference::ClassificationRefForObjects() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x3_rc2::IfcClassificationReference::list::ptr Ifc4x3_rc2::IfcClassificationReference::HasReferences() const { return data_->getInverse(IFC4X3_RC2_IfcClassificationReference_type, 3)->as(); } @@ -14594,7 +14594,7 @@ Ifc4x3_rc2::IfcClothoid::IfcClothoid(::Ifc4x3_rc2::IfcAxis2Placement* v1_Positio // Function implementations for IfcCoil boost::optional< ::Ifc4x3_rc2::IfcCoilTypeEnum::Value > Ifc4x3_rc2::IfcCoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCoil::declaration() const { return *IFC4X3_RC2_IfcCoil_type; } @@ -14638,7 +14638,7 @@ Ifc4x3_rc2::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double // Function implementations for IfcColourSpecification boost::optional< std::string > Ifc4x3_rc2::IfcColourSpecification::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcColourSpecification::declaration() const { return *IFC4X3_RC2_IfcColourSpecification_type; } @@ -14648,7 +14648,7 @@ Ifc4x3_rc2::IfcColourSpecification::IfcColourSpecification(boost::optional< std: // Function implementations for IfcColumn boost::optional< ::Ifc4x3_rc2::IfcColumnTypeEnum::Value > Ifc4x3_rc2::IfcColumn::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcColumnTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcColumnTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcColumnTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcColumn::declaration() const { return *IFC4X3_RC2_IfcColumn_type; } @@ -14676,7 +14676,7 @@ Ifc4x3_rc2::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4x3_rc2:: // Function implementations for IfcCommunicationsAppliance boost::optional< ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::Value > Ifc4x3_rc2::IfcCommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCommunicationsAppliance::declaration() const { return *IFC4X3_RC2_IfcCommunicationsAppliance_type; } @@ -14708,11 +14708,11 @@ Ifc4x3_rc2::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::o // Function implementations for IfcComplexPropertyTemplate boost::optional< std::string > Ifc4x3_rc2::IfcComplexPropertyTemplate::UsageName() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4x3_rc2::IfcComplexPropertyTemplate::TemplateType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc2::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr > Ifc4x3_rc2::IfcComplexPropertyTemplate::HasPropertyTemplates() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc2::IfcPropertyTemplate >(); } -void Ifc4x3_rc2::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcComplexPropertyTemplate::declaration() const { return *IFC4X3_RC2_IfcComplexPropertyTemplate_type; } @@ -14757,7 +14757,7 @@ Ifc4x3_rc2::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4x3_rc2::Ifc aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr Ifc4x3_rc2::IfcCompositeProfileDef::Profiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcProfileDef >(); } void Ifc4x3_rc2::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcCompositeProfileDef::Label() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCompositeProfileDef::declaration() const { return *IFC4X3_RC2_IfcCompositeProfileDef_type; } @@ -14767,7 +14767,7 @@ Ifc4x3_rc2::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4x3_rc2::IfcProf // Function implementations for IfcCompressor boost::optional< ::Ifc4x3_rc2::IfcCompressorTypeEnum::Value > Ifc4x3_rc2::IfcCompressor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCompressorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCompressorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCompressorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCompressor::declaration() const { return *IFC4X3_RC2_IfcCompressor_type; } @@ -14787,7 +14787,7 @@ Ifc4x3_rc2::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCondenser boost::optional< ::Ifc4x3_rc2::IfcCondenserTypeEnum::Value > Ifc4x3_rc2::IfcCondenser::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCondenserTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCondenserTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCondenserTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCondenser::declaration() const { return *IFC4X3_RC2_IfcCondenser_type; } @@ -14847,11 +14847,11 @@ Ifc4x3_rc2::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEnt // Function implementations for IfcConnectionPointEccentricity boost::optional< double > Ifc4x3_rc2::IfcConnectionPointEccentricity::EccentricityInX() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcConnectionPointEccentricity::EccentricityInY() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcConnectionPointEccentricity::EccentricityInZ() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcConnectionPointEccentricity::declaration() const { return *IFC4X3_RC2_IfcConnectionPointEccentricity_type; } @@ -14899,17 +14899,17 @@ Ifc4x3_rc2::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4x3_rc std::string Ifc4x3_rc2::IfcConstraint::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc2::IfcConstraint::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcConstraint::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc2::IfcConstraintEnum::Value Ifc4x3_rc2::IfcConstraint::ConstraintGrade() const { return ::Ifc4x3_rc2::IfcConstraintEnum::FromString(*data_->getArgument(2)); } void Ifc4x3_rc2::IfcConstraint::setConstraintGrade(::Ifc4x3_rc2::IfcConstraintEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcConstraintEnum::ToString(v)));data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcConstraint::ConstraintSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcConstraint::CreatingActor() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); } void Ifc4x3_rc2::IfcConstraint::setCreatingActor(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcConstraint::CreationTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcConstraint::UserDefinedGrade() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcConstraint::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc2::IfcResourceConstraintRelationship::list::ptr Ifc4x3_rc2::IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(IFC4X3_RC2_IfcResourceConstraintRelationship_type, 2)->as(); } @@ -14921,7 +14921,7 @@ Ifc4x3_rc2::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< s // Function implementations for IfcConstructionEquipmentResource boost::optional< ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4x3_rc2::IfcConstructionEquipmentResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcConstructionEquipmentResource::declaration() const { return *IFC4X3_RC2_IfcConstructionEquipmentResource_type; } @@ -14941,7 +14941,7 @@ Ifc4x3_rc2::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResour // Function implementations for IfcConstructionMaterialResource boost::optional< ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4x3_rc2::IfcConstructionMaterialResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcConstructionMaterialResource::declaration() const { return *IFC4X3_RC2_IfcConstructionMaterialResource_type; } @@ -14961,7 +14961,7 @@ Ifc4x3_rc2::IfcConstructionMaterialResourceType::IfcConstructionMaterialResource // Function implementations for IfcConstructionProductResource boost::optional< ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::Value > Ifc4x3_rc2::IfcConstructionProductResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcConstructionProductResource::declaration() const { return *IFC4X3_RC2_IfcConstructionProductResource_type; } @@ -14983,7 +14983,7 @@ Ifc4x3_rc2::IfcConstructionProductResourceType::IfcConstructionProductResourceTy ::Ifc4x3_rc2::IfcResourceTime* Ifc4x3_rc2::IfcConstructionResource::Usage() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcResourceTime>(true); } void Ifc4x3_rc2::IfcConstructionResource::setUsage(::Ifc4x3_rc2::IfcResourceTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > Ifc4x3_rc2::IfcConstructionResource::BaseCosts() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc2::IfcAppliedValue >(); } -void Ifc4x3_rc2::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcPhysicalQuantity* Ifc4x3_rc2::IfcConstructionResource::BaseQuantity() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcPhysicalQuantity>(true); } void Ifc4x3_rc2::IfcConstructionResource::setBaseQuantity(::Ifc4x3_rc2::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -14995,7 +14995,7 @@ Ifc4x3_rc2::IfcConstructionResource::IfcConstructionResource(std::string v1_Glob // Function implementations for IfcConstructionResourceType boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > Ifc4x3_rc2::IfcConstructionResourceType::BaseCosts() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc2::IfcAppliedValue >(); } -void Ifc4x3_rc2::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x3_rc2::IfcPhysicalQuantity* Ifc4x3_rc2::IfcConstructionResourceType::BaseQuantity() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcPhysicalQuantity>(true); } void Ifc4x3_rc2::IfcConstructionResourceType::setBaseQuantity(::Ifc4x3_rc2::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -15007,13 +15007,13 @@ Ifc4x3_rc2::IfcConstructionResourceType::IfcConstructionResourceType(std::string // Function implementations for IfcContext boost::optional< std::string > Ifc4x3_rc2::IfcContext::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcContext::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcContext::Phase() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationContext >::ptr > Ifc4x3_rc2::IfcContext::RepresentationContexts() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcRepresentationContext >(); } -void Ifc4x3_rc2::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcUnitAssignment* Ifc4x3_rc2::IfcContext::UnitsInContext() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcUnitAssignment>(true); } void Ifc4x3_rc2::IfcContext::setUnitsInContext(::Ifc4x3_rc2::IfcUnitAssignment* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -15038,7 +15038,7 @@ Ifc4x3_rc2::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4x3_rc2::IfcDi // Function implementations for IfcControl boost::optional< std::string > Ifc4x3_rc2::IfcControl::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcRelAssignsToControl::list::ptr Ifc4x3_rc2::IfcControl::Controls() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToControl_type, 6)->as(); } @@ -15049,7 +15049,7 @@ Ifc4x3_rc2::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwn // Function implementations for IfcController boost::optional< ::Ifc4x3_rc2::IfcControllerTypeEnum::Value > Ifc4x3_rc2::IfcController::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcControllerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcControllerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcControllerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcController::declaration() const { return *IFC4X3_RC2_IfcController_type; } @@ -15092,7 +15092,7 @@ Ifc4x3_rc2::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(: // Function implementations for IfcConveyorSegment boost::optional< ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::Value > Ifc4x3_rc2::IfcConveyorSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcConveyorSegment::declaration() const { return *IFC4X3_RC2_IfcConveyorSegment_type; } @@ -15112,7 +15112,7 @@ Ifc4x3_rc2::IfcConveyorSegmentType::IfcConveyorSegmentType(std::string v1_Global // Function implementations for IfcCooledBeam boost::optional< ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::Value > Ifc4x3_rc2::IfcCooledBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCooledBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCooledBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCooledBeam::declaration() const { return *IFC4X3_RC2_IfcCooledBeam_type; } @@ -15132,7 +15132,7 @@ Ifc4x3_rc2::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCoolingTower boost::optional< ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::Value > Ifc4x3_rc2::IfcCoolingTower::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCoolingTower::declaration() const { return *IFC4X3_RC2_IfcCoolingTower_type; } @@ -15166,11 +15166,11 @@ Ifc4x3_rc2::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4x3_rc2::IfcCoor std::string Ifc4x3_rc2::IfcCoordinateReferenceSystem::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcCoordinateReferenceSystem::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcCoordinateReferenceSystem::VerticalDatum() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc2::IfcCoordinateOperation::list::ptr Ifc4x3_rc2::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return data_->getInverse(IFC4X3_RC2_IfcCoordinateOperation_type, 0)->as(); } @@ -15181,11 +15181,11 @@ Ifc4x3_rc2::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(std::stri // Function implementations for IfcCostItem boost::optional< ::Ifc4x3_rc2::IfcCostItemTypeEnum::Value > Ifc4x3_rc2::IfcCostItem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCostItemTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc2::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCostItemTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCostItemTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCostValue >::ptr > Ifc4x3_rc2::IfcCostItem::CostValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcCostValue >(); } -void Ifc4x3_rc2::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr > Ifc4x3_rc2::IfcCostItem::CostQuantities() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc2::IfcPhysicalQuantity >(); } -void Ifc4x3_rc2::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCostItem::declaration() const { return *IFC4X3_RC2_IfcCostItem_type; } @@ -15195,13 +15195,13 @@ Ifc4x3_rc2::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcCostSchedule boost::optional< ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::Value > Ifc4x3_rc2::IfcCostSchedule::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc2::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCostScheduleTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCostScheduleTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcCostSchedule::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcCostSchedule::SubmittedOn() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcCostSchedule::UpdateDate() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCostSchedule::declaration() const { return *IFC4X3_RC2_IfcCostSchedule_type; } @@ -15219,7 +15219,7 @@ Ifc4x3_rc2::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, b // Function implementations for IfcCourse boost::optional< ::Ifc4x3_rc2::IfcCourseTypeEnum::Value > Ifc4x3_rc2::IfcCourse::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCourseTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCourseTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCourseTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCourseTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCourseTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCourse::declaration() const { return *IFC4X3_RC2_IfcCourse_type; } @@ -15239,7 +15239,7 @@ Ifc4x3_rc2::IfcCourseType::IfcCourseType(std::string v1_GlobalId, ::Ifc4x3_rc2:: // Function implementations for IfcCovering boost::optional< ::Ifc4x3_rc2::IfcCoveringTypeEnum::Value > Ifc4x3_rc2::IfcCovering::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCoveringTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCoveringTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcRelCoversSpaces::list::ptr Ifc4x3_rc2::IfcCovering::CoversSpaces() const { return data_->getInverse(IFC4X3_RC2_IfcRelCoversSpaces_type, 5)->as(); } ::Ifc4x3_rc2::IfcRelCoversBldgElements::list::ptr Ifc4x3_rc2::IfcCovering::CoversElements() const { return data_->getInverse(IFC4X3_RC2_IfcRelCoversBldgElements_type, 5)->as(); } @@ -15261,7 +15261,7 @@ Ifc4x3_rc2::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcCrewResource boost::optional< ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::Value > Ifc4x3_rc2::IfcCrewResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCrewResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCrewResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCrewResource::declaration() const { return *IFC4X3_RC2_IfcCrewResource_type; } @@ -15307,7 +15307,7 @@ void Ifc4x3_rc2::IfcCurrencyRelationship::setRelatedMonetaryUnit(::Ifc4x3_rc2::I double Ifc4x3_rc2::IfcCurrencyRelationship::ExchangeRate() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc2::IfcCurrencyRelationship::setExchangeRate(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcCurrencyRelationship::RateDateTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcLibraryInformation* Ifc4x3_rc2::IfcCurrencyRelationship::RateSource() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcLibraryInformation>(true); } void Ifc4x3_rc2::IfcCurrencyRelationship::setRateSource(::Ifc4x3_rc2::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -15319,7 +15319,7 @@ Ifc4x3_rc2::IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< st // Function implementations for IfcCurtainWall boost::optional< ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::Value > Ifc4x3_rc2::IfcCurtainWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCurtainWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCurtainWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCurtainWall::declaration() const { return *IFC4X3_RC2_IfcCurtainWall_type; } @@ -15409,7 +15409,7 @@ void Ifc4x3_rc2::IfcCurveStyle::setCurveWidth(::Ifc4x3_rc2::IfcSizeSelect* v) { ::Ifc4x3_rc2::IfcColour* Ifc4x3_rc2::IfcCurveStyle::CurveColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcColour>(true); } void Ifc4x3_rc2::IfcCurveStyle::setCurveColour(::Ifc4x3_rc2::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x3_rc2::IfcCurveStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcCurveStyle::declaration() const { return *IFC4X3_RC2_IfcCurveStyle_type; } @@ -15419,7 +15419,7 @@ Ifc4x3_rc2::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, // Function implementations for IfcCurveStyleFont boost::optional< std::string > Ifc4x3_rc2::IfcCurveStyleFont::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc4x3_rc2::IfcCurveStyleFontPattern >::ptr Ifc4x3_rc2::IfcCurveStyleFont::PatternList() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcCurveStyleFontPattern >(); } void Ifc4x3_rc2::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc4x3_rc2::IfcCurveStyleFontPattern >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -15431,7 +15431,7 @@ Ifc4x3_rc2::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > // Function implementations for IfcCurveStyleFontAndScaling boost::optional< std::string > Ifc4x3_rc2::IfcCurveStyleFontAndScaling::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc2::IfcCurveStyleFontSelect* Ifc4x3_rc2::IfcCurveStyleFontAndScaling::CurveFont() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCurveStyleFontSelect>(true); } void Ifc4x3_rc2::IfcCurveStyleFontAndScaling::setCurveFont(::Ifc4x3_rc2::IfcCurveStyleFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } double Ifc4x3_rc2::IfcCurveStyleFontAndScaling::CurveFontScaling() const { double v = *data_->getArgument(2); return v; } @@ -15467,7 +15467,7 @@ Ifc4x3_rc2::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4x3_rc2::IfcAxis2P // Function implementations for IfcDamper boost::optional< ::Ifc4x3_rc2::IfcDamperTypeEnum::Value > Ifc4x3_rc2::IfcDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDamper::declaration() const { return *IFC4X3_RC2_IfcDamper_type; } @@ -15507,7 +15507,7 @@ void Ifc4x3_rc2::IfcDerivedProfileDef::setParentProfile(::Ifc4x3_rc2::IfcProfile ::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* Ifc4x3_rc2::IfcDerivedProfileDef::Operator() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcCartesianTransformationOperator2D>(true); } void Ifc4x3_rc2::IfcDerivedProfileDef::setOperator(::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDerivedProfileDef::Label() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDerivedProfileDef::declaration() const { return *IFC4X3_RC2_IfcDerivedProfileDef_type; } @@ -15521,7 +15521,7 @@ void Ifc4x3_rc2::IfcDerivedUnit::setElements(aggregate_of< ::Ifc4x3_rc2::IfcDeri ::Ifc4x3_rc2::IfcDerivedUnitEnum::Value Ifc4x3_rc2::IfcDerivedUnit::UnitType() const { return ::Ifc4x3_rc2::IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); } void Ifc4x3_rc2::IfcDerivedUnit::setUnitType(::Ifc4x3_rc2::IfcDerivedUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDerivedUnitEnum::ToString(v)));data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDerivedUnit::UserDefinedType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDerivedUnit::declaration() const { return *IFC4X3_RC2_IfcDerivedUnit_type; } @@ -15603,7 +15603,7 @@ Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::IfcDirectrixDistanceSweptAreaSol // Function implementations for IfcDiscreteAccessory boost::optional< ::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::Value > Ifc4x3_rc2::IfcDiscreteAccessory::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDiscreteAccessory::declaration() const { return *IFC4X3_RC2_IfcDiscreteAccessory_type; } @@ -15623,7 +15623,7 @@ Ifc4x3_rc2::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_Gl // Function implementations for IfcDistributionBoard boost::optional< ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::Value > Ifc4x3_rc2::IfcDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDistributionBoard::declaration() const { return *IFC4X3_RC2_IfcDistributionBoard_type; } @@ -15643,7 +15643,7 @@ Ifc4x3_rc2::IfcDistributionBoardType::IfcDistributionBoardType(std::string v1_Gl // Function implementations for IfcDistributionChamberElement boost::optional< ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::Value > Ifc4x3_rc2::IfcDistributionChamberElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDistributionChamberElement::declaration() const { return *IFC4X3_RC2_IfcDistributionChamberElement_type; } @@ -15722,11 +15722,11 @@ Ifc4x3_rc2::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std:: // Function implementations for IfcDistributionPort boost::optional< ::Ifc4x3_rc2::IfcFlowDirectionEnum::Value > Ifc4x3_rc2::IfcDistributionPort::FlowDirection() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc2::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_rc2::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFlowDirectionEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_rc2::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFlowDirectionEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::Value > Ifc4x3_rc2::IfcDistributionPort::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionPortTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionPortTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > Ifc4x3_rc2::IfcDistributionPort::SystemType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDistributionSystemEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc2::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDistributionPort::declaration() const { return *IFC4X3_RC2_IfcDistributionPort_type; } @@ -15736,9 +15736,9 @@ Ifc4x3_rc2::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, :: // Function implementations for IfcDistributionSystem boost::optional< std::string > Ifc4x3_rc2::IfcDistributionSystem::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > Ifc4x3_rc2::IfcDistributionSystem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDistributionSystemEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc2::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDistributionSystem::declaration() const { return *IFC4X3_RC2_IfcDistributionSystem_type; } @@ -15752,35 +15752,35 @@ void Ifc4x3_rc2::IfcDocumentInformation::setIdentification(std::string v) { {Ifc std::string Ifc4x3_rc2::IfcDocumentInformation::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcDocumentInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::Location() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::Purpose() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::IntendedUse() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::Scope() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::Revision() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcDocumentInformation::DocumentOwner() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); } void Ifc4x3_rc2::IfcDocumentInformation::setDocumentOwner(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc2::IfcDocumentInformation::Editors() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::CreationTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::LastRevisionTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::ElectronicFormat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::ValidFrom() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::ValidUntil() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc2::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::Value > Ifc4x3_rc2::IfcDocumentInformation::Confidentiality() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); } -void Ifc4x3_rc2::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::ToString(*v)));data_->setArgument(15,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::ToString(*v)));}data_->setArgument(15,attr);} } boost::optional< ::Ifc4x3_rc2::IfcDocumentStatusEnum::Value > Ifc4x3_rc2::IfcDocumentInformation::Status() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); } -void Ifc4x3_rc2::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_rc2::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDocumentStatusEnum::ToString(*v)));data_->setArgument(16,attr);} } +void Ifc4x3_rc2::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_rc2::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDocumentStatusEnum::ToString(*v)));}data_->setArgument(16,attr);} } ::Ifc4x3_rc2::IfcRelAssociatesDocument::list::ptr Ifc4x3_rc2::IfcDocumentInformation::DocumentInfoForObjects() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociatesDocument_type, 5)->as(); } ::Ifc4x3_rc2::IfcDocumentReference::list::ptr Ifc4x3_rc2::IfcDocumentInformation::HasDocumentReferences() const { return data_->getInverse(IFC4X3_RC2_IfcDocumentReference_type, 4)->as(); } @@ -15798,7 +15798,7 @@ void Ifc4x3_rc2::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc4x aggregate_of< ::Ifc4x3_rc2::IfcDocumentInformation >::ptr Ifc4x3_rc2::IfcDocumentInformationRelationship::RelatedDocuments() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcDocumentInformation >(); } void Ifc4x3_rc2::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc4x3_rc2::IfcDocumentInformation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformationRelationship::RelationshipType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDocumentInformationRelationship::declaration() const { return *IFC4X3_RC2_IfcDocumentInformationRelationship_type; } @@ -15808,7 +15808,7 @@ Ifc4x3_rc2::IfcDocumentInformationRelationship::IfcDocumentInformationRelationsh // Function implementations for IfcDocumentReference boost::optional< std::string > Ifc4x3_rc2::IfcDocumentReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc2::IfcDocumentInformation* Ifc4x3_rc2::IfcDocumentReference::ReferencedDocument() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcDocumentInformation>(true); } void Ifc4x3_rc2::IfcDocumentReference::setReferencedDocument(::Ifc4x3_rc2::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -15821,15 +15821,15 @@ Ifc4x3_rc2::IfcDocumentReference::IfcDocumentReference(boost::optional< std::str // Function implementations for IfcDoor boost::optional< double > Ifc4x3_rc2::IfcDoor::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoor::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc2::IfcDoorTypeEnum::Value > Ifc4x3_rc2::IfcDoor::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDoorTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDoorTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDoorTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value > Ifc4x3_rc2::IfcDoor::OperationType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc2::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDoorTypeOperationEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDoorTypeOperationEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDoor::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDoor::declaration() const { return *IFC4X3_RC2_IfcDoor_type; } @@ -15839,31 +15839,31 @@ Ifc4x3_rc2::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHist // Function implementations for IfcDoorLiningProperties boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::ThresholdDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::ThresholdThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::TransomThickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::TransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::LiningOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::ThresholdOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::CasingThickness() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::CasingDepth() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } ::Ifc4x3_rc2::IfcShapeAspect* Ifc4x3_rc2::IfcDoorLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc4x3_rc2::IfcShapeAspect>(true); } void Ifc4x3_rc2::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc4x3_rc2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDoorLiningProperties::declaration() const { return *IFC4X3_RC2_IfcDoorLiningProperties_type; } @@ -15873,11 +15873,11 @@ Ifc4x3_rc2::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_Glob // Function implementations for IfcDoorPanelProperties boost::optional< double > Ifc4x3_rc2::IfcDoorPanelProperties::PanelDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::Value Ifc4x3_rc2::IfcDoorPanelProperties::PanelOperation() const { return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc2::IfcDoorPanelProperties::setPanelOperation(::Ifc4x3_rc2::IfcDoorPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDoorPanelOperationEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcDoorPanelProperties::PanelWidth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc2::IfcDoorPanelPositionEnum::Value Ifc4x3_rc2::IfcDoorPanelProperties::PanelPosition() const { return ::Ifc4x3_rc2::IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc2::IfcDoorPanelProperties::setPanelPosition(::Ifc4x3_rc2::IfcDoorPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDoorPanelPositionEnum::ToString(v)));data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcShapeAspect* Ifc4x3_rc2::IfcDoorPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcShapeAspect>(true); } @@ -15919,9 +15919,9 @@ void Ifc4x3_rc2::IfcDoorType::setPredefinedType(::Ifc4x3_rc2::IfcDoorTypeEnum::V ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value Ifc4x3_rc2::IfcDoorType::OperationType() const { return ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc2::IfcDoorType::setOperationType(::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDoorTypeOperationEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x3_rc2::IfcDoorType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcDoorType::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDoorType::declaration() const { return *IFC4X3_RC2_IfcDoorType_type; } @@ -15947,7 +15947,7 @@ Ifc4x3_rc2::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(s // Function implementations for IfcDuctFitting boost::optional< ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::Value > Ifc4x3_rc2::IfcDuctFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDuctFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDuctFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDuctFitting::declaration() const { return *IFC4X3_RC2_IfcDuctFitting_type; } @@ -15967,7 +15967,7 @@ Ifc4x3_rc2::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcDuctSegment boost::optional< ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::Value > Ifc4x3_rc2::IfcDuctSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDuctSegment::declaration() const { return *IFC4X3_RC2_IfcDuctSegment_type; } @@ -15987,7 +15987,7 @@ Ifc4x3_rc2::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::If // Function implementations for IfcDuctSilencer boost::optional< ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::Value > Ifc4x3_rc2::IfcDuctSilencer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcDuctSilencer::declaration() const { return *IFC4X3_RC2_IfcDuctSilencer_type; } @@ -16007,7 +16007,7 @@ Ifc4x3_rc2::IfcDuctSilencerType::IfcDuctSilencerType(std::string v1_GlobalId, :: // Function implementations for IfcEarthworksCut boost::optional< ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::Value > Ifc4x3_rc2::IfcEarthworksCut::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcEarthworksCut::declaration() const { return *IFC4X3_RC2_IfcEarthworksCut_type; } @@ -16025,7 +16025,7 @@ Ifc4x3_rc2::IfcEarthworksElement::IfcEarthworksElement(std::string v1_GlobalId, // Function implementations for IfcEarthworksFill boost::optional< ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::Value > Ifc4x3_rc2::IfcEarthworksFill::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcEarthworksFill::declaration() const { return *IFC4X3_RC2_IfcEarthworksFill_type; } @@ -16069,7 +16069,7 @@ Ifc4x3_rc2::IfcEdgeLoop::IfcEdgeLoop(aggregate_of< ::Ifc4x3_rc2::IfcOrientedEdge // Function implementations for IfcElectricAppliance boost::optional< ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::Value > Ifc4x3_rc2::IfcElectricAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcElectricAppliance::declaration() const { return *IFC4X3_RC2_IfcElectricAppliance_type; } @@ -16089,7 +16089,7 @@ Ifc4x3_rc2::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_Gl // Function implementations for IfcElectricDistributionBoard boost::optional< ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::Value > Ifc4x3_rc2::IfcElectricDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcElectricDistributionBoard::declaration() const { return *IFC4X3_RC2_IfcElectricDistributionBoard_type; } @@ -16109,7 +16109,7 @@ Ifc4x3_rc2::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(s // Function implementations for IfcElectricFlowStorageDevice boost::optional< ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4x3_rc2::IfcElectricFlowStorageDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcElectricFlowStorageDevice::declaration() const { return *IFC4X3_RC2_IfcElectricFlowStorageDevice_type; } @@ -16129,7 +16129,7 @@ Ifc4x3_rc2::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(s // Function implementations for IfcElectricFlowTreatmentDevice boost::optional< ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > Ifc4x3_rc2::IfcElectricFlowTreatmentDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcElectricFlowTreatmentDevice::declaration() const { return *IFC4X3_RC2_IfcElectricFlowTreatmentDevice_type; } @@ -16149,7 +16149,7 @@ Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceTy // Function implementations for IfcElectricGenerator boost::optional< ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::Value > Ifc4x3_rc2::IfcElectricGenerator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcElectricGenerator::declaration() const { return *IFC4X3_RC2_IfcElectricGenerator_type; } @@ -16169,7 +16169,7 @@ Ifc4x3_rc2::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_Gl // Function implementations for IfcElectricMotor boost::optional< ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::Value > Ifc4x3_rc2::IfcElectricMotor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricMotorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricMotorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcElectricMotor::declaration() const { return *IFC4X3_RC2_IfcElectricMotor_type; } @@ -16189,7 +16189,7 @@ Ifc4x3_rc2::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, // Function implementations for IfcElectricTimeControl boost::optional< ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::Value > Ifc4x3_rc2::IfcElectricTimeControl::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcElectricTimeControl::declaration() const { return *IFC4X3_RC2_IfcElectricTimeControl_type; } @@ -16209,7 +16209,7 @@ Ifc4x3_rc2::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v // Function implementations for IfcElement boost::optional< std::string > Ifc4x3_rc2::IfcElement::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcRelFillsElement::list::ptr Ifc4x3_rc2::IfcElement::FillsVoids() const { return data_->getInverse(IFC4X3_RC2_IfcRelFillsElement_type, 5)->as(); } ::Ifc4x3_rc2::IfcRelConnectsElements::list::ptr Ifc4x3_rc2::IfcElement::ConnectedTo() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsElements_type, 5)->as(); } @@ -16230,9 +16230,9 @@ Ifc4x3_rc2::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwn // Function implementations for IfcElementAssembly boost::optional< ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::Value > Ifc4x3_rc2::IfcElementAssembly::AssemblyPlace() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAssemblyPlaceEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAssemblyPlaceEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::Value > Ifc4x3_rc2::IfcElementAssembly::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc2::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcElementAssembly::declaration() const { return *IFC4X3_RC2_IfcElementAssembly_type; } @@ -16268,7 +16268,7 @@ Ifc4x3_rc2::IfcElementComponentType::IfcElementComponentType(std::string v1_Glob // Function implementations for IfcElementQuantity boost::optional< std::string > Ifc4x3_rc2::IfcElementQuantity::MethodOfMeasurement() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr Ifc4x3_rc2::IfcElementQuantity::Quantities() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcPhysicalQuantity >(); } void Ifc4x3_rc2::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -16280,7 +16280,7 @@ Ifc4x3_rc2::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::If // Function implementations for IfcElementType boost::optional< std::string > Ifc4x3_rc2::IfcElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcElementType::declaration() const { return *IFC4X3_RC2_IfcElementType_type; } @@ -16340,7 +16340,7 @@ Ifc4x3_rc2::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::st // Function implementations for IfcEngine boost::optional< ::Ifc4x3_rc2::IfcEngineTypeEnum::Value > Ifc4x3_rc2::IfcEngine::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEngineTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEngineTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEngineTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcEngine::declaration() const { return *IFC4X3_RC2_IfcEngine_type; } @@ -16360,7 +16360,7 @@ Ifc4x3_rc2::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4x3_rc2:: // Function implementations for IfcEvaporativeCooler boost::optional< ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::Value > Ifc4x3_rc2::IfcEvaporativeCooler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcEvaporativeCooler::declaration() const { return *IFC4X3_RC2_IfcEvaporativeCooler_type; } @@ -16380,7 +16380,7 @@ Ifc4x3_rc2::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_Gl // Function implementations for IfcEvaporator boost::optional< ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::Value > Ifc4x3_rc2::IfcEvaporator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEvaporatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEvaporatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcEvaporator::declaration() const { return *IFC4X3_RC2_IfcEvaporator_type; } @@ -16400,11 +16400,11 @@ Ifc4x3_rc2::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcEvent boost::optional< ::Ifc4x3_rc2::IfcEventTypeEnum::Value > Ifc4x3_rc2::IfcEvent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEventTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc2::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEventTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEventTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value > Ifc4x3_rc2::IfcEvent::EventTriggerType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEventTriggerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEventTriggerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcEvent::UserDefinedEventTriggerType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x3_rc2::IfcEventTime* Ifc4x3_rc2::IfcEvent::EventOccurenceTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcEventTime>(true); } void Ifc4x3_rc2::IfcEvent::setEventOccurenceTime(::Ifc4x3_rc2::IfcEventTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -16416,13 +16416,13 @@ Ifc4x3_rc2::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHi // Function implementations for IfcEventTime boost::optional< std::string > Ifc4x3_rc2::IfcEventTime::ActualDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcEventTime::EarlyDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcEventTime::LateDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcEventTime::ScheduleDate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcEventTime::declaration() const { return *IFC4X3_RC2_IfcEventTime_type; } @@ -16436,7 +16436,7 @@ void Ifc4x3_rc2::IfcEventType::setPredefinedType(::Ifc4x3_rc2::IfcEventTypeEnum: ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value Ifc4x3_rc2::IfcEventType::EventTriggerType() const { return ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc2::IfcEventType::setEventTriggerType(::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcEventTriggerTypeEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcEventType::UserDefinedEventTriggerType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcEventType::declaration() const { return *IFC4X3_RC2_IfcEventType_type; } @@ -16446,9 +16446,9 @@ Ifc4x3_rc2::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4x3_rc2::If // Function implementations for IfcExtendedProperties boost::optional< std::string > Ifc4x3_rc2::IfcExtendedProperties::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcExtendedProperties::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr Ifc4x3_rc2::IfcExtendedProperties::Properties() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcProperty >(); } void Ifc4x3_rc2::IfcExtendedProperties::setProperties(aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -16468,11 +16468,11 @@ Ifc4x3_rc2::IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseE // Function implementations for IfcExternalReference boost::optional< std::string > Ifc4x3_rc2::IfcExternalReference::Location() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcExternalReference::Identification() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcExternalReference::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcExternalReference::ExternalReferenceForResources() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 2)->as(); } @@ -16495,7 +16495,7 @@ Ifc4x3_rc2::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(b // Function implementations for IfcExternalSpatialElement boost::optional< ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::Value > Ifc4x3_rc2::IfcExternalSpatialElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc2::IfcExternalSpatialElement::BoundedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelSpaceBoundary_type, 4)->as(); } @@ -16651,17 +16651,17 @@ Ifc4x3_rc2::IfcFacilityPart::IfcFacilityPart(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcFailureConnectionCondition boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::TensionFailureX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::TensionFailureY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::TensionFailureZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::CompressionFailureX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::CompressionFailureY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::CompressionFailureZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFailureConnectionCondition::declaration() const { return *IFC4X3_RC2_IfcFailureConnectionCondition_type; } @@ -16671,7 +16671,7 @@ Ifc4x3_rc2::IfcFailureConnectionCondition::IfcFailureConnectionCondition(boost:: // Function implementations for IfcFan boost::optional< ::Ifc4x3_rc2::IfcFanTypeEnum::Value > Ifc4x3_rc2::IfcFan::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFanTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFanTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFanTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFan::declaration() const { return *IFC4X3_RC2_IfcFan_type; } @@ -16691,7 +16691,7 @@ Ifc4x3_rc2::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwn // Function implementations for IfcFastener boost::optional< ::Ifc4x3_rc2::IfcFastenerTypeEnum::Value > Ifc4x3_rc2::IfcFastener::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFastenerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFastenerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFastenerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFastener::declaration() const { return *IFC4X3_RC2_IfcFastener_type; } @@ -16739,7 +16739,7 @@ Ifc4x3_rc2::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::stri aggregate_of_instance::ptr Ifc4x3_rc2::IfcFillAreaStyle::FillStyles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcFillAreaStyle::setFillStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc2::IfcFillAreaStyle::ModelOrDraughting() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcFillAreaStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcFillAreaStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFillAreaStyle::declaration() const { return *IFC4X3_RC2_IfcFillAreaStyle_type; } @@ -16781,7 +16781,7 @@ Ifc4x3_rc2::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(aggregate_of< ::Ifc4x3_ // Function implementations for IfcFilter boost::optional< ::Ifc4x3_rc2::IfcFilterTypeEnum::Value > Ifc4x3_rc2::IfcFilter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFilterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFilterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFilterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFilter::declaration() const { return *IFC4X3_RC2_IfcFilter_type; } @@ -16801,7 +16801,7 @@ Ifc4x3_rc2::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4x3_rc2:: // Function implementations for IfcFireSuppressionTerminal boost::optional< ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4x3_rc2::IfcFireSuppressionTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFireSuppressionTerminal::declaration() const { return *IFC4X3_RC2_IfcFireSuppressionTerminal_type; } @@ -16863,7 +16863,7 @@ Ifc4x3_rc2::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcFlowInstrument boost::optional< ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::Value > Ifc4x3_rc2::IfcFlowInstrument::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFlowInstrument::declaration() const { return *IFC4X3_RC2_IfcFlowInstrument_type; } @@ -16883,7 +16883,7 @@ Ifc4x3_rc2::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId // Function implementations for IfcFlowMeter boost::optional< ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::Value > Ifc4x3_rc2::IfcFlowMeter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFlowMeterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFlowMeterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFlowMeter::declaration() const { return *IFC4X3_RC2_IfcFlowMeter_type; } @@ -16983,7 +16983,7 @@ Ifc4x3_rc2::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v // Function implementations for IfcFooting boost::optional< ::Ifc4x3_rc2::IfcFootingTypeEnum::Value > Ifc4x3_rc2::IfcFooting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFootingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFootingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFootingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFooting::declaration() const { return *IFC4X3_RC2_IfcFooting_type; } @@ -17019,7 +17019,7 @@ Ifc4x3_rc2::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_Gl // Function implementations for IfcFurniture boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > Ifc4x3_rc2::IfcFurniture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFurniture::declaration() const { return *IFC4X3_RC2_IfcFurniture_type; } @@ -17031,7 +17031,7 @@ Ifc4x3_rc2::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4x3_rc2::If ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::Value Ifc4x3_rc2::IfcFurnitureType::AssemblyPlace() const { return ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc2::IfcFurnitureType::setAssemblyPlace(::Ifc4x3_rc2::IfcAssemblyPlaceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAssemblyPlaceEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > Ifc4x3_rc2::IfcFurnitureType::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcFurnitureType::declaration() const { return *IFC4X3_RC2_IfcFurnitureType_type; } @@ -17041,7 +17041,7 @@ Ifc4x3_rc2::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4x3 // Function implementations for IfcGeographicElement boost::optional< ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::Value > Ifc4x3_rc2::IfcGeographicElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcGeographicElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcGeographicElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcGeographicElement::declaration() const { return *IFC4X3_RC2_IfcGeographicElement_type; } @@ -17071,7 +17071,7 @@ Ifc4x3_rc2::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of_instance::pt int Ifc4x3_rc2::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { int v = *data_->getArgument(2); return v; } void Ifc4x3_rc2::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcGeometricRepresentationContext::Precision() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc2::IfcAxis2Placement* Ifc4x3_rc2::IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcAxis2Placement>(true); } void Ifc4x3_rc2::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc4x3_rc2::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } ::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcGeometricRepresentationContext::TrueNorth() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcDirection>(true); } @@ -17097,11 +17097,11 @@ Ifc4x3_rc2::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : I ::Ifc4x3_rc2::IfcGeometricRepresentationContext* Ifc4x3_rc2::IfcGeometricRepresentationSubContext::ParentContext() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcGeometricRepresentationContext>(true); } void Ifc4x3_rc2::IfcGeometricRepresentationSubContext::setParentContext(::Ifc4x3_rc2::IfcGeometricRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcGeometricRepresentationSubContext::TargetScale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcGeometricProjectionEnum::Value Ifc4x3_rc2::IfcGeometricRepresentationSubContext::TargetView() const { return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc2::IfcGeometricRepresentationSubContext::setTargetView(::Ifc4x3_rc2::IfcGeometricProjectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcGeometricProjectionEnum::ToString(v)));data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcGeometricRepresentationSubContext::declaration() const { return *IFC4X3_RC2_IfcGeometricRepresentationSubContext_type; } @@ -17179,9 +17179,9 @@ void Ifc4x3_rc2::IfcGrid::setUAxes(aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::pt aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr Ifc4x3_rc2::IfcGrid::VAxes() const { aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc2::IfcGridAxis >(); } void Ifc4x3_rc2::IfcGrid::setVAxes(aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr > Ifc4x3_rc2::IfcGrid::WAxes() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc2::IfcGridAxis >(); } -void Ifc4x3_rc2::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc2::IfcGridTypeEnum::Value > Ifc4x3_rc2::IfcGrid::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcGridTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcGridTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcGridTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcGrid::declaration() const { return *IFC4X3_RC2_IfcGrid_type; } @@ -17191,7 +17191,7 @@ Ifc4x3_rc2::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHist // Function implementations for IfcGridAxis boost::optional< std::string > Ifc4x3_rc2::IfcGridAxis::AxisTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcGridAxis::AxisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCurve>(true); } void Ifc4x3_rc2::IfcGridAxis::setAxisCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } bool Ifc4x3_rc2::IfcGridAxis::SameSense() const { bool v = *data_->getArgument(2); return v; } @@ -17242,7 +17242,7 @@ Ifc4x3_rc2::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4x3_rc2::IfcSurface* v1_Ba // Function implementations for IfcHeatExchanger boost::optional< ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::Value > Ifc4x3_rc2::IfcHeatExchanger::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcHeatExchanger::declaration() const { return *IFC4X3_RC2_IfcHeatExchanger_type; } @@ -17262,7 +17262,7 @@ Ifc4x3_rc2::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, // Function implementations for IfcHumidifier boost::optional< ::Ifc4x3_rc2::IfcHumidifierTypeEnum::Value > Ifc4x3_rc2::IfcHumidifier::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcHumidifierTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcHumidifierTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcHumidifier::declaration() const { return *IFC4X3_RC2_IfcHumidifier_type; } @@ -17290,11 +17290,11 @@ void Ifc4x3_rc2::IfcIShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc2::IfcIShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcIShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcIShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc2::IfcIShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcIShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcIShapeProfileDef_type; } @@ -17334,7 +17334,7 @@ Ifc4x3_rc2::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(std::st // Function implementations for IfcInclinedReferenceSweptAreaSolid boost::optional< bool > Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::FixedAxisVertical() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } bool v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::setFixedAxisVertical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::setFixedAxisVertical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcAxisLateralInclination* Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::Inclinating() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcAxisLateralInclination>(true); } void Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::setInclinating(::Ifc4x3_rc2::IfcAxisLateralInclination* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -17348,7 +17348,7 @@ Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::IfcInclinedReferenceSweptAreaSol ::Ifc4x3_rc2::IfcTessellatedFaceSet* Ifc4x3_rc2::IfcIndexedColourMap::MappedTo() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcTessellatedFaceSet>(true); } void Ifc4x3_rc2::IfcIndexedColourMap::setMappedTo(::Ifc4x3_rc2::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc2::IfcIndexedColourMap::Opacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc2::IfcColourRgbList* Ifc4x3_rc2::IfcIndexedColourMap::Colours() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcColourRgbList>(true); } void Ifc4x3_rc2::IfcIndexedColourMap::setColours(::Ifc4x3_rc2::IfcColourRgbList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::vector< int > /*[1:?]*/ Ifc4x3_rc2::IfcIndexedColourMap::ColourIndex() const { std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } @@ -17364,9 +17364,9 @@ Ifc4x3_rc2::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4x3_rc2::IfcTessellate ::Ifc4x3_rc2::IfcCartesianPointList* Ifc4x3_rc2::IfcIndexedPolyCurve::Points() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCartesianPointList>(true); } void Ifc4x3_rc2::IfcIndexedPolyCurve::setPoints(::Ifc4x3_rc2::IfcCartesianPointList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc2::IfcIndexedPolyCurve::Segments() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc2::IfcIndexedPolyCurve::SelfIntersect() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcIndexedPolyCurve::declaration() const { return *IFC4X3_RC2_IfcIndexedPolyCurve_type; } @@ -17409,7 +17409,7 @@ Ifc4x3_rc2::IfcIndexedTextureMap::IfcIndexedTextureMap(aggregate_of< ::Ifc4x3_rc // Function implementations for IfcIndexedTriangleTextureMap boost::optional< std::vector< std::vector< int > > > Ifc4x3_rc2::IfcIndexedTriangleTextureMap::TexCoordIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcIndexedTriangleTextureMap::declaration() const { return *IFC4X3_RC2_IfcIndexedTriangleTextureMap_type; } @@ -17419,7 +17419,7 @@ Ifc4x3_rc2::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(aggregate // Function implementations for IfcInterceptor boost::optional< ::Ifc4x3_rc2::IfcInterceptorTypeEnum::Value > Ifc4x3_rc2::IfcInterceptor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcInterceptorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcInterceptorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcInterceptorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcInterceptor::declaration() const { return *IFC4X3_RC2_IfcInterceptor_type; } @@ -17447,13 +17447,13 @@ Ifc4x3_rc2::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4x3_rc2::IfcCurve* v // Function implementations for IfcInventory boost::optional< ::Ifc4x3_rc2::IfcInventoryTypeEnum::Value > Ifc4x3_rc2::IfcInventory::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc2::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcInventoryTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcInventoryTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcInventory::Jurisdiction() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); } void Ifc4x3_rc2::IfcInventory::setJurisdiction(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > Ifc4x3_rc2::IfcInventory::ResponsiblePersons() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcPerson >(); } -void Ifc4x3_rc2::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcInventory::LastUpdateDate() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcInventory::CurrentValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcCostValue>(true); } void Ifc4x3_rc2::IfcInventory::setCurrentValue(::Ifc4x3_rc2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcInventory::OriginalValue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcCostValue>(true); } @@ -17489,7 +17489,7 @@ Ifc4x3_rc2::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string // Function implementations for IfcJunctionBox boost::optional< ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::Value > Ifc4x3_rc2::IfcJunctionBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcJunctionBox::declaration() const { return *IFC4X3_RC2_IfcJunctionBox_type; } @@ -17531,15 +17531,15 @@ Ifc4x3_rc2::IfcKerbType::IfcKerbType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO double Ifc4x3_rc2::IfcLShapeProfileDef::Depth() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcLShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcLShapeProfileDef::Width() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } double Ifc4x3_rc2::IfcLShapeProfileDef::Thickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x3_rc2::IfcLShapeProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcLShapeProfileDef::FilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcLShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcLShapeProfileDef::LegSlope() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcLShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcLShapeProfileDef_type; } @@ -17549,7 +17549,7 @@ Ifc4x3_rc2::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4x3_rc2::IfcProfileTyp // Function implementations for IfcLaborResource boost::optional< ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::Value > Ifc4x3_rc2::IfcLaborResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLaborResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLaborResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcLaborResource::declaration() const { return *IFC4X3_RC2_IfcLaborResource_type; } @@ -17581,7 +17581,7 @@ Ifc4x3_rc2::IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost // Function implementations for IfcLamp boost::optional< ::Ifc4x3_rc2::IfcLampTypeEnum::Value > Ifc4x3_rc2::IfcLamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcLampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcLamp::declaration() const { return *IFC4X3_RC2_IfcLamp_type; } @@ -17603,15 +17603,15 @@ Ifc4x3_rc2::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO std::string Ifc4x3_rc2::IfcLibraryInformation::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc2::IfcLibraryInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcLibraryInformation::Version() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcLibraryInformation::Publisher() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); } void Ifc4x3_rc2::IfcLibraryInformation::setPublisher(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcLibraryInformation::VersionDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcLibraryInformation::Location() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcLibraryInformation::Description() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcRelAssociatesLibrary::list::ptr Ifc4x3_rc2::IfcLibraryInformation::LibraryInfoForObjects() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociatesLibrary_type, 5)->as(); } ::Ifc4x3_rc2::IfcLibraryReference::list::ptr Ifc4x3_rc2::IfcLibraryInformation::HasLibraryReferences() const { return data_->getInverse(IFC4X3_RC2_IfcLibraryReference_type, 5)->as(); } @@ -17623,9 +17623,9 @@ Ifc4x3_rc2::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, bo // Function implementations for IfcLibraryReference boost::optional< std::string > Ifc4x3_rc2::IfcLibraryReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcLibraryReference::Language() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc2::IfcLibraryInformation* Ifc4x3_rc2::IfcLibraryReference::ReferencedLibrary() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcLibraryInformation>(true); } void Ifc4x3_rc2::IfcLibraryReference::setReferencedLibrary(::Ifc4x3_rc2::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -17652,7 +17652,7 @@ Ifc4x3_rc2::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPla // Function implementations for IfcLightFixture boost::optional< ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::Value > Ifc4x3_rc2::IfcLightFixture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLightFixtureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLightFixtureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcLightFixture::declaration() const { return *IFC4X3_RC2_IfcLightFixture_type; } @@ -17684,13 +17684,13 @@ Ifc4x3_rc2::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4x // Function implementations for IfcLightSource boost::optional< std::string > Ifc4x3_rc2::IfcLightSource::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc2::IfcColourRgb* Ifc4x3_rc2::IfcLightSource::LightColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcColourRgb>(true); } void Ifc4x3_rc2::IfcLightSource::setLightColour(::Ifc4x3_rc2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcLightSource::AmbientIntensity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcLightSource::Intensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcLightSource::declaration() const { return *IFC4X3_RC2_IfcLightSource_type; } @@ -17758,7 +17758,7 @@ Ifc4x3_rc2::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< ::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcLightSourceSpot::Orientation() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcDirection>(true); } void Ifc4x3_rc2::IfcLightSourceSpot::setOrientation(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcLightSourceSpot::ConcentrationExponent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } double Ifc4x3_rc2::IfcLightSourceSpot::SpreadAngle() const { double v = *data_->getArgument(11); return v; } void Ifc4x3_rc2::IfcLightSourceSpot::setSpreadAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } double Ifc4x3_rc2::IfcLightSourceSpot::BeamWidthAngle() const { double v = *data_->getArgument(12); return v; } @@ -17858,7 +17858,7 @@ Ifc4x3_rc2::IfcLinearSpanPlacement::IfcLinearSpanPlacement(::Ifc4x3_rc2::IfcObje // Function implementations for IfcLiquidTerminal boost::optional< ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::Value > Ifc4x3_rc2::IfcLiquidTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcLiquidTerminal::declaration() const { return *IFC4X3_RC2_IfcLiquidTerminal_type; } @@ -17912,11 +17912,11 @@ void Ifc4x3_rc2::IfcMapConversion::setNorthings(double v) { {IfcWrite::IfcWriteA double Ifc4x3_rc2::IfcMapConversion::OrthogonalHeight() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc2::IfcMapConversion::setOrthogonalHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc2::IfcMapConversion::XAxisAbscissa() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcMapConversion::XAxisOrdinate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcMapConversion::Scale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMapConversion::declaration() const { return *IFC4X3_RC2_IfcMapConversion_type; } @@ -17950,9 +17950,9 @@ Ifc4x3_rc2::IfcMarineFacility::IfcMarineFacility(std::string v1_GlobalId, ::Ifc4 std::string Ifc4x3_rc2::IfcMaterial::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc2::IfcMaterial::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterial::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterial::Category() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcMaterialDefinitionRepresentation::list::ptr Ifc4x3_rc2::IfcMaterial::HasRepresentation() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type, 3)->as(); } ::Ifc4x3_rc2::IfcMaterialRelationship::list::ptr Ifc4x3_rc2::IfcMaterial::IsRelatedWith() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialRelationship_type, 3)->as(); } @@ -17977,15 +17977,15 @@ Ifc4x3_rc2::IfcMaterialClassificationRelationship::IfcMaterialClassificationRela // Function implementations for IfcMaterialConstituent boost::optional< std::string > Ifc4x3_rc2::IfcMaterialConstituent::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialConstituent::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc2::IfcMaterial* Ifc4x3_rc2::IfcMaterialConstituent::Material() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcMaterial>(true); } void Ifc4x3_rc2::IfcMaterialConstituent::setMaterial(::Ifc4x3_rc2::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcMaterialConstituent::Fraction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialConstituent::Category() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc2::IfcMaterialConstituentSet::list::ptr Ifc4x3_rc2::IfcMaterialConstituent::ToMaterialConstituentSet() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialConstituentSet_type, 2)->as(); } @@ -17996,11 +17996,11 @@ Ifc4x3_rc2::IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std: // Function implementations for IfcMaterialConstituentSet boost::optional< std::string > Ifc4x3_rc2::IfcMaterialConstituentSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialConstituentSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcMaterialConstituent >::ptr > Ifc4x3_rc2::IfcMaterialConstituentSet::MaterialConstituents() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcMaterialConstituent >(); } -void Ifc4x3_rc2::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMaterialConstituentSet::declaration() const { return *IFC4X3_RC2_IfcMaterialConstituentSet_type; } @@ -18035,15 +18035,15 @@ void Ifc4x3_rc2::IfcMaterialLayer::setMaterial(::Ifc4x3_rc2::IfcMaterial* v) { { double Ifc4x3_rc2::IfcMaterialLayer::LayerThickness() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcMaterialLayer::setLayerThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< boost::logic::tribool > Ifc4x3_rc2::IfcMaterialLayer::IsVentilated() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } boost::logic::tribool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialLayer::Name() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialLayer::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialLayer::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x3_rc2::IfcMaterialLayer::Priority() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc2::IfcMaterialLayerSet::list::ptr Ifc4x3_rc2::IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialLayerSet_type, 0)->as(); } @@ -18056,9 +18056,9 @@ Ifc4x3_rc2::IfcMaterialLayer::IfcMaterialLayer(::Ifc4x3_rc2::IfcMaterial* v1_Mat aggregate_of< ::Ifc4x3_rc2::IfcMaterialLayer >::ptr Ifc4x3_rc2::IfcMaterialLayerSet::MaterialLayers() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcMaterialLayer >(); } void Ifc4x3_rc2::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc4x3_rc2::IfcMaterialLayer >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialLayerSet::LayerSetName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialLayerSet::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMaterialLayerSet::declaration() const { return *IFC4X3_RC2_IfcMaterialLayerSet_type; } @@ -18076,7 +18076,7 @@ void Ifc4x3_rc2::IfcMaterialLayerSetUsage::setDirectionSense(::Ifc4x3_rc2::IfcDi double Ifc4x3_rc2::IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMaterialLayerSetUsage::declaration() const { return *IFC4X3_RC2_IfcMaterialLayerSetUsage_type; } @@ -18108,17 +18108,17 @@ Ifc4x3_rc2::IfcMaterialList::IfcMaterialList(aggregate_of< ::Ifc4x3_rc2::IfcMate // Function implementations for IfcMaterialProfile boost::optional< std::string > Ifc4x3_rc2::IfcMaterialProfile::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialProfile::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc2::IfcMaterial* Ifc4x3_rc2::IfcMaterialProfile::Material() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcMaterial>(true); } void Ifc4x3_rc2::IfcMaterialProfile::setMaterial(::Ifc4x3_rc2::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcProfileDef* Ifc4x3_rc2::IfcMaterialProfile::Profile() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); } void Ifc4x3_rc2::IfcMaterialProfile::setProfile(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc2::IfcMaterialProfile::Priority() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialProfile::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcMaterialProfileSet::list::ptr Ifc4x3_rc2::IfcMaterialProfile::ToMaterialProfileSet() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialProfileSet_type, 2)->as(); } @@ -18129,9 +18129,9 @@ Ifc4x3_rc2::IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string // Function implementations for IfcMaterialProfileSet boost::optional< std::string > Ifc4x3_rc2::IfcMaterialProfileSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialProfileSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc2::IfcMaterialProfile >::ptr Ifc4x3_rc2::IfcMaterialProfileSet::MaterialProfiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcMaterialProfile >(); } void Ifc4x3_rc2::IfcMaterialProfileSet::setMaterialProfiles(aggregate_of< ::Ifc4x3_rc2::IfcMaterialProfile >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcCompositeProfileDef* Ifc4x3_rc2::IfcMaterialProfileSet::CompositeProfile() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcCompositeProfileDef>(true); } @@ -18147,9 +18147,9 @@ Ifc4x3_rc2::IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::s ::Ifc4x3_rc2::IfcMaterialProfileSet* Ifc4x3_rc2::IfcMaterialProfileSetUsage::ForProfileSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcMaterialProfileSet>(true); } void Ifc4x3_rc2::IfcMaterialProfileSetUsage::setForProfileSet(::Ifc4x3_rc2::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< int > Ifc4x3_rc2::IfcMaterialProfileSetUsage::CardinalPoint() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfileSetUsage::declaration() const { return *IFC4X3_RC2_IfcMaterialProfileSetUsage_type; } @@ -18161,7 +18161,7 @@ Ifc4x3_rc2::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4x3_rc2: ::Ifc4x3_rc2::IfcMaterialProfileSet* Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcMaterialProfileSet>(true); } void Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(::Ifc4x3_rc2::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::declaration() const { return *IFC4X3_RC2_IfcMaterialProfileSetUsageTapering_type; } @@ -18195,7 +18195,7 @@ void Ifc4x3_rc2::IfcMaterialRelationship::setRelatingMaterial(::Ifc4x3_rc2::IfcM aggregate_of< ::Ifc4x3_rc2::IfcMaterial >::ptr Ifc4x3_rc2::IfcMaterialRelationship::RelatedMaterials() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcMaterial >(); } void Ifc4x3_rc2::IfcMaterialRelationship::setRelatedMaterials(aggregate_of< ::Ifc4x3_rc2::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMaterialRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMaterialRelationship::declaration() const { return *IFC4X3_RC2_IfcMaterialRelationship_type; } @@ -18226,11 +18226,11 @@ Ifc4x3_rc2::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4x3_rc2::IfcValue* v1_Va // Function implementations for IfcMechanicalFastener boost::optional< double > Ifc4x3_rc2::IfcMechanicalFastener::NominalDiameter() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc2::IfcMechanicalFastener::NominalLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Value > Ifc4x3_rc2::IfcMechanicalFastener::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMechanicalFastener::declaration() const { return *IFC4X3_RC2_IfcMechanicalFastener_type; } @@ -18242,9 +18242,9 @@ Ifc4x3_rc2::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Value Ifc4x3_rc2::IfcMechanicalFastenerType::PredefinedType() const { return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc2::IfcMechanicalFastenerType::setPredefinedType(::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcMechanicalFastenerType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcMechanicalFastenerType::NominalLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMechanicalFastenerType::declaration() const { return *IFC4X3_RC2_IfcMechanicalFastenerType_type; } @@ -18254,7 +18254,7 @@ Ifc4x3_rc2::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_ // Function implementations for IfcMedicalDevice boost::optional< ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::Value > Ifc4x3_rc2::IfcMedicalDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMedicalDevice::declaration() const { return *IFC4X3_RC2_IfcMedicalDevice_type; } @@ -18274,7 +18274,7 @@ Ifc4x3_rc2::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, // Function implementations for IfcMember boost::optional< ::Ifc4x3_rc2::IfcMemberTypeEnum::Value > Ifc4x3_rc2::IfcMember::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMemberTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMemberTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMemberTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMember::declaration() const { return *IFC4X3_RC2_IfcMember_type; } @@ -18304,7 +18304,7 @@ Ifc4x3_rc2::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4x3_rc2:: ::Ifc4x3_rc2::IfcBenchmarkEnum::Value Ifc4x3_rc2::IfcMetric::Benchmark() const { return ::Ifc4x3_rc2::IfcBenchmarkEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc2::IfcMetric::setBenchmark(::Ifc4x3_rc2::IfcBenchmarkEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBenchmarkEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcMetric::ValueSource() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcMetricValueSelect* Ifc4x3_rc2::IfcMetric::DataValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcMetricValueSelect>(true); } void Ifc4x3_rc2::IfcMetric::setDataValue(::Ifc4x3_rc2::IfcMetricValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x3_rc2::IfcReference* Ifc4x3_rc2::IfcMetric::ReferencePath() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcReference>(true); } @@ -18326,7 +18326,7 @@ Ifc4x3_rc2::IfcMirroredProfileDef::IfcMirroredProfileDef(::Ifc4x3_rc2::IfcProfil // Function implementations for IfcMobileTelecommunicationsAppliance boost::optional< ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance::declaration() const { return *IFC4X3_RC2_IfcMobileTelecommunicationsAppliance_type; } @@ -18356,7 +18356,7 @@ Ifc4x3_rc2::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil: // Function implementations for IfcMooringDevice boost::optional< ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::Value > Ifc4x3_rc2::IfcMooringDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMooringDevice::declaration() const { return *IFC4X3_RC2_IfcMooringDevice_type; } @@ -18376,7 +18376,7 @@ Ifc4x3_rc2::IfcMooringDeviceType::IfcMooringDeviceType(std::string v1_GlobalId, // Function implementations for IfcMotorConnection boost::optional< ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::Value > Ifc4x3_rc2::IfcMotorConnection::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcMotorConnection::declaration() const { return *IFC4X3_RC2_IfcMotorConnection_type; } @@ -18408,7 +18408,7 @@ Ifc4x3_rc2::IfcNamedUnit::IfcNamedUnit(::Ifc4x3_rc2::IfcDimensionalExponents* v1 // Function implementations for IfcNavigationElement boost::optional< ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::Value > Ifc4x3_rc2::IfcNavigationElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcNavigationElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcNavigationElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcNavigationElement::declaration() const { return *IFC4X3_RC2_IfcNavigationElement_type; } @@ -18428,7 +18428,7 @@ Ifc4x3_rc2::IfcNavigationElementType::IfcNavigationElementType(std::string v1_Gl // Function implementations for IfcObject boost::optional< std::string > Ifc4x3_rc2::IfcObject::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc2::IfcRelDefinesByObject::list::ptr Ifc4x3_rc2::IfcObject::IsDeclaredBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByObject_type, 4)->as(); } ::Ifc4x3_rc2::IfcRelDefinesByObject::list::ptr Ifc4x3_rc2::IfcObject::Declares() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByObject_type, 5)->as(); } @@ -18468,13 +18468,13 @@ Ifc4x3_rc2::IfcObjectPlacement::IfcObjectPlacement(::Ifc4x3_rc2::IfcObjectPlacem // Function implementations for IfcObjective boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcConstraint >::ptr > Ifc4x3_rc2::IfcObjective::BenchmarkValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcConstraint >(); } -void Ifc4x3_rc2::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc2::IfcLogicalOperatorEnum::Value > Ifc4x3_rc2::IfcObjective::LogicalAggregator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcLogicalOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_rc2::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLogicalOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_rc2::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLogicalOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcObjectiveEnum::Value Ifc4x3_rc2::IfcObjective::ObjectiveQualifier() const { return ::Ifc4x3_rc2::IfcObjectiveEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc2::IfcObjective::setObjectiveQualifier(::Ifc4x3_rc2::IfcObjectiveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcObjectiveEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcObjective::UserDefinedQualifier() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcObjective::declaration() const { return *IFC4X3_RC2_IfcObjective_type; } @@ -18484,7 +18484,7 @@ Ifc4x3_rc2::IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std // Function implementations for IfcOccupant boost::optional< ::Ifc4x3_rc2::IfcOccupantTypeEnum::Value > Ifc4x3_rc2::IfcOccupant::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcOccupantTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc2::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcOccupantTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcOccupantTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcOccupant::declaration() const { return *IFC4X3_RC2_IfcOccupant_type; } @@ -18532,7 +18532,7 @@ Ifc4x3_rc2::IfcOffsetCurve3D::IfcOffsetCurve3D(::Ifc4x3_rc2::IfcCurve* v1_BasisC aggregate_of< ::Ifc4x3_rc2::IfcPointByDistanceExpression >::ptr Ifc4x3_rc2::IfcOffsetCurveByDistances::OffsetValues() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcPointByDistanceExpression >(); } void Ifc4x3_rc2::IfcOffsetCurveByDistances::setOffsetValues(aggregate_of< ::Ifc4x3_rc2::IfcPointByDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcOffsetCurveByDistances::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcOffsetCurveByDistances::declaration() const { return *IFC4X3_RC2_IfcOffsetCurveByDistances_type; } @@ -18548,7 +18548,7 @@ void Ifc4x3_rc2::IfcOpenCrossProfileDef::setWidths(std::vector< double > /*[1:?] std::vector< double > /*[1:?]*/ Ifc4x3_rc2::IfcOpenCrossProfileDef::Slopes() const { std::vector< double > /*[1:?]*/ v = *data_->getArgument(4); return v; } void Ifc4x3_rc2::IfcOpenCrossProfileDef::setSlopes(std::vector< double > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[2:?]*/ > Ifc4x3_rc2::IfcOpenCrossProfileDef::Tags() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[2:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcOpenCrossProfileDef::declaration() const { return *IFC4X3_RC2_IfcOpenCrossProfileDef_type; } @@ -18566,7 +18566,7 @@ Ifc4x3_rc2::IfcOpenShell::IfcOpenShell(aggregate_of< ::Ifc4x3_rc2::IfcFace >::pt // Function implementations for IfcOpeningElement boost::optional< ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::Value > Ifc4x3_rc2::IfcOpeningElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcOpeningElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcOpeningElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcRelFillsElement::list::ptr Ifc4x3_rc2::IfcOpeningElement::HasFillings() const { return data_->getInverse(IFC4X3_RC2_IfcRelFillsElement_type, 4)->as(); } @@ -18585,15 +18585,15 @@ Ifc4x3_rc2::IfcOpeningStandardCase::IfcOpeningStandardCase(std::string v1_Global // Function implementations for IfcOrganization boost::optional< std::string > Ifc4x3_rc2::IfcOrganization::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } std::string Ifc4x3_rc2::IfcOrganization::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcOrganization::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcOrganization::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > Ifc4x3_rc2::IfcOrganization::Roles() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcActorRole >(); } -void Ifc4x3_rc2::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > Ifc4x3_rc2::IfcOrganization::Addresses() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcAddress >(); } -void Ifc4x3_rc2::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(4,attr);} } ::Ifc4x3_rc2::IfcOrganizationRelationship::list::ptr Ifc4x3_rc2::IfcOrganization::IsRelatedBy() const { return data_->getInverse(IFC4X3_RC2_IfcOrganizationRelationship_type, 3)->as(); } ::Ifc4x3_rc2::IfcOrganizationRelationship::list::ptr Ifc4x3_rc2::IfcOrganization::Relates() const { return data_->getInverse(IFC4X3_RC2_IfcOrganizationRelationship_type, 2)->as(); } @@ -18638,7 +18638,7 @@ Ifc4x3_rc2::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(aggregate_of< ::Ifc4x3_ // Function implementations for IfcOutlet boost::optional< ::Ifc4x3_rc2::IfcOutletTypeEnum::Value > Ifc4x3_rc2::IfcOutlet::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcOutletTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcOutletTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcOutletTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcOutlet::declaration() const { return *IFC4X3_RC2_IfcOutlet_type; } @@ -18662,11 +18662,11 @@ void Ifc4x3_rc2::IfcOwnerHistory::setOwningUser(::Ifc4x3_rc2::IfcPersonAndOrgani ::Ifc4x3_rc2::IfcApplication* Ifc4x3_rc2::IfcOwnerHistory::OwningApplication() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcApplication>(true); } void Ifc4x3_rc2::IfcOwnerHistory::setOwningApplication(::Ifc4x3_rc2::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > Ifc4x3_rc2::IfcOwnerHistory::State() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcStateEnum::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc2::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStateEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStateEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< ::Ifc4x3_rc2::IfcChangeActionEnum::Value > Ifc4x3_rc2::IfcOwnerHistory::ChangeAction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcChangeActionEnum::FromString(*data_->getArgument(3)); } -void Ifc4x3_rc2::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_rc2::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcChangeActionEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_rc2::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcChangeActionEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc2::IfcOwnerHistory::LastModifiedDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc2::IfcPersonAndOrganization* Ifc4x3_rc2::IfcOwnerHistory::LastModifyingUser() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcPersonAndOrganization>(true); } void Ifc4x3_rc2::IfcOwnerHistory::setLastModifyingUser(::Ifc4x3_rc2::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcApplication* Ifc4x3_rc2::IfcOwnerHistory::LastModifyingApplication() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcApplication>(true); } @@ -18702,7 +18702,7 @@ Ifc4x3_rc2::IfcPath::IfcPath(aggregate_of< ::Ifc4x3_rc2::IfcOrientedEdge >::ptr // Function implementations for IfcPavement boost::optional< bool > Ifc4x3_rc2::IfcPavement::Flexible() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } bool v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcPavement::setFlexible(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcPavement::setFlexible(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPavement::declaration() const { return *IFC4X3_RC2_IfcPavement_type; } @@ -18736,7 +18736,7 @@ Ifc4x3_rc2::IfcPcurve::IfcPcurve(::Ifc4x3_rc2::IfcSurface* v1_BasisSurface, ::If std::string Ifc4x3_rc2::IfcPerformanceHistory::LifeCyclePhase() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcPerformanceHistory::setLifeCyclePhase(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::Value > Ifc4x3_rc2::IfcPerformanceHistory::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc2::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPerformanceHistory::declaration() const { return *IFC4X3_RC2_IfcPerformanceHistory_type; } @@ -18750,9 +18750,9 @@ void Ifc4x3_rc2::IfcPermeableCoveringProperties::setOperationType(::Ifc4x3_rc2:: ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::Value Ifc4x3_rc2::IfcPermeableCoveringProperties::PanelPosition() const { return ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc2::IfcPermeableCoveringProperties::setPanelPosition(::Ifc4x3_rc2::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcPermeableCoveringProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcPermeableCoveringProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcShapeAspect* Ifc4x3_rc2::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcShapeAspect>(true); } void Ifc4x3_rc2::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc4x3_rc2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -18764,11 +18764,11 @@ Ifc4x3_rc2::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std:: // Function implementations for IfcPermit boost::optional< ::Ifc4x3_rc2::IfcPermitTypeEnum::Value > Ifc4x3_rc2::IfcPermit::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPermitTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc2::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPermitTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPermitTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPermit::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPermit::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPermit::declaration() const { return *IFC4X3_RC2_IfcPermit_type; } @@ -18778,21 +18778,21 @@ Ifc4x3_rc2::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwner // Function implementations for IfcPerson boost::optional< std::string > Ifc4x3_rc2::IfcPerson::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPerson::FamilyName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPerson::GivenName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcPerson::MiddleNames() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcPerson::PrefixTitles() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcPerson::SuffixTitles() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > Ifc4x3_rc2::IfcPerson::Roles() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc2::IfcActorRole >(); } -void Ifc4x3_rc2::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > Ifc4x3_rc2::IfcPerson::Addresses() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcAddress >(); } -void Ifc4x3_rc2::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcPersonAndOrganization::list::ptr Ifc4x3_rc2::IfcPerson::EngagedIn() const { return data_->getInverse(IFC4X3_RC2_IfcPersonAndOrganization_type, 0)->as(); } @@ -18807,7 +18807,7 @@ void Ifc4x3_rc2::IfcPersonAndOrganization::setThePerson(::Ifc4x3_rc2::IfcPerson* ::Ifc4x3_rc2::IfcOrganization* Ifc4x3_rc2::IfcPersonAndOrganization::TheOrganization() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcOrganization>(true); } void Ifc4x3_rc2::IfcPersonAndOrganization::setTheOrganization(::Ifc4x3_rc2::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > Ifc4x3_rc2::IfcPersonAndOrganization::Roles() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcActorRole >(); } -void Ifc4x3_rc2::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPersonAndOrganization::declaration() const { return *IFC4X3_RC2_IfcPersonAndOrganization_type; } @@ -18821,9 +18821,9 @@ void Ifc4x3_rc2::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::If std::string Ifc4x3_rc2::IfcPhysicalComplexQuantity::Discrimination() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPhysicalComplexQuantity::Quality() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPhysicalComplexQuantity::Usage() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPhysicalComplexQuantity::declaration() const { return *IFC4X3_RC2_IfcPhysicalComplexQuantity_type; } @@ -18835,7 +18835,7 @@ Ifc4x3_rc2::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v std::string Ifc4x3_rc2::IfcPhysicalQuantity::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc2::IfcPhysicalQuantity::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPhysicalQuantity::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcPhysicalQuantity::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc2::IfcPhysicalComplexQuantity::list::ptr Ifc4x3_rc2::IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(IFC4X3_RC2_IfcPhysicalComplexQuantity_type, 2)->as(); } @@ -18857,9 +18857,9 @@ Ifc4x3_rc2::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_ // Function implementations for IfcPile boost::optional< ::Ifc4x3_rc2::IfcPileTypeEnum::Value > Ifc4x3_rc2::IfcPile::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPileTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPileTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPileTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc2::IfcPileConstructionEnum::Value > Ifc4x3_rc2::IfcPile::ConstructionType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPileConstructionEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc2::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_rc2::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPileConstructionEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_rc2::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPileConstructionEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPile::declaration() const { return *IFC4X3_RC2_IfcPile_type; } @@ -18879,7 +18879,7 @@ Ifc4x3_rc2::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcPipeFitting boost::optional< ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::Value > Ifc4x3_rc2::IfcPipeFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPipeFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPipeFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPipeFitting::declaration() const { return *IFC4X3_RC2_IfcPipeFitting_type; } @@ -18899,7 +18899,7 @@ Ifc4x3_rc2::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcPipeSegment boost::optional< ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::Value > Ifc4x3_rc2::IfcPipeSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPipeSegment::declaration() const { return *IFC4X3_RC2_IfcPipeSegment_type; } @@ -18983,7 +18983,7 @@ Ifc4x3_rc2::IfcPlant::IfcPlant(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHi // Function implementations for IfcPlate boost::optional< ::Ifc4x3_rc2::IfcPlateTypeEnum::Value > Ifc4x3_rc2::IfcPlate::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPlateTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPlateTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPlateTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPlate::declaration() const { return *IFC4X3_RC2_IfcPlate_type; } @@ -19021,11 +19021,11 @@ Ifc4x3_rc2::IfcPoint::IfcPoint() : IfcGeometricRepresentationItem((IfcEntityInst ::Ifc4x3_rc2::IfcCurveMeasureSelect* Ifc4x3_rc2::IfcPointByDistanceExpression::DistanceAlong() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurveMeasureSelect>(true); } void Ifc4x3_rc2::IfcPointByDistanceExpression::setDistanceAlong(::Ifc4x3_rc2::IfcCurveMeasureSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc2::IfcPointByDistanceExpression::OffsetLateral() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcPointByDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcPointByDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcPointByDistanceExpression::OffsetVertical() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcPointByDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcPointByDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcPointByDistanceExpression::OffsetLongitudinal() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcPointByDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcPointByDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcPointByDistanceExpression::BasisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcCurve>(true); } void Ifc4x3_rc2::IfcPointByDistanceExpression::setBasisCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -19085,11 +19085,11 @@ Ifc4x3_rc2::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4x3_ // Function implementations for IfcPolygonalFaceSet boost::optional< bool > Ifc4x3_rc2::IfcPolygonalFaceSet::Closed() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc2::IfcIndexedPolygonalFace >::ptr Ifc4x3_rc2::IfcPolygonalFaceSet::Faces() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcIndexedPolygonalFace >(); } void Ifc4x3_rc2::IfcPolygonalFaceSet::setFaces(aggregate_of< ::Ifc4x3_rc2::IfcIndexedPolygonalFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::IfcPolygonalFaceSet::PnIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPolygonalFaceSet::declaration() const { return *IFC4X3_RC2_IfcPolygonalFaceSet_type; } @@ -19130,19 +19130,19 @@ Ifc4x3_rc2::IfcPositioningElement::IfcPositioningElement(std::string v1_GlobalId // Function implementations for IfcPostalAddress boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::InternalLocation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcPostalAddress::AddressLines() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::PostalBox() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::Town() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::Region() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::PostalCode() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::Country() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPostalAddress::declaration() const { return *IFC4X3_RC2_IfcPostalAddress_type; } @@ -19212,11 +19212,11 @@ Ifc4x3_rc2::IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity( std::string Ifc4x3_rc2::IfcPresentationLayerAssignment::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc2::IfcPresentationLayerAssignment::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPresentationLayerAssignment::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of_instance::ptr Ifc4x3_rc2::IfcPresentationLayerAssignment::AssignedItems() const { aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } void Ifc4x3_rc2::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPresentationLayerAssignment::Identifier() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPresentationLayerAssignment::declaration() const { return *IFC4X3_RC2_IfcPresentationLayerAssignment_type; } @@ -19242,7 +19242,7 @@ Ifc4x3_rc2::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::st // Function implementations for IfcPresentationStyle boost::optional< std::string > Ifc4x3_rc2::IfcPresentationStyle::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPresentationStyle::declaration() const { return *IFC4X3_RC2_IfcPresentationStyle_type; } @@ -19262,7 +19262,7 @@ Ifc4x3_rc2::IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(aggre // Function implementations for IfcProcedure boost::optional< ::Ifc4x3_rc2::IfcProcedureTypeEnum::Value > Ifc4x3_rc2::IfcProcedure::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProcedureTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc2::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProcedureTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProcedureTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcProcedure::declaration() const { return *IFC4X3_RC2_IfcProcedure_type; } @@ -19282,9 +19282,9 @@ Ifc4x3_rc2::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4x3 // Function implementations for IfcProcess boost::optional< std::string > Ifc4x3_rc2::IfcProcess::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcProcess::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc2::IfcRelSequence::list::ptr Ifc4x3_rc2::IfcProcess::IsPredecessorTo() const { return data_->getInverse(IFC4X3_RC2_IfcRelSequence_type, 4)->as(); } ::Ifc4x3_rc2::IfcRelSequence::list::ptr Ifc4x3_rc2::IfcProcess::IsSuccessorFrom() const { return data_->getInverse(IFC4X3_RC2_IfcRelSequence_type, 5)->as(); } @@ -19322,9 +19322,9 @@ Ifc4x3_rc2::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional // Function implementations for IfcProductRepresentation boost::optional< std::string > Ifc4x3_rc2::IfcProductRepresentation::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcProductRepresentation::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc2::IfcRepresentation >::ptr Ifc4x3_rc2::IfcProductRepresentation::Representations() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcRepresentation >(); } void Ifc4x3_rc2::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc4x3_rc2::IfcRepresentation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -19338,7 +19338,7 @@ Ifc4x3_rc2::IfcProductRepresentation::IfcProductRepresentation(boost::optional< ::Ifc4x3_rc2::IfcProfileTypeEnum::Value Ifc4x3_rc2::IfcProfileDef::ProfileType() const { return ::Ifc4x3_rc2::IfcProfileTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc2::IfcProfileDef::setProfileType(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcProfileTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcProfileDef::ProfileName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcProfileDef::HasExternalReference() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc2::IfcProfileProperties::list::ptr Ifc4x3_rc2::IfcProfileDef::HasProperties() const { return data_->getInverse(IFC4X3_RC2_IfcProfileProperties_type, 3)->as(); } @@ -19376,11 +19376,11 @@ Ifc4x3_rc2::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcProjectOrder boost::optional< ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::Value > Ifc4x3_rc2::IfcProjectOrder::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc2::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectOrderTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectOrderTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcProjectOrder::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcProjectOrder::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcProjectOrder::declaration() const { return *IFC4X3_RC2_IfcProjectOrder_type; } @@ -19390,9 +19390,9 @@ Ifc4x3_rc2::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcProjectedCRS boost::optional< std::string > Ifc4x3_rc2::IfcProjectedCRS::MapProjection() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcProjectedCRS::MapZone() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcNamedUnit* Ifc4x3_rc2::IfcProjectedCRS::MapUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcNamedUnit>(true); } void Ifc4x3_rc2::IfcProjectedCRS::setMapUnit(::Ifc4x3_rc2::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -19404,7 +19404,7 @@ Ifc4x3_rc2::IfcProjectedCRS::IfcProjectedCRS(std::string v1_Name, boost::optiona // Function implementations for IfcProjectionElement boost::optional< ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::Value > Ifc4x3_rc2::IfcProjectionElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectionElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectionElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcProjectionElement::declaration() const { return *IFC4X3_RC2_IfcProjectionElement_type; } @@ -19416,7 +19416,7 @@ Ifc4x3_rc2::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, std::string Ifc4x3_rc2::IfcProperty::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc2::IfcProperty::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcProperty::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc2::IfcPropertySet::list::ptr Ifc4x3_rc2::IfcProperty::PartOfPset() const { return data_->getInverse(IFC4X3_RC2_IfcPropertySet_type, 4)->as(); } ::Ifc4x3_rc2::IfcPropertyDependencyRelationship::list::ptr Ifc4x3_rc2::IfcProperty::PropertyForDependance() const { return data_->getInverse(IFC4X3_RC2_IfcPropertyDependencyRelationship_type, 2)->as(); } @@ -19471,7 +19471,7 @@ void Ifc4x3_rc2::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc4x ::Ifc4x3_rc2::IfcProperty* Ifc4x3_rc2::IfcPropertyDependencyRelationship::DependantProperty() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcProperty>(true); } void Ifc4x3_rc2::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc4x3_rc2::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPropertyDependencyRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPropertyDependencyRelationship::declaration() const { return *IFC4X3_RC2_IfcPropertyDependencyRelationship_type; } @@ -19481,7 +19481,7 @@ Ifc4x3_rc2::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship // Function implementations for IfcPropertyEnumeratedValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc2::IfcPropertyEnumeratedValue::EnumerationValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcPropertyEnumeration* Ifc4x3_rc2::IfcPropertyEnumeratedValue::EnumerationReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcPropertyEnumeration>(true); } void Ifc4x3_rc2::IfcPropertyEnumeratedValue::setEnumerationReference(::Ifc4x3_rc2::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19507,7 +19507,7 @@ Ifc4x3_rc2::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, // Function implementations for IfcPropertyListValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc2::IfcPropertyListValue::ListValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcPropertyListValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcUnit>(true); } void Ifc4x3_rc2::IfcPropertyListValue::setUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19519,7 +19519,7 @@ Ifc4x3_rc2::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boos // Function implementations for IfcPropertyReferenceValue boost::optional< std::string > Ifc4x3_rc2::IfcPropertyReferenceValue::UsageName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcObjectReferenceSelect* Ifc4x3_rc2::IfcPropertyReferenceValue::PropertyReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcObjectReferenceSelect>(true); } void Ifc4x3_rc2::IfcPropertyReferenceValue::setPropertyReference(::Ifc4x3_rc2::IfcObjectReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19552,9 +19552,9 @@ Ifc4x3_rc2::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_Gl // Function implementations for IfcPropertySetTemplate boost::optional< ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::Value > Ifc4x3_rc2::IfcPropertySetTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x3_rc2::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPropertySetTemplate::ApplicableEntity() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr Ifc4x3_rc2::IfcPropertySetTemplate::HasPropertyTemplates() const { aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc2::IfcPropertyTemplate >(); } void Ifc4x3_rc2::IfcPropertySetTemplate::setHasPropertyTemplates(aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(6,attr);} } @@ -19579,17 +19579,17 @@ Ifc4x3_rc2::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, // Function implementations for IfcPropertyTableValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc2::IfcPropertyTableValue::DefiningValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc2::IfcPropertyTableValue::DefinedValues() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcPropertyTableValue::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcPropertyTableValue::DefiningUnit() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcUnit>(true); } void Ifc4x3_rc2::IfcPropertyTableValue::setDefiningUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcPropertyTableValue::DefinedUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcUnit>(true); } void Ifc4x3_rc2::IfcPropertyTableValue::setDefinedUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc2::IfcCurveInterpolationEnum::Value > Ifc4x3_rc2::IfcPropertyTableValue::CurveInterpolation() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCurveInterpolationEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc2::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_rc2::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCurveInterpolationEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_rc2::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCurveInterpolationEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPropertyTableValue::declaration() const { return *IFC4X3_RC2_IfcPropertyTableValue_type; } @@ -19617,7 +19617,7 @@ Ifc4x3_rc2::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::st // Function implementations for IfcProtectiveDevice boost::optional< ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::Value > Ifc4x3_rc2::IfcProtectiveDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcProtectiveDevice::declaration() const { return *IFC4X3_RC2_IfcProtectiveDevice_type; } @@ -19627,7 +19627,7 @@ Ifc4x3_rc2::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, :: // Function implementations for IfcProtectiveDeviceTrippingUnit boost::optional< ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit::declaration() const { return *IFC4X3_RC2_IfcProtectiveDeviceTrippingUnit_type; } @@ -19659,7 +19659,7 @@ Ifc4x3_rc2::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_Glob ::Ifc4x3_rc2::IfcObjectTypeEnum::Value Ifc4x3_rc2::IfcProxy::ProxyType() const { return ::Ifc4x3_rc2::IfcObjectTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc2::IfcProxy::setProxyType(::Ifc4x3_rc2::IfcObjectTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcObjectTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcProxy::Tag() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcProxy::declaration() const { return *IFC4X3_RC2_IfcProxy_type; } @@ -19669,7 +19669,7 @@ Ifc4x3_rc2::IfcProxy::IfcProxy(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHi // Function implementations for IfcPump boost::optional< ::Ifc4x3_rc2::IfcPumpTypeEnum::Value > Ifc4x3_rc2::IfcPump::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPumpTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPumpTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPumpTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcPump::declaration() const { return *IFC4X3_RC2_IfcPump_type; } @@ -19691,7 +19691,7 @@ Ifc4x3_rc2::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO double Ifc4x3_rc2::IfcQuantityArea::AreaValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcQuantityArea::setAreaValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcQuantityArea::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcQuantityArea::declaration() const { return *IFC4X3_RC2_IfcQuantityArea_type; } @@ -19703,7 +19703,7 @@ Ifc4x3_rc2::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optiona double Ifc4x3_rc2::IfcQuantityCount::CountValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcQuantityCount::setCountValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcQuantityCount::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcQuantityCount::declaration() const { return *IFC4X3_RC2_IfcQuantityCount_type; } @@ -19715,7 +19715,7 @@ Ifc4x3_rc2::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optio double Ifc4x3_rc2::IfcQuantityLength::LengthValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcQuantityLength::setLengthValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcQuantityLength::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcQuantityLength::declaration() const { return *IFC4X3_RC2_IfcQuantityLength_type; } @@ -19735,7 +19735,7 @@ Ifc4x3_rc2::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4x3_rc2 double Ifc4x3_rc2::IfcQuantityTime::TimeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcQuantityTime::setTimeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcQuantityTime::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcQuantityTime::declaration() const { return *IFC4X3_RC2_IfcQuantityTime_type; } @@ -19747,7 +19747,7 @@ Ifc4x3_rc2::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optiona double Ifc4x3_rc2::IfcQuantityVolume::VolumeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcQuantityVolume::setVolumeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcQuantityVolume::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcQuantityVolume::declaration() const { return *IFC4X3_RC2_IfcQuantityVolume_type; } @@ -19759,7 +19759,7 @@ Ifc4x3_rc2::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::opt double Ifc4x3_rc2::IfcQuantityWeight::WeightValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcQuantityWeight::setWeightValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcQuantityWeight::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcQuantityWeight::declaration() const { return *IFC4X3_RC2_IfcQuantityWeight_type; } @@ -19769,7 +19769,7 @@ Ifc4x3_rc2::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::opt // Function implementations for IfcRail boost::optional< ::Ifc4x3_rc2::IfcRailTypeEnum::Value > Ifc4x3_rc2::IfcRail::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcRailTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRailTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRailTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRailTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRailTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRail::declaration() const { return *IFC4X3_RC2_IfcRail_type; } @@ -19789,7 +19789,7 @@ Ifc4x3_rc2::IfcRailType::IfcRailType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcRailing boost::optional< ::Ifc4x3_rc2::IfcRailingTypeEnum::Value > Ifc4x3_rc2::IfcRailing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcRailingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRailingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRailingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRailing::declaration() const { return *IFC4X3_RC2_IfcRailing_type; } @@ -19817,7 +19817,7 @@ Ifc4x3_rc2::IfcRailway::IfcRailway(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwn // Function implementations for IfcRamp boost::optional< ::Ifc4x3_rc2::IfcRampTypeEnum::Value > Ifc4x3_rc2::IfcRamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcRampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRamp::declaration() const { return *IFC4X3_RC2_IfcRamp_type; } @@ -19827,7 +19827,7 @@ Ifc4x3_rc2::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHist // Function implementations for IfcRampFlight boost::optional< ::Ifc4x3_rc2::IfcRampFlightTypeEnum::Value > Ifc4x3_rc2::IfcRampFlight::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcRampFlightTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRampFlightTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRampFlightTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRampFlight::declaration() const { return *IFC4X3_RC2_IfcRampFlight_type; } @@ -19879,9 +19879,9 @@ Ifc4x3_rc2::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKno double Ifc4x3_rc2::IfcRectangleHollowProfileDef::WallThickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x3_rc2::IfcRectangleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRectangleHollowProfileDef::declaration() const { return *IFC4X3_RC2_IfcRectangleHollowProfileDef_type; } @@ -19941,19 +19941,19 @@ Ifc4x3_rc2::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4x3_ ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::Value Ifc4x3_rc2::IfcRecurrencePattern::RecurrenceType() const { return ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc2::IfcRecurrencePattern::setRecurrenceType(::Ifc4x3_rc2::IfcRecurrenceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcRecurrenceTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::IfcRecurrencePattern::DayComponent() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::IfcRecurrencePattern::WeekdayComponent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::IfcRecurrencePattern::MonthComponent() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc2::IfcRecurrencePattern::Position() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< int > Ifc4x3_rc2::IfcRecurrencePattern::Interval() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } int v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x3_rc2::IfcRecurrencePattern::Occurrences() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTimePeriod >::ptr > Ifc4x3_rc2::IfcRecurrencePattern::TimePeriods() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcTimePeriod >(); } -void Ifc4x3_rc2::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRecurrencePattern::declaration() const { return *IFC4X3_RC2_IfcRecurrencePattern_type; } @@ -19963,13 +19963,13 @@ Ifc4x3_rc2::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4x3_rc2::IfcRecurren // Function implementations for IfcReference boost::optional< std::string > Ifc4x3_rc2::IfcReference::TypeIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcReference::AttributeIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcReference::InstanceName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::IfcReference::ListPositions() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc2::IfcReference* Ifc4x3_rc2::IfcReference::InnerReference() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcReference>(true); } void Ifc4x3_rc2::IfcReference::setInnerReference(::Ifc4x3_rc2::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -19981,9 +19981,9 @@ Ifc4x3_rc2::IfcReference::IfcReference(boost::optional< std::string > v1_TypeIde // Function implementations for IfcReferent boost::optional< ::Ifc4x3_rc2::IfcReferentTypeEnum::Value > Ifc4x3_rc2::IfcReferent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReferentTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc2::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReferentTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReferentTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReferent::RestartDistance() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcReferent::declaration() const { return *IFC4X3_RC2_IfcReferent_type; } @@ -20005,7 +20005,7 @@ Ifc4x3_rc2::IfcRegularTimeSeries::IfcRegularTimeSeries(std::string v1_Name, boos // Function implementations for IfcReinforcedSoil boost::optional< ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::Value > Ifc4x3_rc2::IfcReinforcedSoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcReinforcedSoil::declaration() const { return *IFC4X3_RC2_IfcReinforcedSoil_type; } @@ -20019,13 +20019,13 @@ void Ifc4x3_rc2::IfcReinforcementBarProperties::setTotalCrossSectionArea(double std::string Ifc4x3_rc2::IfcReinforcementBarProperties::SteelGrade() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcReinforcementBarProperties::setSteelGrade(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc2::IfcReinforcementBarProperties::BarSurface() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc2::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcementBarProperties::EffectiveDepth() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcementBarProperties::NominalBarDiameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcementBarProperties::BarCount() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcReinforcementBarProperties::declaration() const { return *IFC4X3_RC2_IfcReinforcementBarProperties_type; } @@ -20035,7 +20035,7 @@ Ifc4x3_rc2::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double // Function implementations for IfcReinforcementDefinitionProperties boost::optional< std::string > Ifc4x3_rc2::IfcReinforcementDefinitionProperties::DefinitionType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x3_rc2::IfcSectionReinforcementProperties >::ptr Ifc4x3_rc2::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcSectionReinforcementProperties >(); } void Ifc4x3_rc2::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc4x3_rc2::IfcSectionReinforcementProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -20047,15 +20047,15 @@ Ifc4x3_rc2::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProp // Function implementations for IfcReinforcingBar boost::optional< double > Ifc4x3_rc2::IfcReinforcingBar::NominalDiameter() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingBar::CrossSectionArea() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingBar::BarLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::Value > Ifc4x3_rc2::IfcReinforcingBar::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc2::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc2::IfcReinforcingBar::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc2::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingBar::declaration() const { return *IFC4X3_RC2_IfcReinforcingBar_type; } @@ -20067,17 +20067,17 @@ Ifc4x3_rc2::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4 ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::Value Ifc4x3_rc2::IfcReinforcingBarType::PredefinedType() const { return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc2::IfcReinforcingBarType::setPredefinedType(::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingBarType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingBarType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingBarType::BarLength() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc2::IfcReinforcingBarType::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc2::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcReinforcingBarType::BendingShapeCode() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc2::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc2::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc2::IfcReinforcingBarType::BendingParameters() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(15); return v; } -void Ifc4x3_rc2::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc2::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingBarType::declaration() const { return *IFC4X3_RC2_IfcReinforcingBarType_type; } @@ -20087,7 +20087,7 @@ Ifc4x3_rc2::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId // Function implementations for IfcReinforcingElement boost::optional< std::string > Ifc4x3_rc2::IfcReinforcingElement::SteelGrade() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingElement::declaration() const { return *IFC4X3_RC2_IfcReinforcingElement_type; } @@ -20105,23 +20105,23 @@ Ifc4x3_rc2::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_ // Function implementations for IfcReinforcingMesh boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::MeshLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::MeshWidth() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc2::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc2::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc2::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc2::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc2::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::TransverseBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc2::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc2::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::Value > Ifc4x3_rc2::IfcReinforcingMesh::PredefinedType() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(17)); } -void Ifc4x3_rc2::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::ToString(*v)));data_->setArgument(17,attr);} } +void Ifc4x3_rc2::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::ToString(*v)));}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingMesh::declaration() const { return *IFC4X3_RC2_IfcReinforcingMesh_type; } @@ -20133,25 +20133,25 @@ Ifc4x3_rc2::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::If ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::Value Ifc4x3_rc2::IfcReinforcingMeshType::PredefinedType() const { return ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc2::IfcReinforcingMeshType::setPredefinedType(::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::MeshLength() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::MeshWidth() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc2::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc2::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc2::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc2::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc2::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc2::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc2::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::TransverseBarSpacing() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x3_rc2::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc2::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcReinforcingMeshType::BendingShapeCode() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x3_rc2::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x3_rc2::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc2::IfcReinforcingMeshType::BendingParameters() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(19); return v; } -void Ifc4x3_rc2::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x3_rc2::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingMeshType::declaration() const { return *IFC4X3_RC2_IfcReinforcingMeshType_type; } @@ -20175,7 +20175,7 @@ Ifc4x3_rc2::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4x3 aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr Ifc4x3_rc2::IfcRelAssigns::RelatedObjects() const { aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcObjectDefinition >(); } void Ifc4x3_rc2::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} } boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > Ifc4x3_rc2::IfcRelAssigns::RelatedObjectsType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcObjectTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc2::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcObjectTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcObjectTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRelAssigns::declaration() const { return *IFC4X3_RC2_IfcRelAssigns_type; } @@ -20289,7 +20289,7 @@ Ifc4x3_rc2::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std:: // Function implementations for IfcRelAssociatesConstraint boost::optional< std::string > Ifc4x3_rc2::IfcRelAssociatesConstraint::Intent() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcConstraint* Ifc4x3_rc2::IfcRelAssociatesConstraint::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcConstraint>(true); } void Ifc4x3_rc2::IfcRelAssociatesConstraint::setRelatingConstraint(::Ifc4x3_rc2::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -20425,7 +20425,7 @@ void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc4x3_rc ::Ifc4x3_rc2::IfcStructuralConnectionCondition* Ifc4x3_rc2::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcStructuralConnectionCondition>(true); } void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc4x3_rc2::IfcStructuralConnectionCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcRelConnectsStructuralMember::SupportedLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); } void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -20449,7 +20449,7 @@ Ifc4x3_rc2::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std:: aggregate_of< ::Ifc4x3_rc2::IfcElement >::ptr Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::RealizingElements() const { aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcElement >(); } void Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc4x3_rc2::IfcElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::declaration() const { return *IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type; } @@ -20601,7 +20601,7 @@ void Ifc4x3_rc2::IfcRelInterferesElements::setRelatedElement(::Ifc4x3_rc2::IfcIn ::Ifc4x3_rc2::IfcConnectionGeometry* Ifc4x3_rc2::IfcRelInterferesElements::InterferenceGeometry() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcConnectionGeometry>(true); } void Ifc4x3_rc2::IfcRelInterferesElements::setInterferenceGeometry(::Ifc4x3_rc2::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcRelInterferesElements::InterferenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::logic::tribool Ifc4x3_rc2::IfcRelInterferesElements::ImpliedOrder() const { boost::logic::tribool v = *data_->getArgument(8); return v; } void Ifc4x3_rc2::IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -20667,9 +20667,9 @@ void Ifc4x3_rc2::IfcRelSequence::setRelatedProcess(::Ifc4x3_rc2::IfcProcess* v) ::Ifc4x3_rc2::IfcLagTime* Ifc4x3_rc2::IfcRelSequence::TimeLag() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcLagTime>(true); } void Ifc4x3_rc2::IfcRelSequence::setTimeLag(::Ifc4x3_rc2::IfcLagTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc2::IfcSequenceEnum::Value > Ifc4x3_rc2::IfcRelSequence::SequenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSequenceEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc2::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_rc2::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSequenceEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_rc2::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSequenceEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcRelSequence::UserDefinedSequenceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRelSequence::declaration() const { return *IFC4X3_RC2_IfcRelSequence_type; } @@ -20763,9 +20763,9 @@ Ifc4x3_rc2::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCu ::Ifc4x3_rc2::IfcRepresentationContext* Ifc4x3_rc2::IfcRepresentation::ContextOfItems() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcRepresentationContext>(true); } void Ifc4x3_rc2::IfcRepresentation::setContextOfItems(::Ifc4x3_rc2::IfcRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcRepresentation::RepresentationIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcRepresentation::RepresentationType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } aggregate_of< ::Ifc4x3_rc2::IfcRepresentationItem >::ptr Ifc4x3_rc2::IfcRepresentation::Items() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcRepresentationItem >(); } void Ifc4x3_rc2::IfcRepresentation::setItems(aggregate_of< ::Ifc4x3_rc2::IfcRepresentationItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } @@ -20780,9 +20780,9 @@ Ifc4x3_rc2::IfcRepresentation::IfcRepresentation(::Ifc4x3_rc2::IfcRepresentation // Function implementations for IfcRepresentationContext boost::optional< std::string > Ifc4x3_rc2::IfcRepresentationContext::ContextIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcRepresentationContext::ContextType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc2::IfcRepresentation::list::ptr Ifc4x3_rc2::IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(IFC4X3_RC2_IfcRepresentation_type, 0)->as(); } @@ -20817,9 +20817,9 @@ Ifc4x3_rc2::IfcRepresentationMap::IfcRepresentationMap(::Ifc4x3_rc2::IfcAxis2Pla // Function implementations for IfcResource boost::optional< std::string > Ifc4x3_rc2::IfcResource::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResource::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc2::IfcRelAssignsToResource::list::ptr Ifc4x3_rc2::IfcResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToResource_type, 6)->as(); } @@ -20854,9 +20854,9 @@ Ifc4x3_rc2::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship // Function implementations for IfcResourceLevelRelationship boost::optional< std::string > Ifc4x3_rc2::IfcResourceLevelRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResourceLevelRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcResourceLevelRelationship::declaration() const { return *IFC4X3_RC2_IfcResourceLevelRelationship_type; } @@ -20866,35 +20866,35 @@ Ifc4x3_rc2::IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::op // Function implementations for IfcResourceTime boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ScheduleWork() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcResourceTime::ScheduleUsage() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ScheduleContour() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::LevelingDelay() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< bool > Ifc4x3_rc2::IfcResourceTime::IsOverAllocated() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::StatusTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ActualWork() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc2::IfcResourceTime::ActualUsage() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ActualStart() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x3_rc2::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ActualFinish() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc2::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::RemainingWork() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x3_rc2::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc2::IfcResourceTime::RemainingUsage() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc2::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x3_rc2::IfcResourceTime::Completion() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x3_rc2::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc2::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcResourceTime::declaration() const { return *IFC4X3_RC2_IfcResourceTime_type; } @@ -20958,7 +20958,7 @@ Ifc4x3_rc2::IfcRoad::IfcRoad(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHist // Function implementations for IfcRoof boost::optional< ::Ifc4x3_rc2::IfcRoofTypeEnum::Value > Ifc4x3_rc2::IfcRoof::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcRoofTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRoofTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRoofTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRoof::declaration() const { return *IFC4X3_RC2_IfcRoof_type; } @@ -20982,9 +20982,9 @@ void Ifc4x3_rc2::IfcRoot::setGlobalId(std::string v) { {IfcWrite::IfcWriteArgume ::Ifc4x3_rc2::IfcOwnerHistory* Ifc4x3_rc2::IfcRoot::OwnerHistory() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcOwnerHistory>(true); } void Ifc4x3_rc2::IfcRoot::setOwnerHistory(::Ifc4x3_rc2::IfcOwnerHistory* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcRoot::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcRoot::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcRoot::declaration() const { return *IFC4X3_RC2_IfcRoot_type; } @@ -21004,7 +21004,7 @@ Ifc4x3_rc2::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4x // Function implementations for IfcSIUnit boost::optional< ::Ifc4x3_rc2::IfcSIPrefix::Value > Ifc4x3_rc2::IfcSIUnit::Prefix() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSIPrefix::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc2::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_rc2::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSIPrefix::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_rc2::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSIPrefix::ToString(*v)));}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcSIUnitName::Value Ifc4x3_rc2::IfcSIUnit::Name() const { return ::Ifc4x3_rc2::IfcSIUnitName::FromString(*data_->getArgument(3)); } void Ifc4x3_rc2::IfcSIUnit::setName(::Ifc4x3_rc2::IfcSIUnitName::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSIUnitName::ToString(v)));data_->setArgument(3,attr);} } @@ -21016,7 +21016,7 @@ Ifc4x3_rc2::IfcSIUnit::IfcSIUnit(::Ifc4x3_rc2::IfcUnitEnum::Value v2_UnitType, b // Function implementations for IfcSanitaryTerminal boost::optional< ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::Value > Ifc4x3_rc2::IfcSanitaryTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSanitaryTerminal::declaration() const { return *IFC4X3_RC2_IfcSanitaryTerminal_type; } @@ -21036,11 +21036,11 @@ Ifc4x3_rc2::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_Glob // Function implementations for IfcSchedulingTime boost::optional< std::string > Ifc4x3_rc2::IfcSchedulingTime::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< ::Ifc4x3_rc2::IfcDataOriginEnum::Value > Ifc4x3_rc2::IfcSchedulingTime::DataOrigin() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDataOriginEnum::FromString(*data_->getArgument(1)); } -void Ifc4x3_rc2::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_rc2::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDataOriginEnum::ToString(*v)));data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_rc2::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDataOriginEnum::ToString(*v)));}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcSchedulingTime::UserDefinedDataOrigin() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSchedulingTime::declaration() const { return *IFC4X3_RC2_IfcSchedulingTime_type; } @@ -21076,7 +21076,7 @@ void Ifc4x3_rc2::IfcSectionReinforcementProperties::setLongitudinalStartPosition double Ifc4x3_rc2::IfcSectionReinforcementProperties::LongitudinalEndPosition() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSectionReinforcementProperties::TransversePosition() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::Value Ifc4x3_rc2::IfcSectionReinforcementProperties::ReinforcementRole() const { return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); } void Ifc4x3_rc2::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(3,attr);} } ::Ifc4x3_rc2::IfcSectionProperties* Ifc4x3_rc2::IfcSectionReinforcementProperties::SectionDefinition() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcSectionProperties>(true); } @@ -21170,7 +21170,7 @@ Ifc4x3_rc2::IfcSegmentedReferenceCurve::IfcSegmentedReferenceCurve(::Ifc4x3_rc2: // Function implementations for IfcSensor boost::optional< ::Ifc4x3_rc2::IfcSensorTypeEnum::Value > Ifc4x3_rc2::IfcSensor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSensorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSensorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSensorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSensor::declaration() const { return *IFC4X3_RC2_IfcSensor_type; } @@ -21204,7 +21204,7 @@ Ifc4x3_rc2::IfcSeriesParameterCurve::IfcSeriesParameterCurve(::Ifc4x3_rc2::IfcPl // Function implementations for IfcShadingDevice boost::optional< ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::Value > Ifc4x3_rc2::IfcShadingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcShadingDevice::declaration() const { return *IFC4X3_RC2_IfcShadingDevice_type; } @@ -21226,9 +21226,9 @@ Ifc4x3_rc2::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, aggregate_of< ::Ifc4x3_rc2::IfcShapeModel >::ptr Ifc4x3_rc2::IfcShapeAspect::ShapeRepresentations() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcShapeModel >(); } void Ifc4x3_rc2::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc4x3_rc2::IfcShapeModel >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcShapeAspect::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcShapeAspect::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::logic::tribool Ifc4x3_rc2::IfcShapeAspect::ProductDefinitional() const { boost::logic::tribool v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc2::IfcProductRepresentationSelect* Ifc4x3_rc2::IfcShapeAspect::PartOfProductDefinitionShape() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcProductRepresentationSelect>(true); } @@ -21270,7 +21270,7 @@ Ifc4x3_rc2::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(aggregate_of_in // Function implementations for IfcSign boost::optional< ::Ifc4x3_rc2::IfcSignTypeEnum::Value > Ifc4x3_rc2::IfcSign::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSignTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSignTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSignTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSignTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSignTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSign::declaration() const { return *IFC4X3_RC2_IfcSign_type; } @@ -21290,7 +21290,7 @@ Ifc4x3_rc2::IfcSignType::IfcSignType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcSignal boost::optional< ::Ifc4x3_rc2::IfcSignalTypeEnum::Value > Ifc4x3_rc2::IfcSignal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSignalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSignalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSignalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSignalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSignalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSignal::declaration() const { return *IFC4X3_RC2_IfcSignal_type; } @@ -21318,11 +21318,11 @@ Ifc4x3_rc2::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::opt // Function implementations for IfcSimplePropertyTemplate boost::optional< ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4x3_rc2::IfcSimplePropertyTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x3_rc2::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc2::IfcPropertyEnumeration* Ifc4x3_rc2::IfcSimplePropertyTemplate::Enumerators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcPropertyEnumeration>(true); } void Ifc4x3_rc2::IfcSimplePropertyTemplate::setEnumerators(::Ifc4x3_rc2::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcSimplePropertyTemplate::PrimaryUnit() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcUnit>(true); } @@ -21330,9 +21330,9 @@ void Ifc4x3_rc2::IfcSimplePropertyTemplate::setPrimaryUnit(::Ifc4x3_rc2::IfcUnit ::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcSimplePropertyTemplate::SecondaryUnit() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcUnit>(true); } void Ifc4x3_rc2::IfcSimplePropertyTemplate::setSecondaryUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcSimplePropertyTemplate::Expression() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > Ifc4x3_rc2::IfcSimplePropertyTemplate::AccessState() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcStateEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc2::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStateEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStateEnum::ToString(*v)));}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSimplePropertyTemplate::declaration() const { return *IFC4X3_RC2_IfcSimplePropertyTemplate_type; } @@ -21342,13 +21342,13 @@ Ifc4x3_rc2::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_ // Function implementations for IfcSite boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc2::IfcSite::RefLatitude() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc2::IfcSite::RefLongitude() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSite::RefElevation() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcSite::LandTitleNumber() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x3_rc2::IfcPostalAddress* Ifc4x3_rc2::IfcSite::SiteAddress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc2::IfcPostalAddress>(true); } void Ifc4x3_rc2::IfcSite::setSiteAddress(::Ifc4x3_rc2::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -21360,7 +21360,7 @@ Ifc4x3_rc2::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHist // Function implementations for IfcSlab boost::optional< ::Ifc4x3_rc2::IfcSlabTypeEnum::Value > Ifc4x3_rc2::IfcSlab::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSlabTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSlabTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSlabTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSlab::declaration() const { return *IFC4X3_RC2_IfcSlab_type; } @@ -21396,11 +21396,11 @@ Ifc4x3_rc2::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcSlippageConnectionCondition boost::optional< double > Ifc4x3_rc2::IfcSlippageConnectionCondition::SlippageX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSlippageConnectionCondition::SlippageY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSlippageConnectionCondition::SlippageZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSlippageConnectionCondition::declaration() const { return *IFC4X3_RC2_IfcSlippageConnectionCondition_type; } @@ -21410,7 +21410,7 @@ Ifc4x3_rc2::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost // Function implementations for IfcSolarDevice boost::optional< ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::Value > Ifc4x3_rc2::IfcSolarDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSolarDevice::declaration() const { return *IFC4X3_RC2_IfcSolarDevice_type; } @@ -21446,9 +21446,9 @@ Ifc4x3_rc2::IfcSolidStratum::IfcSolidStratum(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcSpace boost::optional< ::Ifc4x3_rc2::IfcSpaceTypeEnum::Value > Ifc4x3_rc2::IfcSpace::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc2::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSpaceTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSpaceTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSpace::ElevationWithFlooring() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc2::IfcRelCoversSpaces::list::ptr Ifc4x3_rc2::IfcSpace::HasCoverings() const { return data_->getInverse(IFC4X3_RC2_IfcRelCoversSpaces_type, 4)->as(); } ::Ifc4x3_rc2::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc2::IfcSpace::BoundedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelSpaceBoundary_type, 4)->as(); } @@ -21460,7 +21460,7 @@ Ifc4x3_rc2::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHi // Function implementations for IfcSpaceHeater boost::optional< ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::Value > Ifc4x3_rc2::IfcSpaceHeater::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSpaceHeater::declaration() const { return *IFC4X3_RC2_IfcSpaceHeater_type; } @@ -21482,7 +21482,7 @@ Ifc4x3_rc2::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::If ::Ifc4x3_rc2::IfcSpaceTypeEnum::Value Ifc4x3_rc2::IfcSpaceType::PredefinedType() const { return ::Ifc4x3_rc2::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc2::IfcSpaceType::setPredefinedType(::Ifc4x3_rc2::IfcSpaceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSpaceTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcSpaceType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSpaceType::declaration() const { return *IFC4X3_RC2_IfcSpaceType_type; } @@ -21492,7 +21492,7 @@ Ifc4x3_rc2::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4x3_rc2::If // Function implementations for IfcSpatialElement boost::optional< std::string > Ifc4x3_rc2::IfcSpatialElement::LongName() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc2::IfcSpatialElement::ContainsElements() const { return data_->getInverse(IFC4X3_RC2_IfcRelContainedInSpatialStructure_type, 5)->as(); } ::Ifc4x3_rc2::IfcRelServicesBuildings::list::ptr Ifc4x3_rc2::IfcSpatialElement::ServicedBySystems() const { return data_->getInverse(IFC4X3_RC2_IfcRelServicesBuildings_type, 5)->as(); } @@ -21505,7 +21505,7 @@ Ifc4x3_rc2::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcSpatialElementType boost::optional< std::string > Ifc4x3_rc2::IfcSpatialElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSpatialElementType::declaration() const { return *IFC4X3_RC2_IfcSpatialElementType_type; } @@ -21515,7 +21515,7 @@ Ifc4x3_rc2::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId // Function implementations for IfcSpatialStructureElement boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > Ifc4x3_rc2::IfcSpatialStructureElement::CompositionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElementCompositionEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElementCompositionEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSpatialStructureElement::declaration() const { return *IFC4X3_RC2_IfcSpatialStructureElement_type; } @@ -21533,7 +21533,7 @@ Ifc4x3_rc2::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std:: // Function implementations for IfcSpatialZone boost::optional< ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::Value > Ifc4x3_rc2::IfcSpatialZone::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSpatialZone::declaration() const { return *IFC4X3_RC2_IfcSpatialZone_type; } @@ -21545,7 +21545,7 @@ Ifc4x3_rc2::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4x3_rc2 ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::Value Ifc4x3_rc2::IfcSpatialZoneType::PredefinedType() const { return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc2::IfcSpatialZoneType::setPredefinedType(::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcSpatialZoneType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSpatialZoneType::declaration() const { return *IFC4X3_RC2_IfcSpatialZoneType_type; } @@ -21575,7 +21575,7 @@ Ifc4x3_rc2::IfcSphericalSurface::IfcSphericalSurface(::Ifc4x3_rc2::IfcAxis2Place // Function implementations for IfcStackTerminal boost::optional< ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::Value > Ifc4x3_rc2::IfcStackTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStackTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStackTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStackTerminal::declaration() const { return *IFC4X3_RC2_IfcStackTerminal_type; } @@ -21595,7 +21595,7 @@ Ifc4x3_rc2::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, // Function implementations for IfcStair boost::optional< ::Ifc4x3_rc2::IfcStairTypeEnum::Value > Ifc4x3_rc2::IfcStair::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcStairTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStairTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStairTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStair::declaration() const { return *IFC4X3_RC2_IfcStair_type; } @@ -21605,15 +21605,15 @@ Ifc4x3_rc2::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHi // Function implementations for IfcStairFlight boost::optional< int > Ifc4x3_rc2::IfcStairFlight::NumberOfRisers() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } int v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< int > Ifc4x3_rc2::IfcStairFlight::NumberOfTreads() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStairFlight::RiserHeight() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStairFlight::TreadLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc2::IfcStairFlightTypeEnum::Value > Ifc4x3_rc2::IfcStairFlight::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcStairFlightTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc2::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStairFlightTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStairFlightTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStairFlight::declaration() const { return *IFC4X3_RC2_IfcStairFlight_type; } @@ -21643,7 +21643,7 @@ Ifc4x3_rc2::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4x3_rc2::If // Function implementations for IfcStructuralAction boost::optional< bool > Ifc4x3_rc2::IfcStructuralAction::DestabilizingLoad() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralAction::declaration() const { return *IFC4X3_RC2_IfcStructuralAction_type; } @@ -21670,9 +21670,9 @@ void Ifc4x3_rc2::IfcStructuralAnalysisModel::setPredefinedType(::Ifc4x3_rc2::Ifc ::Ifc4x3_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); } void Ifc4x3_rc2::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralLoadGroup >::ptr > Ifc4x3_rc2::IfcStructuralAnalysisModel::LoadedBy() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcStructuralLoadGroup >(); } -void Ifc4x3_rc2::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralResultGroup >::ptr > Ifc4x3_rc2::IfcStructuralAnalysisModel::HasResults() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc2::IfcStructuralResultGroup >(); } -void Ifc4x3_rc2::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcObjectPlacement* Ifc4x3_rc2::IfcStructuralAnalysisModel::SharedPlacement() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcObjectPlacement>(true); } void Ifc4x3_rc2::IfcStructuralAnalysisModel::setSharedPlacement(::Ifc4x3_rc2::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -21695,7 +21695,7 @@ Ifc4x3_rc2::IfcStructuralConnection::IfcStructuralConnection(std::string v1_Glob // Function implementations for IfcStructuralConnectionCondition boost::optional< std::string > Ifc4x3_rc2::IfcStructuralConnectionCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralConnectionCondition::declaration() const { return *IFC4X3_RC2_IfcStructuralConnectionCondition_type; } @@ -21705,7 +21705,7 @@ Ifc4x3_rc2::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(b // Function implementations for IfcStructuralCurveAction boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc2::IfcStructuralCurveAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_rc2::IfcStructuralCurveAction::PredefinedType() const { return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x3_rc2::IfcStructuralCurveAction::setPredefinedType(::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -21774,7 +21774,7 @@ Ifc4x3_rc2::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_ // Function implementations for IfcStructuralLoad boost::optional< std::string > Ifc4x3_rc2::IfcStructuralLoad::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoad::declaration() const { return *IFC4X3_RC2_IfcStructuralLoad_type; } @@ -21784,7 +21784,7 @@ Ifc4x3_rc2::IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > // Function implementations for IfcStructuralLoadCase boost::optional< std::vector< double > /*[3:3]*/ > Ifc4x3_rc2::IfcStructuralLoadCase::SelfWeightCoefficients() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< double > /*[3:3]*/ v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadCase::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadCase_type; } @@ -21796,7 +21796,7 @@ Ifc4x3_rc2::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId aggregate_of< ::Ifc4x3_rc2::IfcStructuralLoadOrResult >::ptr Ifc4x3_rc2::IfcStructuralLoadConfiguration::Values() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcStructuralLoadOrResult >(); } void Ifc4x3_rc2::IfcStructuralLoadConfiguration::setValues(aggregate_of< ::Ifc4x3_rc2::IfcStructuralLoadOrResult >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::vector< std::vector< double > > > Ifc4x3_rc2::IfcStructuralLoadConfiguration::Locations() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadConfiguration::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadConfiguration_type; } @@ -21812,9 +21812,9 @@ void Ifc4x3_rc2::IfcStructuralLoadGroup::setActionType(::Ifc4x3_rc2::IfcActionTy ::Ifc4x3_rc2::IfcActionSourceTypeEnum::Value Ifc4x3_rc2::IfcStructuralLoadGroup::ActionSource() const { return ::Ifc4x3_rc2::IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc2::IfcStructuralLoadGroup::setActionSource(::Ifc4x3_rc2::IfcActionSourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcActionSourceTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadGroup::Coefficient() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcStructuralLoadGroup::Purpose() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x3_rc2::IfcStructuralResultGroup::list::ptr Ifc4x3_rc2::IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(IFC4X3_RC2_IfcStructuralResultGroup_type, 6)->as(); } ::Ifc4x3_rc2::IfcStructuralAnalysisModel::list::ptr Ifc4x3_rc2::IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(IFC4X3_RC2_IfcStructuralAnalysisModel_type, 7)->as(); } @@ -21826,17 +21826,17 @@ Ifc4x3_rc2::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_Global // Function implementations for IfcStructuralLoadLinearForce boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearMomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearMomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadLinearForce::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadLinearForce_type; } @@ -21854,11 +21854,11 @@ Ifc4x3_rc2::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional // Function implementations for IfcStructuralLoadPlanarForce boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadPlanarForce::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadPlanarForce_type; } @@ -21868,17 +21868,17 @@ Ifc4x3_rc2::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::op // Function implementations for IfcStructuralLoadSingleDisplacement boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type; } @@ -21888,7 +21888,7 @@ Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplace // Function implementations for IfcStructuralLoadSingleDisplacementDistortion boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadSingleDisplacementDistortion_type; } @@ -21898,17 +21898,17 @@ Ifc4x3_rc2::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSing // Function implementations for IfcStructuralLoadSingleForce boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::ForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::ForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::ForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::MomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::MomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::MomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleForce::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadSingleForce_type; } @@ -21918,7 +21918,7 @@ Ifc4x3_rc2::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::op // Function implementations for IfcStructuralLoadSingleForceWarping boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleForceWarping::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadSingleForceWarping_type; } @@ -21936,11 +21936,11 @@ Ifc4x3_rc2::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< st // Function implementations for IfcStructuralLoadTemperature boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadTemperature::DeltaTConstant() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadTemperature::DeltaTY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadTemperature::DeltaTZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadTemperature::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadTemperature_type; } @@ -22016,7 +22016,7 @@ Ifc4x3_rc2::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_Gl // Function implementations for IfcStructuralSurfaceAction boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc2::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_rc2::IfcStructuralSurfaceAction::PredefinedType() const { return ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x3_rc2::IfcStructuralSurfaceAction::setPredefinedType(::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -22038,7 +22038,7 @@ Ifc4x3_rc2::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std:: ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4x3_rc2::IfcStructuralSurfaceMember::PredefinedType() const { return ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc2::IfcStructuralSurfaceMember::setPredefinedType(::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcStructuralSurfaceMember::Thickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStructuralSurfaceMember::declaration() const { return *IFC4X3_RC2_IfcStructuralSurfaceMember_type; } @@ -22078,7 +22078,7 @@ void Ifc4x3_rc2::IfcStyledItem::setItem(::Ifc4x3_rc2::IfcRepresentationItem* v) aggregate_of_instance::ptr Ifc4x3_rc2::IfcStyledItem::Styles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcStyledItem::setStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcStyledItem::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcStyledItem::declaration() const { return *IFC4X3_RC2_IfcStyledItem_type; } @@ -22096,7 +22096,7 @@ Ifc4x3_rc2::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4x3_rc2::IfcRe // Function implementations for IfcSubContractResource boost::optional< ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::Value > Ifc4x3_rc2::IfcSubContractResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSubContractResource::declaration() const { return *IFC4X3_RC2_IfcSubContractResource_type; } @@ -22158,7 +22158,7 @@ Ifc4x3_rc2::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4x // Function implementations for IfcSurfaceFeature boost::optional< ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::Value > Ifc4x3_rc2::IfcSurfaceFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceFeature::declaration() const { return *IFC4X3_RC2_IfcSurfaceFeature_type; } @@ -22190,11 +22190,11 @@ Ifc4x3_rc2::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4x3_rc2::IfcProf // Function implementations for IfcSurfaceReinforcementArea boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc2::IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc2::IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceReinforcementArea::declaration() const { return *IFC4X3_RC2_IfcSurfaceReinforcementArea_type; } @@ -22232,9 +22232,9 @@ Ifc4x3_rc2::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4x3_rc2::IfcCo // Function implementations for IfcSurfaceStyleRefraction boost::optional< double > Ifc4x3_rc2::IfcSurfaceStyleRefraction::RefractionIndex() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSurfaceStyleRefraction::DispersionFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleRefraction::declaration() const { return *IFC4X3_RC2_IfcSurfaceStyleRefraction_type; } @@ -22268,7 +22268,7 @@ Ifc4x3_rc2::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4x3_rc2::Ifc ::Ifc4x3_rc2::IfcColourRgb* Ifc4x3_rc2::IfcSurfaceStyleShading::SurfaceColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcColourRgb>(true); } void Ifc4x3_rc2::IfcSurfaceStyleShading::setSurfaceColour(::Ifc4x3_rc2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSurfaceStyleShading::Transparency() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleShading::declaration() const { return *IFC4X3_RC2_IfcSurfaceStyleShading_type; } @@ -22292,11 +22292,11 @@ void Ifc4x3_rc2::IfcSurfaceTexture::setRepeatS(bool v) { {IfcWrite::IfcWriteArgu bool Ifc4x3_rc2::IfcSurfaceTexture::RepeatT() const { bool v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcSurfaceTexture::setRepeatT(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcSurfaceTexture::Mode() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* Ifc4x3_rc2::IfcSurfaceTexture::TextureTransform() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcCartesianTransformationOperator2D>(true); } void Ifc4x3_rc2::IfcSurfaceTexture::setTextureTransform(::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcSurfaceTexture::Parameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc2::IfcTextureCoordinate::list::ptr Ifc4x3_rc2::IfcSurfaceTexture::IsMappedBy() const { return data_->getInverse(IFC4X3_RC2_IfcTextureCoordinate_type, 0)->as(); } ::Ifc4x3_rc2::IfcSurfaceStyleWithTextures::list::ptr Ifc4x3_rc2::IfcSurfaceTexture::UsedInStyles() const { return data_->getInverse(IFC4X3_RC2_IfcSurfaceStyleWithTextures_type, 0)->as(); } @@ -22324,11 +22324,11 @@ void Ifc4x3_rc2::IfcSweptDiskSolid::setDirectrix(::Ifc4x3_rc2::IfcCurve* v) { {I double Ifc4x3_rc2::IfcSweptDiskSolid::Radius() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcSweptDiskSolid::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSweptDiskSolid::InnerRadius() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSweptDiskSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcSweptDiskSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSweptDiskSolid::declaration() const { return *IFC4X3_RC2_IfcSweptDiskSolid_type; } @@ -22338,7 +22338,7 @@ Ifc4x3_rc2::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4x3_rc2::IfcCurve* v1_Dire // Function implementations for IfcSweptDiskSolidPolygonal boost::optional< double > Ifc4x3_rc2::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSweptDiskSolidPolygonal::declaration() const { return *IFC4X3_RC2_IfcSweptDiskSolidPolygonal_type; } @@ -22360,7 +22360,7 @@ Ifc4x3_rc2::IfcSweptSurface::IfcSweptSurface(::Ifc4x3_rc2::IfcProfileDef* v1_Swe // Function implementations for IfcSwitchingDevice boost::optional< ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::Value > Ifc4x3_rc2::IfcSwitchingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSwitchingDevice::declaration() const { return *IFC4X3_RC2_IfcSwitchingDevice_type; } @@ -22390,7 +22390,7 @@ Ifc4x3_rc2::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwner // Function implementations for IfcSystemFurnitureElement boost::optional< ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc2::IfcSystemFurnitureElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSystemFurnitureElement::declaration() const { return *IFC4X3_RC2_IfcSystemFurnitureElement_type; } @@ -22400,7 +22400,7 @@ Ifc4x3_rc2::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_ // Function implementations for IfcSystemFurnitureElementType boost::optional< ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc2::IfcSystemFurnitureElementType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc2::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcSystemFurnitureElementType::declaration() const { return *IFC4X3_RC2_IfcSystemFurnitureElementType_type; } @@ -22418,15 +22418,15 @@ void Ifc4x3_rc2::IfcTShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc2::IfcTShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcTShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTShapeProfileDef::WebEdgeRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTShapeProfileDef::WebSlope() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcTShapeProfileDef_type; } @@ -22436,11 +22436,11 @@ Ifc4x3_rc2::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4x3_rc2::IfcProfileTyp // Function implementations for IfcTable boost::optional< std::string > Ifc4x3_rc2::IfcTable::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableRow >::ptr > Ifc4x3_rc2::IfcTable::Rows() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcTableRow >(); } -void Ifc4x3_rc2::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableColumn >::ptr > Ifc4x3_rc2::IfcTable::Columns() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcTableColumn >(); } -void Ifc4x3_rc2::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTable::declaration() const { return *IFC4X3_RC2_IfcTable_type; } @@ -22450,11 +22450,11 @@ Ifc4x3_rc2::IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::op // Function implementations for IfcTableColumn boost::optional< std::string > Ifc4x3_rc2::IfcTableColumn::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTableColumn::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTableColumn::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcTableColumn::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcUnit>(true); } void Ifc4x3_rc2::IfcTableColumn::setUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc2::IfcReference* Ifc4x3_rc2::IfcTableColumn::ReferencePath() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcReference>(true); } @@ -22468,9 +22468,9 @@ Ifc4x3_rc2::IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Ide // Function implementations for IfcTableRow boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc2::IfcTableRow::RowCells() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(0); return v; } -void Ifc4x3_rc2::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc2::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< bool > Ifc4x3_rc2::IfcTableRow::IsHeading() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTableRow::declaration() const { return *IFC4X3_RC2_IfcTableRow_type; } @@ -22480,7 +22480,7 @@ Ifc4x3_rc2::IfcTableRow::IfcTableRow(boost::optional< aggregate_of_instance::ptr // Function implementations for IfcTank boost::optional< ::Ifc4x3_rc2::IfcTankTypeEnum::Value > Ifc4x3_rc2::IfcTank::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTankTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTankTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTankTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTank::declaration() const { return *IFC4X3_RC2_IfcTank_type; } @@ -22500,17 +22500,17 @@ Ifc4x3_rc2::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcTask boost::optional< std::string > Ifc4x3_rc2::IfcTask::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTask::WorkMethod() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } bool Ifc4x3_rc2::IfcTask::IsMilestone() const { bool v = *data_->getArgument(9); return v; } void Ifc4x3_rc2::IfcTask::setIsMilestone(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< int > Ifc4x3_rc2::IfcTask::Priority() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } int v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc2::IfcTaskTime* Ifc4x3_rc2::IfcTask::TaskTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc2::IfcTaskTime>(true); } void Ifc4x3_rc2::IfcTask::setTaskTime(::Ifc4x3_rc2::IfcTaskTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc2::IfcTaskTypeEnum::Value > Ifc4x3_rc2::IfcTask::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTaskTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc2::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTaskTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTaskTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTask::declaration() const { return *IFC4X3_RC2_IfcTask_type; } @@ -22520,39 +22520,39 @@ Ifc4x3_rc2::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHist // Function implementations for IfcTaskTime boost::optional< ::Ifc4x3_rc2::IfcTaskDurationEnum::Value > Ifc4x3_rc2::IfcTaskTime::DurationType() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTaskDurationEnum::FromString(*data_->getArgument(3)); } -void Ifc4x3_rc2::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_rc2::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTaskDurationEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_rc2::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTaskDurationEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ScheduleDuration() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::EarlyStart() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::EarlyFinish() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::LateStart() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::LateFinish() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::FreeFloat() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::TotalFloat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< bool > Ifc4x3_rc2::IfcTaskTime::IsCritical() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } bool v = *data_->getArgument(13); return v; } -void Ifc4x3_rc2::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::StatusTime() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc2::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ActualDuration() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x3_rc2::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ActualStart() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } std::string v = *data_->getArgument(16); return v; } -void Ifc4x3_rc2::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ActualFinish() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } std::string v = *data_->getArgument(17); return v; } -void Ifc4x3_rc2::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::RemainingTime() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x3_rc2::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTaskTime::Completion() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } double v = *data_->getArgument(19); return v; } -void Ifc4x3_rc2::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x3_rc2::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTaskTime::declaration() const { return *IFC4X3_RC2_IfcTaskTime_type; } @@ -22574,7 +22574,7 @@ Ifc4x3_rc2::IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::str ::Ifc4x3_rc2::IfcTaskTypeEnum::Value Ifc4x3_rc2::IfcTaskType::PredefinedType() const { return ::Ifc4x3_rc2::IfcTaskTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc2::IfcTaskType::setPredefinedType(::Ifc4x3_rc2::IfcTaskTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTaskTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTaskType::WorkMethod() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTaskType::declaration() const { return *IFC4X3_RC2_IfcTaskType_type; } @@ -22584,17 +22584,17 @@ Ifc4x3_rc2::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcTelecomAddress boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcTelecomAddress::TelephoneNumbers() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcTelecomAddress::FacsimileNumbers() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTelecomAddress::PagerNumber() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcTelecomAddress::ElectronicMailAddresses() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTelecomAddress::WWWHomePageURL() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::IfcTelecomAddress::MessagingIDs() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTelecomAddress::declaration() const { return *IFC4X3_RC2_IfcTelecomAddress_type; } @@ -22604,21 +22604,21 @@ Ifc4x3_rc2::IfcTelecomAddress::IfcTelecomAddress(boost::optional< ::Ifc4x3_rc2:: // Function implementations for IfcTendon boost::optional< ::Ifc4x3_rc2::IfcTendonTypeEnum::Value > Ifc4x3_rc2::IfcTendon::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc2::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTendonTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTendonTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTendon::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTendon::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTendon::TensionForce() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTendon::PreStress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc2::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTendon::FrictionCoefficient() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc2::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc2::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTendon::AnchorageSlip() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc2::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc2::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTendon::MinCurvatureRadius() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc2::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc2::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTendon::declaration() const { return *IFC4X3_RC2_IfcTendon_type; } @@ -22628,7 +22628,7 @@ Ifc4x3_rc2::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwner // Function implementations for IfcTendonAnchor boost::optional< ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::Value > Ifc4x3_rc2::IfcTendonAnchor::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc2::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTendonAnchor::declaration() const { return *IFC4X3_RC2_IfcTendonAnchor_type; } @@ -22670,11 +22670,11 @@ Ifc4x3_rc2::IfcTendonConduitType::IfcTendonConduitType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcTendonTypeEnum::Value Ifc4x3_rc2::IfcTendonType::PredefinedType() const { return ::Ifc4x3_rc2::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc2::IfcTendonType::setPredefinedType(::Ifc4x3_rc2::IfcTendonTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTendonTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTendonType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTendonType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTendonType::SheathDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTendonType::declaration() const { return *IFC4X3_RC2_IfcTendonType_type; } @@ -22736,7 +22736,7 @@ void Ifc4x3_rc2::IfcTextStyle::setTextStyle(::Ifc4x3_rc2::IfcTextStyleTextModel* ::Ifc4x3_rc2::IfcTextFontSelect* Ifc4x3_rc2::IfcTextStyle::TextFontStyle() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcTextFontSelect>(true); } void Ifc4x3_rc2::IfcTextStyle::setTextFontStyle(::Ifc4x3_rc2::IfcTextFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x3_rc2::IfcTextStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTextStyle::declaration() const { return *IFC4X3_RC2_IfcTextStyle_type; } @@ -22748,11 +22748,11 @@ Ifc4x3_rc2::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, : std::vector< std::string > /*[1:?]*/ Ifc4x3_rc2::IfcTextStyleFontModel::FontFamily() const { std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleFontModel::FontStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleFontModel::FontVariant() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleFontModel::FontWeight() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcTextStyleFontModel::FontSize() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); } void Ifc4x3_rc2::IfcTextStyleFontModel::setFontSize(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -22778,15 +22778,15 @@ Ifc4x3_rc2::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4x3_rc2: ::Ifc4x3_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcTextStyleTextModel::TextIndent() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); } void Ifc4x3_rc2::IfcTextStyleTextModel::setTextIndent(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleTextModel::TextAlign() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleTextModel::TextDecoration() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcTextStyleTextModel::LetterSpacing() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); } void Ifc4x3_rc2::IfcTextStyleTextModel::setLetterSpacing(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcTextStyleTextModel::WordSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); } void Ifc4x3_rc2::IfcTextStyleTextModel::setWordSpacing(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleTextModel::TextTransform() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcTextStyleTextModel::LineHeight() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); } void Ifc4x3_rc2::IfcTextStyleTextModel::setLineHeight(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -22810,7 +22810,7 @@ Ifc4x3_rc2::IfcTextureCoordinate::IfcTextureCoordinate(aggregate_of< ::Ifc4x3_rc std::string Ifc4x3_rc2::IfcTextureCoordinateGenerator::Mode() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc2::IfcTextureCoordinateGenerator::setMode(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[1:?]*/ > Ifc4x3_rc2::IfcTextureCoordinateGenerator::Parameter() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTextureCoordinateGenerator::declaration() const { return *IFC4X3_RC2_IfcTextureCoordinateGenerator_type; } @@ -22866,7 +22866,7 @@ Ifc4x3_rc2::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v std::string Ifc4x3_rc2::IfcTimeSeries::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc2::IfcTimeSeries::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTimeSeries::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } std::string Ifc4x3_rc2::IfcTimeSeries::StartTime() const { std::string v = *data_->getArgument(2); return v; } void Ifc4x3_rc2::IfcTimeSeries::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::string Ifc4x3_rc2::IfcTimeSeries::EndTime() const { std::string v = *data_->getArgument(3); return v; } @@ -22876,7 +22876,7 @@ void Ifc4x3_rc2::IfcTimeSeries::setTimeSeriesDataType(::Ifc4x3_rc2::IfcTimeSerie ::Ifc4x3_rc2::IfcDataOriginEnum::Value Ifc4x3_rc2::IfcTimeSeries::DataOrigin() const { return ::Ifc4x3_rc2::IfcDataOriginEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc2::IfcTimeSeries::setDataOrigin(::Ifc4x3_rc2::IfcDataOriginEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDataOriginEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTimeSeries::UserDefinedDataOrigin() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcTimeSeries::Unit() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcUnit>(true); } void Ifc4x3_rc2::IfcTimeSeries::setUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } @@ -22927,7 +22927,7 @@ Ifc4x3_rc2::IfcToroidalSurface::IfcToroidalSurface(::Ifc4x3_rc2::IfcAxis2Placeme // Function implementations for IfcTrackElement boost::optional< ::Ifc4x3_rc2::IfcTrackElementTypeEnum::Value > Ifc4x3_rc2::IfcTrackElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTrackElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTrackElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTrackElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTrackElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTrackElement::declaration() const { return *IFC4X3_RC2_IfcTrackElement_type; } @@ -22947,7 +22947,7 @@ Ifc4x3_rc2::IfcTrackElementType::IfcTrackElementType(std::string v1_GlobalId, :: // Function implementations for IfcTransformer boost::optional< ::Ifc4x3_rc2::IfcTransformerTypeEnum::Value > Ifc4x3_rc2::IfcTransformer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTransformerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTransformerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTransformerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTransformer::declaration() const { return *IFC4X3_RC2_IfcTransformer_type; } @@ -22967,9 +22967,9 @@ Ifc4x3_rc2::IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, ::If // Function implementations for IfcTransitionCurveSegment2D boost::optional< double > Ifc4x3_rc2::IfcTransitionCurveSegment2D::StartRadius() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc2::IfcTransitionCurveSegment2D::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc2::IfcTransitionCurveSegment2D::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc2::IfcTransitionCurveSegment2D::EndRadius() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcTransitionCurveSegment2D::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcTransitionCurveSegment2D::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } bool Ifc4x3_rc2::IfcTransitionCurveSegment2D::IsStartRadiusCCW() const { bool v = *data_->getArgument(5); return v; } void Ifc4x3_rc2::IfcTransitionCurveSegment2D::setIsStartRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } bool Ifc4x3_rc2::IfcTransitionCurveSegment2D::IsEndRadiusCCW() const { bool v = *data_->getArgument(6); return v; } @@ -23021,13 +23021,13 @@ Ifc4x3_rc2::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4x3_rc2::IfcProf // Function implementations for IfcTriangulatedFaceSet boost::optional< std::vector< std::vector< double > > > Ifc4x3_rc2::IfcTriangulatedFaceSet::Normals() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(1); return v; } -void Ifc4x3_rc2::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc2::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc2::IfcTriangulatedFaceSet::Closed() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc2::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc2::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::vector< std::vector< int > > Ifc4x3_rc2::IfcTriangulatedFaceSet::CoordIndex() const { std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } void Ifc4x3_rc2::IfcTriangulatedFaceSet::setCoordIndex(std::vector< std::vector< int > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::IfcTriangulatedFaceSet::PnIndex() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTriangulatedFaceSet::declaration() const { return *IFC4X3_RC2_IfcTriangulatedFaceSet_type; } @@ -23065,7 +23065,7 @@ Ifc4x3_rc2::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4x3_rc2::IfcCurve* v1_BasisCur // Function implementations for IfcTubeBundle boost::optional< ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::Value > Ifc4x3_rc2::IfcTubeBundle::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTubeBundleTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTubeBundleTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcTubeBundle::declaration() const { return *IFC4X3_RC2_IfcTubeBundle_type; } @@ -23085,9 +23085,9 @@ Ifc4x3_rc2::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcTypeObject boost::optional< std::string > Ifc4x3_rc2::IfcTypeObject::ApplicableOccurrence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertySetDefinition >::ptr > Ifc4x3_rc2::IfcTypeObject::HasPropertySets() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcPropertySetDefinition >(); } -void Ifc4x3_rc2::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(5,attr);} } ::Ifc4x3_rc2::IfcRelDefinesByType::list::ptr Ifc4x3_rc2::IfcTypeObject::Types() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByType_type, 5)->as(); } @@ -23098,11 +23098,11 @@ Ifc4x3_rc2::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4x3_rc2:: // Function implementations for IfcTypeProcess boost::optional< std::string > Ifc4x3_rc2::IfcTypeProcess::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTypeProcess::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTypeProcess::ProcessType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcRelAssignsToProcess::list::ptr Ifc4x3_rc2::IfcTypeProcess::OperatesOn() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToProcess_type, 6)->as(); } @@ -23113,9 +23113,9 @@ Ifc4x3_rc2::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4x3_rc2 // Function implementations for IfcTypeProduct boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > Ifc4x3_rc2::IfcTypeProduct::RepresentationMaps() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc2::IfcRepresentationMap >(); } -void Ifc4x3_rc2::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTypeProduct::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcRelAssignsToProduct::list::ptr Ifc4x3_rc2::IfcTypeProduct::ReferencedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToProduct_type, 6)->as(); } @@ -23126,11 +23126,11 @@ Ifc4x3_rc2::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4x3_rc2 // Function implementations for IfcTypeResource boost::optional< std::string > Ifc4x3_rc2::IfcTypeResource::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTypeResource::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcTypeResource::ResourceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc2::IfcRelAssignsToResource::list::ptr Ifc4x3_rc2::IfcTypeResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToResource_type, 6)->as(); } @@ -23149,11 +23149,11 @@ void Ifc4x3_rc2::IfcUShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc2::IfcUShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcUShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcUShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcUShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc2::IfcUShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcUShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcUShapeProfileDef_type; } @@ -23173,7 +23173,7 @@ Ifc4x3_rc2::IfcUnitAssignment::IfcUnitAssignment(aggregate_of_instance::ptr v1_U // Function implementations for IfcUnitaryControlElement boost::optional< ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::Value > Ifc4x3_rc2::IfcUnitaryControlElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcUnitaryControlElement::declaration() const { return *IFC4X3_RC2_IfcUnitaryControlElement_type; } @@ -23193,7 +23193,7 @@ Ifc4x3_rc2::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::stri // Function implementations for IfcUnitaryEquipment boost::optional< ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::Value > Ifc4x3_rc2::IfcUnitaryEquipment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcUnitaryEquipment::declaration() const { return *IFC4X3_RC2_IfcUnitaryEquipment_type; } @@ -23213,7 +23213,7 @@ Ifc4x3_rc2::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_Glob // Function implementations for IfcValve boost::optional< ::Ifc4x3_rc2::IfcValveTypeEnum::Value > Ifc4x3_rc2::IfcValve::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcValveTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcValveTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcValveTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcValve::declaration() const { return *IFC4X3_RC2_IfcValve_type; } @@ -23273,7 +23273,7 @@ Ifc4x3_rc2::IfcVertexPoint::IfcVertexPoint(::Ifc4x3_rc2::IfcPoint* v1_VertexGeom // Function implementations for IfcVibrationDamper boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc2::IfcVibrationDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcVibrationDamper::declaration() const { return *IFC4X3_RC2_IfcVibrationDamper_type; } @@ -23283,7 +23283,7 @@ Ifc4x3_rc2::IfcVibrationDamper::IfcVibrationDamper(std::string v1_GlobalId, ::If // Function implementations for IfcVibrationDamperType boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc2::IfcVibrationDamperType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc2::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcVibrationDamperType::declaration() const { return *IFC4X3_RC2_IfcVibrationDamperType_type; } @@ -23293,7 +23293,7 @@ Ifc4x3_rc2::IfcVibrationDamperType::IfcVibrationDamperType(std::string v1_Global // Function implementations for IfcVibrationIsolator boost::optional< ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::Value > Ifc4x3_rc2::IfcVibrationIsolator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcVibrationIsolator::declaration() const { return *IFC4X3_RC2_IfcVibrationIsolator_type; } @@ -23341,7 +23341,7 @@ Ifc4x3_rc2::IfcVoidStratum::IfcVoidStratum(std::string v1_GlobalId, ::Ifc4x3_rc2 // Function implementations for IfcVoidingFeature boost::optional< ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::Value > Ifc4x3_rc2::IfcVoidingFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcVoidingFeature::declaration() const { return *IFC4X3_RC2_IfcVoidingFeature_type; } @@ -23351,7 +23351,7 @@ Ifc4x3_rc2::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcWall boost::optional< ::Ifc4x3_rc2::IfcWallTypeEnum::Value > Ifc4x3_rc2::IfcWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcWall::declaration() const { return *IFC4X3_RC2_IfcWall_type; } @@ -23387,7 +23387,7 @@ Ifc4x3_rc2::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcWasteTerminal boost::optional< ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::Value > Ifc4x3_rc2::IfcWasteTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcWasteTerminal::declaration() const { return *IFC4X3_RC2_IfcWasteTerminal_type; } @@ -23415,15 +23415,15 @@ Ifc4x3_rc2::IfcWaterStratum::IfcWaterStratum(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcWindow boost::optional< double > Ifc4x3_rc2::IfcWindow::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindow::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc2::IfcWindowTypeEnum::Value > Ifc4x3_rc2::IfcWindow::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWindowTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc2::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWindowTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWindowTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value > Ifc4x3_rc2::IfcWindow::PartitioningType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc2::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcWindow::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcWindow::declaration() const { return *IFC4X3_RC2_IfcWindow_type; } @@ -23433,29 +23433,29 @@ Ifc4x3_rc2::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwner // Function implementations for IfcWindowLiningProperties boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::TransomThickness() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::MullionThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::FirstTransomOffset() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::SecondTransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::FirstMullionOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::SecondMullionOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } ::Ifc4x3_rc2::IfcShapeAspect* Ifc4x3_rc2::IfcWindowLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc4x3_rc2::IfcShapeAspect>(true); } void Ifc4x3_rc2::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc4x3_rc2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::LiningOffset() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcWindowLiningProperties::declaration() const { return *IFC4X3_RC2_IfcWindowLiningProperties_type; } @@ -23469,9 +23469,9 @@ void Ifc4x3_rc2::IfcWindowPanelProperties::setOperationType(::Ifc4x3_rc2::IfcWin ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::Value Ifc4x3_rc2::IfcWindowPanelProperties::PanelPosition() const { return ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc2::IfcWindowPanelProperties::setPanelPosition(::Ifc4x3_rc2::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowPanelProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc2::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcWindowPanelProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc2::IfcShapeAspect* Ifc4x3_rc2::IfcWindowPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcShapeAspect>(true); } void Ifc4x3_rc2::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc4x3_rc2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -23511,9 +23511,9 @@ void Ifc4x3_rc2::IfcWindowType::setPredefinedType(::Ifc4x3_rc2::IfcWindowTypeEnu ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value Ifc4x3_rc2::IfcWindowType::PartitioningType() const { return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc2::IfcWindowType::setPartitioningType(::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x3_rc2::IfcWindowType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x3_rc2::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc2::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcWindowType::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcWindowType::declaration() const { return *IFC4X3_RC2_IfcWindowType_type; } @@ -23523,11 +23523,11 @@ Ifc4x3_rc2::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4x3_rc2:: // Function implementations for IfcWorkCalendar boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcWorkTime >::ptr > Ifc4x3_rc2::IfcWorkCalendar::WorkingTimes() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc2::IfcWorkTime >(); } -void Ifc4x3_rc2::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc2::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcWorkTime >::ptr > Ifc4x3_rc2::IfcWorkCalendar::ExceptionTimes() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcWorkTime >(); } -void Ifc4x3_rc2::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::Value > Ifc4x3_rc2::IfcWorkCalendar::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc2::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcWorkCalendar::declaration() const { return *IFC4X3_RC2_IfcWorkCalendar_type; } @@ -23539,17 +23539,17 @@ Ifc4x3_rc2::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4x3_r std::string Ifc4x3_rc2::IfcWorkControl::CreationDate() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcWorkControl::setCreationDate(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > Ifc4x3_rc2::IfcWorkControl::Creators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcPerson >(); } -void Ifc4x3_rc2::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcWorkControl::Purpose() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcWorkControl::Duration() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc2::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc2::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcWorkControl::TotalFloat() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc2::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc2::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } std::string Ifc4x3_rc2::IfcWorkControl::StartTime() const { std::string v = *data_->getArgument(11); return v; } void Ifc4x3_rc2::IfcWorkControl::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcWorkControl::FinishTime() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc2::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc2::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcWorkControl::declaration() const { return *IFC4X3_RC2_IfcWorkControl_type; } @@ -23559,7 +23559,7 @@ Ifc4x3_rc2::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4x3_rc2 // Function implementations for IfcWorkPlan boost::optional< ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::Value > Ifc4x3_rc2::IfcWorkPlan::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc2::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWorkPlanTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWorkPlanTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcWorkPlan::declaration() const { return *IFC4X3_RC2_IfcWorkPlan_type; } @@ -23569,7 +23569,7 @@ Ifc4x3_rc2::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcO // Function implementations for IfcWorkSchedule boost::optional< ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::Value > Ifc4x3_rc2::IfcWorkSchedule::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc2::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc2::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcWorkSchedule::declaration() const { return *IFC4X3_RC2_IfcWorkSchedule_type; } @@ -23581,9 +23581,9 @@ Ifc4x3_rc2::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4x3_r ::Ifc4x3_rc2::IfcRecurrencePattern* Ifc4x3_rc2::IfcWorkTime::RecurrencePattern() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcRecurrencePattern>(true); } void Ifc4x3_rc2::IfcWorkTime::setRecurrencePattern(::Ifc4x3_rc2::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcWorkTime::Start() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc2::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc2::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc2::IfcWorkTime::Finish() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcWorkTime::declaration() const { return *IFC4X3_RC2_IfcWorkTime_type; } @@ -23601,9 +23601,9 @@ void Ifc4x3_rc2::IfcZShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc2::IfcZShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc2::IfcZShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc2::IfcZShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc2::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc2::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc2::IfcZShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc2::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc2::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcZShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcZShapeProfileDef_type; } @@ -23613,7 +23613,7 @@ Ifc4x3_rc2::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4x3_rc2::IfcProfileTyp // Function implementations for IfcZone boost::optional< std::string > Ifc4x3_rc2::IfcZone::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc2::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc2::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc2::IfcZone::declaration() const { return *IFC4X3_RC2_IfcZone_type; } diff --git a/src/ifcparse/Ifc4x3_rc2.h b/src/ifcparse/Ifc4x3_rc2.h index a382d8958f..473b69a065 100644 --- a/src/ifcparse/Ifc4x3_rc2.h +++ b/src/ifcparse/Ifc4x3_rc2.h @@ -42,7 +42,9 @@ struct Ifc4x3_rc2 { -static const IfcParse::schema_definition& get_schema(); +IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); + +IFC_PARSE_API static void clear_schema(); static const char* const Identifier; diff --git a/src/ifcparse/Ifc4x3_rc3-schema.cpp b/src/ifcparse/Ifc4x3_rc3-schema.cpp index eac792db0a..68b4918a47 100644 --- a/src/ifcparse/Ifc4x3_rc3-schema.cpp +++ b/src/ifcparse/Ifc4x3_rc3-schema.cpp @@ -17122,9 +17122,16 @@ IfcParse::schema_definition* IFC4X3_RC3_populate_schema() { #pragma optimize("", on) #endif -const schema_definition& Ifc4x3_rc3::get_schema() { +static std::unique_ptr schema; - static const schema_definition* s = IFC4X3_RC3_populate_schema(); - return *s; +void Ifc4x3_rc3::clear_schema() { + schema.reset(); +} + +const schema_definition& Ifc4x3_rc3::get_schema() { + if (!schema) { + schema.reset(IFC4X3_RC3_populate_schema()); + } + return *schema; } diff --git a/src/ifcparse/Ifc4x3_rc3.cpp b/src/ifcparse/Ifc4x3_rc3.cpp index 70e25bb91c..3733a9ede0 100644 --- a/src/ifcparse/Ifc4x3_rc3.cpp +++ b/src/ifcparse/Ifc4x3_rc3.cpp @@ -13130,11 +13130,11 @@ Ifc4x3_rc3::IfcWarpingMomentMeasure::operator double() const { return *data_->ge // Function implementations for IfcActionRequest boost::optional< ::Ifc4x3_rc3::IfcActionRequestTypeEnum::Value > Ifc4x3_rc3::IfcActionRequest::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcActionRequestTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc3::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcActionRequestTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcActionRequestTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcActionRequest::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcActionRequest::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcActionRequest::declaration() const { return *IFC4X3_RC3_IfcActionRequest_type; } @@ -13157,9 +13157,9 @@ Ifc4x3_rc3::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHi ::Ifc4x3_rc3::IfcRoleEnum::Value Ifc4x3_rc3::IfcActorRole::Role() const { return ::Ifc4x3_rc3::IfcRoleEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc3::IfcActorRole::setRole(::Ifc4x3_rc3::IfcRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcRoleEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcActorRole::UserDefinedRole() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcActorRole::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc3::IfcActorRole::HasExternalReference() const { return data_->getInverse(IFC4X3_RC3_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -13170,7 +13170,7 @@ Ifc4x3_rc3::IfcActorRole::IfcActorRole(::Ifc4x3_rc3::IfcRoleEnum::Value v1_Role, // Function implementations for IfcActuator boost::optional< ::Ifc4x3_rc3::IfcActuatorTypeEnum::Value > Ifc4x3_rc3::IfcActuator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcActuatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcActuatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcActuatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcActuator::declaration() const { return *IFC4X3_RC3_IfcActuator_type; } @@ -13190,11 +13190,11 @@ Ifc4x3_rc3::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcAddress boost::optional< ::Ifc4x3_rc3::IfcAddressTypeEnum::Value > Ifc4x3_rc3::IfcAddress::Purpose() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcAddressTypeEnum::FromString(*data_->getArgument(0)); } -void Ifc4x3_rc3::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_rc3::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAddressTypeEnum::ToString(*v)));data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_rc3::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAddressTypeEnum::ToString(*v)));}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcAddress::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcAddress::UserDefinedPurpose() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcPerson::list::ptr Ifc4x3_rc3::IfcAddress::OfPerson() const { return data_->getInverse(IFC4X3_RC3_IfcPerson_type, 7)->as(); } ::Ifc4x3_rc3::IfcOrganization::list::ptr Ifc4x3_rc3::IfcAddress::OfOrganization() const { return data_->getInverse(IFC4X3_RC3_IfcOrganization_type, 4)->as(); } @@ -13232,7 +13232,7 @@ Ifc4x3_rc3::IfcAdvancedFace::IfcAdvancedFace(aggregate_of< ::Ifc4x3_rc3::IfcFace // Function implementations for IfcAirTerminal boost::optional< ::Ifc4x3_rc3::IfcAirTerminalTypeEnum::Value > Ifc4x3_rc3::IfcAirTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAirTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAirTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcAirTerminal::declaration() const { return *IFC4X3_RC3_IfcAirTerminal_type; } @@ -13242,7 +13242,7 @@ Ifc4x3_rc3::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4x3_rc3 // Function implementations for IfcAirTerminalBox boost::optional< ::Ifc4x3_rc3::IfcAirTerminalBoxTypeEnum::Value > Ifc4x3_rc3::IfcAirTerminalBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAirTerminalBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAirTerminalBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcAirTerminalBox::declaration() const { return *IFC4X3_RC3_IfcAirTerminalBox_type; } @@ -13272,7 +13272,7 @@ Ifc4x3_rc3::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::If // Function implementations for IfcAirToAirHeatRecovery boost::optional< ::Ifc4x3_rc3::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4x3_rc3::IfcAirToAirHeatRecovery::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcAirToAirHeatRecovery::declaration() const { return *IFC4X3_RC3_IfcAirToAirHeatRecovery_type; } @@ -13292,7 +13292,7 @@ Ifc4x3_rc3::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string // Function implementations for IfcAlarm boost::optional< ::Ifc4x3_rc3::IfcAlarmTypeEnum::Value > Ifc4x3_rc3::IfcAlarm::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcAlarmTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAlarmTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAlarmTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcAlarm::declaration() const { return *IFC4X3_RC3_IfcAlarm_type; } @@ -13312,7 +13312,7 @@ Ifc4x3_rc3::IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, ::Ifc4x3_rc3::If // Function implementations for IfcAlignment boost::optional< ::Ifc4x3_rc3::IfcAlignmentTypeEnum::Value > Ifc4x3_rc3::IfcAlignment::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcAlignmentTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc3::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAlignmentTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAlignmentTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcAlignment::declaration() const { return *IFC4X3_RC3_IfcAlignment_type; } @@ -13338,11 +13338,11 @@ void Ifc4x3_rc3::IfcAlignmentCantSegment::setHorizontalLength(double v) { {IfcWr double Ifc4x3_rc3::IfcAlignmentCantSegment::StartCantLeft() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc3::IfcAlignmentCantSegment::setStartCantLeft(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAlignmentCantSegment::EndCantLeft() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcAlignmentCantSegment::setEndCantLeft(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcAlignmentCantSegment::setEndCantLeft(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } double Ifc4x3_rc3::IfcAlignmentCantSegment::StartCantRight() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcAlignmentCantSegment::setStartCantRight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAlignmentCantSegment::EndCantRight() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcAlignmentCantSegment::setEndCantRight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcAlignmentCantSegment::setEndCantRight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcAlignmentCantSegmentTypeEnum::Value Ifc4x3_rc3::IfcAlignmentCantSegment::PredefinedType() const { return ::Ifc4x3_rc3::IfcAlignmentCantSegmentTypeEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc3::IfcAlignmentCantSegment::setPredefinedType(::Ifc4x3_rc3::IfcAlignmentCantSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcAlignmentCantSegmentTypeEnum::ToString(v)));data_->setArgument(8,attr);} } @@ -13372,7 +13372,7 @@ void Ifc4x3_rc3::IfcAlignmentHorizontalSegment::setEndRadiusOfCurvature(double v double Ifc4x3_rc3::IfcAlignmentHorizontalSegment::SegmentLength() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcAlignmentHorizontalSegment::setSegmentLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAlignmentHorizontalSegment::GravityCenterLineHeight() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcAlignmentHorizontalSegment::setGravityCenterLineHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcAlignmentHorizontalSegment::setGravityCenterLineHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcAlignmentHorizontalSegmentTypeEnum::Value Ifc4x3_rc3::IfcAlignmentHorizontalSegment::PredefinedType() const { return ::Ifc4x3_rc3::IfcAlignmentHorizontalSegmentTypeEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc3::IfcAlignmentHorizontalSegment::setPredefinedType(::Ifc4x3_rc3::IfcAlignmentHorizontalSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcAlignmentHorizontalSegmentTypeEnum::ToString(v)));data_->setArgument(8,attr);} } @@ -13384,9 +13384,9 @@ Ifc4x3_rc3::IfcAlignmentHorizontalSegment::IfcAlignmentHorizontalSegment(boost:: // Function implementations for IfcAlignmentParameterSegment boost::optional< std::string > Ifc4x3_rc3::IfcAlignmentParameterSegment::StartTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcAlignmentParameterSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcAlignmentParameterSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcAlignmentParameterSegment::EndTag() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcAlignmentParameterSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcAlignmentParameterSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcAlignmentParameterSegment::declaration() const { return *IFC4X3_RC3_IfcAlignmentParameterSegment_type; } @@ -13424,7 +13424,7 @@ void Ifc4x3_rc3::IfcAlignmentVerticalSegment::setStartGradient(double v) { {IfcW double Ifc4x3_rc3::IfcAlignmentVerticalSegment::EndGradient() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcAlignmentVerticalSegment::setEndGradient(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAlignmentVerticalSegment::RadiusOfCurvature() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcAlignmentVerticalSegment::setRadiusOfCurvature(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcAlignmentVerticalSegment::setRadiusOfCurvature(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcAlignmentVerticalSegmentTypeEnum::Value Ifc4x3_rc3::IfcAlignmentVerticalSegment::PredefinedType() const { return ::Ifc4x3_rc3::IfcAlignmentVerticalSegmentTypeEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc3::IfcAlignmentVerticalSegment::setPredefinedType(::Ifc4x3_rc3::IfcAlignmentVerticalSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcAlignmentVerticalSegmentTypeEnum::ToString(v)));data_->setArgument(8,attr);} } @@ -13436,7 +13436,7 @@ Ifc4x3_rc3::IfcAlignmentVerticalSegment::IfcAlignmentVerticalSegment(boost::opti // Function implementations for IfcAnnotation boost::optional< ::Ifc4x3_rc3::IfcAnnotationTypeEnum::Value > Ifc4x3_rc3::IfcAnnotation::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcAnnotationTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc3::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAnnotationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAnnotationTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAnnotationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAnnotationTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc3::IfcAnnotation::ContainedInStructure() const { return data_->getInverse(IFC4X3_RC3_IfcRelContainedInSpatialStructure_type, 4)->as(); } @@ -13449,7 +13449,7 @@ Ifc4x3_rc3::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4x3_rc3:: ::Ifc4x3_rc3::IfcCurve* Ifc4x3_rc3::IfcAnnotationFillArea::OuterBoundary() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc3::IfcCurve>(true); } void Ifc4x3_rc3::IfcAnnotationFillArea::setOuterBoundary(::Ifc4x3_rc3::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcCurve >::ptr > Ifc4x3_rc3::IfcAnnotationFillArea::InnerBoundaries() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc3::IfcCurve >(); } -void Ifc4x3_rc3::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcAnnotationFillArea::declaration() const { return *IFC4X3_RC3_IfcAnnotationFillArea_type; } @@ -13475,25 +13475,25 @@ Ifc4x3_rc3::IfcApplication::IfcApplication(::Ifc4x3_rc3::IfcOrganization* v1_App // Function implementations for IfcAppliedValue boost::optional< std::string > Ifc4x3_rc3::IfcAppliedValue::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcAppliedValue::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc3::IfcAppliedValueSelect* Ifc4x3_rc3::IfcAppliedValue::AppliedValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc3::IfcAppliedValueSelect>(true); } void Ifc4x3_rc3::IfcAppliedValue::setAppliedValue(::Ifc4x3_rc3::IfcAppliedValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcMeasureWithUnit* Ifc4x3_rc3::IfcAppliedValue::UnitBasis() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcMeasureWithUnit>(true); } void Ifc4x3_rc3::IfcAppliedValue::setUnitBasis(::Ifc4x3_rc3::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcAppliedValue::ApplicableDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcAppliedValue::FixedUntilDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcAppliedValue::Category() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcAppliedValue::Condition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc3::IfcArithmeticOperatorEnum::Value > Ifc4x3_rc3::IfcAppliedValue::ArithmeticOperator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcArithmeticOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_rc3::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcArithmeticOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_rc3::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcArithmeticOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAppliedValue >::ptr > Ifc4x3_rc3::IfcAppliedValue::Components() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc3::IfcAppliedValue >(); } -void Ifc4x3_rc3::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x3_rc3::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc3::IfcAppliedValue::HasExternalReference() const { return data_->getInverse(IFC4X3_RC3_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -13504,19 +13504,19 @@ Ifc4x3_rc3::IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_N // Function implementations for IfcApproval boost::optional< std::string > Ifc4x3_rc3::IfcApproval::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcApproval::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcApproval::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcApproval::TimeOfApproval() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcApproval::Status() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcApproval::Level() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcApproval::Qualifier() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc3::IfcActorSelect* Ifc4x3_rc3::IfcApproval::RequestingApproval() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc3::IfcActorSelect>(true); } void Ifc4x3_rc3::IfcApproval::setRequestingApproval(::Ifc4x3_rc3::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcActorSelect* Ifc4x3_rc3::IfcApproval::GivingApproval() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc3::IfcActorSelect>(true); } @@ -13577,7 +13577,7 @@ Ifc4x3_rc3::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::I // Function implementations for IfcAsset boost::optional< std::string > Ifc4x3_rc3::IfcAsset::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcCostValue* Ifc4x3_rc3::IfcAsset::OriginalValue() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcCostValue>(true); } void Ifc4x3_rc3::IfcAsset::setOriginalValue(::Ifc4x3_rc3::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } ::Ifc4x3_rc3::IfcCostValue* Ifc4x3_rc3::IfcAsset::CurrentValue() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc3::IfcCostValue>(true); } @@ -13591,7 +13591,7 @@ void Ifc4x3_rc3::IfcAsset::setUser(::Ifc4x3_rc3::IfcActorSelect* v) { {IfcWrite: ::Ifc4x3_rc3::IfcPerson* Ifc4x3_rc3::IfcAsset::ResponsiblePerson() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc3::IfcPerson>(true); } void Ifc4x3_rc3::IfcAsset::setResponsiblePerson(::Ifc4x3_rc3::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcAsset::IncorporationDate() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x3_rc3::IfcCostValue* Ifc4x3_rc3::IfcAsset::DepreciatedValue() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc3::IfcCostValue>(true); } void Ifc4x3_rc3::IfcAsset::setDepreciatedValue(::Ifc4x3_rc3::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -13611,21 +13611,21 @@ void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { {Ifc double Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } double Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { double v = *data_->getArgument(8); return v; } void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::declaration() const { return *IFC4X3_RC3_IfcAsymmetricIShapeProfileDef_type; } @@ -13635,7 +13635,7 @@ Ifc4x3_rc3::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4x // Function implementations for IfcAudioVisualAppliance boost::optional< ::Ifc4x3_rc3::IfcAudioVisualApplianceTypeEnum::Value > Ifc4x3_rc3::IfcAudioVisualAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAudioVisualApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAudioVisualApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcAudioVisualAppliance::declaration() const { return *IFC4X3_RC3_IfcAudioVisualAppliance_type; } @@ -13771,7 +13771,7 @@ Ifc4x3_rc3::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegre // Function implementations for IfcBeam boost::optional< ::Ifc4x3_rc3::IfcBeamTypeEnum::Value > Ifc4x3_rc3::IfcBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBeam::declaration() const { return *IFC4X3_RC3_IfcBeam_type; } @@ -13799,7 +13799,7 @@ Ifc4x3_rc3::IfcBeamType::IfcBeamType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcBearing boost::optional< ::Ifc4x3_rc3::IfcBearingTypeEnum::Value > Ifc4x3_rc3::IfcBearing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcBearingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBearingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBearingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBearing::declaration() const { return *IFC4X3_RC3_IfcBearing_type; } @@ -13845,7 +13845,7 @@ Ifc4x3_rc3::IfcBlock::IfcBlock(::Ifc4x3_rc3::IfcAxis2Placement3D* v1_Position, d // Function implementations for IfcBoiler boost::optional< ::Ifc4x3_rc3::IfcBoilerTypeEnum::Value > Ifc4x3_rc3::IfcBoiler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcBoilerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBoilerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBoilerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBoiler::declaration() const { return *IFC4X3_RC3_IfcBoiler_type; } @@ -13895,7 +13895,7 @@ Ifc4x3_rc3::IfcBorehole::IfcBorehole(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcBoundaryCondition boost::optional< std::string > Ifc4x3_rc3::IfcBoundaryCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBoundaryCondition::declaration() const { return *IFC4X3_RC3_IfcBoundaryCondition_type; } @@ -14019,7 +14019,7 @@ Ifc4x3_rc3::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4x3_rc3::IfcSurface* v1_Ba // Function implementations for IfcBridge boost::optional< ::Ifc4x3_rc3::IfcBridgeTypeEnum::Value > Ifc4x3_rc3::IfcBridge::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcBridgeTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBridgeTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBridgeTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBridge::declaration() const { return *IFC4X3_RC3_IfcBridge_type; } @@ -14029,9 +14029,9 @@ Ifc4x3_rc3::IfcBridge::IfcBridge(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwner // Function implementations for IfcBuilding boost::optional< double > Ifc4x3_rc3::IfcBuilding::ElevationOfRefHeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcBuilding::ElevationOfTerrain() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc3::IfcPostalAddress* Ifc4x3_rc3::IfcBuilding::BuildingAddress() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc3::IfcPostalAddress>(true); } void Ifc4x3_rc3::IfcBuilding::setBuildingAddress(::Ifc4x3_rc3::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } @@ -14043,7 +14043,7 @@ Ifc4x3_rc3::IfcBuilding::IfcBuilding(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcBuildingElementPart boost::optional< ::Ifc4x3_rc3::IfcBuildingElementPartTypeEnum::Value > Ifc4x3_rc3::IfcBuildingElementPart::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBuildingElementPartTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBuildingElementPartTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBuildingElementPart::declaration() const { return *IFC4X3_RC3_IfcBuildingElementPart_type; } @@ -14063,7 +14063,7 @@ Ifc4x3_rc3::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v // Function implementations for IfcBuildingElementProxy boost::optional< ::Ifc4x3_rc3::IfcBuildingElementProxyTypeEnum::Value > Ifc4x3_rc3::IfcBuildingElementProxy::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBuildingElementProxyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBuildingElementProxyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBuildingElementProxy::declaration() const { return *IFC4X3_RC3_IfcBuildingElementProxy_type; } @@ -14083,7 +14083,7 @@ Ifc4x3_rc3::IfcBuildingElementProxyType::IfcBuildingElementProxyType(std::string // Function implementations for IfcBuildingStorey boost::optional< double > Ifc4x3_rc3::IfcBuildingStorey::Elevation() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBuildingStorey::declaration() const { return *IFC4X3_RC3_IfcBuildingStorey_type; } @@ -14093,9 +14093,9 @@ Ifc4x3_rc3::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcBuildingSystem boost::optional< ::Ifc4x3_rc3::IfcBuildingSystemTypeEnum::Value > Ifc4x3_rc3::IfcBuildingSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcBuildingSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc3::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBuildingSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBuildingSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcBuildingSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBuildingSystem::declaration() const { return *IFC4X3_RC3_IfcBuildingSystem_type; } @@ -14121,9 +14121,9 @@ Ifc4x3_rc3::IfcBuiltElementType::IfcBuiltElementType(std::string v1_GlobalId, :: // Function implementations for IfcBuiltSystem boost::optional< ::Ifc4x3_rc3::IfcBuiltSystemTypeEnum::Value > Ifc4x3_rc3::IfcBuiltSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcBuiltSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc3::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBuiltSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBuiltSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBuiltSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBuiltSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcBuiltSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBuiltSystem::declaration() const { return *IFC4X3_RC3_IfcBuiltSystem_type; } @@ -14133,7 +14133,7 @@ Ifc4x3_rc3::IfcBuiltSystem::IfcBuiltSystem(std::string v1_GlobalId, ::Ifc4x3_rc3 // Function implementations for IfcBurner boost::optional< ::Ifc4x3_rc3::IfcBurnerTypeEnum::Value > Ifc4x3_rc3::IfcBurner::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcBurnerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBurnerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcBurnerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcBurner::declaration() const { return *IFC4X3_RC3_IfcBurner_type; } @@ -14161,7 +14161,7 @@ void Ifc4x3_rc3::IfcCShapeProfileDef::setWallThickness(double v) { {IfcWrite::If double Ifc4x3_rc3::IfcCShapeProfileDef::Girth() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcCShapeProfileDef::setGirth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcCShapeProfileDef::InternalFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCShapeProfileDef::declaration() const { return *IFC4X3_RC3_IfcCShapeProfileDef_type; } @@ -14171,7 +14171,7 @@ Ifc4x3_rc3::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4x3_rc3::IfcProfileTyp // Function implementations for IfcCableCarrierFitting boost::optional< ::Ifc4x3_rc3::IfcCableCarrierFittingTypeEnum::Value > Ifc4x3_rc3::IfcCableCarrierFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCableCarrierFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCableCarrierFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCableCarrierFitting::declaration() const { return *IFC4X3_RC3_IfcCableCarrierFitting_type; } @@ -14191,7 +14191,7 @@ Ifc4x3_rc3::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v // Function implementations for IfcCableCarrierSegment boost::optional< ::Ifc4x3_rc3::IfcCableCarrierSegmentTypeEnum::Value > Ifc4x3_rc3::IfcCableCarrierSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCableCarrierSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCableCarrierSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCableCarrierSegment::declaration() const { return *IFC4X3_RC3_IfcCableCarrierSegment_type; } @@ -14211,7 +14211,7 @@ Ifc4x3_rc3::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v // Function implementations for IfcCableFitting boost::optional< ::Ifc4x3_rc3::IfcCableFittingTypeEnum::Value > Ifc4x3_rc3::IfcCableFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCableFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCableFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCableFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCableFitting::declaration() const { return *IFC4X3_RC3_IfcCableFitting_type; } @@ -14231,7 +14231,7 @@ Ifc4x3_rc3::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, :: // Function implementations for IfcCableSegment boost::optional< ::Ifc4x3_rc3::IfcCableSegmentTypeEnum::Value > Ifc4x3_rc3::IfcCableSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCableSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCableSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCableSegment::declaration() const { return *IFC4X3_RC3_IfcCableSegment_type; } @@ -14251,7 +14251,7 @@ Ifc4x3_rc3::IfcCableSegmentType::IfcCableSegmentType(std::string v1_GlobalId, :: // Function implementations for IfcCaissonFoundation boost::optional< ::Ifc4x3_rc3::IfcCaissonFoundationTypeEnum::Value > Ifc4x3_rc3::IfcCaissonFoundation::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCaissonFoundationTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCaissonFoundationTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCaissonFoundationTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCaissonFoundation::declaration() const { return *IFC4X3_RC3_IfcCaissonFoundation_type; } @@ -14291,7 +14291,7 @@ Ifc4x3_rc3::IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricReprese std::vector< std::vector< double > > Ifc4x3_rc3::IfcCartesianPointList2D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x3_rc3::IfcCartesianPointList2D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcCartesianPointList2D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCartesianPointList2D::declaration() const { return *IFC4X3_RC3_IfcCartesianPointList2D_type; } @@ -14303,7 +14303,7 @@ Ifc4x3_rc3::IfcCartesianPointList2D::IfcCartesianPointList2D(std::vector< std::v std::vector< std::vector< double > > Ifc4x3_rc3::IfcCartesianPointList3D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x3_rc3::IfcCartesianPointList3D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcCartesianPointList3D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCartesianPointList3D::declaration() const { return *IFC4X3_RC3_IfcCartesianPointList3D_type; } @@ -14319,7 +14319,7 @@ void Ifc4x3_rc3::IfcCartesianTransformationOperator::setAxis2(::Ifc4x3_rc3::IfcD ::Ifc4x3_rc3::IfcCartesianPoint* Ifc4x3_rc3::IfcCartesianTransformationOperator::LocalOrigin() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc3::IfcCartesianPoint>(true); } void Ifc4x3_rc3::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc4x3_rc3::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcCartesianTransformationOperator::Scale() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCartesianTransformationOperator::declaration() const { return *IFC4X3_RC3_IfcCartesianTransformationOperator_type; } @@ -14337,7 +14337,7 @@ Ifc4x3_rc3::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOper // Function implementations for IfcCartesianTransformationOperator2DnonUniform boost::optional< double > Ifc4x3_rc3::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IFC4X3_RC3_IfcCartesianTransformationOperator2DnonUniform_type; } @@ -14357,9 +14357,9 @@ Ifc4x3_rc3::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOper // Function implementations for IfcCartesianTransformationOperator3DnonUniform boost::optional< double > Ifc4x3_rc3::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IFC4X3_RC3_IfcCartesianTransformationOperator3DnonUniform_type; } @@ -14379,7 +14379,7 @@ Ifc4x3_rc3::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4x3_rc3::IfcPr // Function implementations for IfcChiller boost::optional< ::Ifc4x3_rc3::IfcChillerTypeEnum::Value > Ifc4x3_rc3::IfcChiller::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcChillerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcChillerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcChillerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcChiller::declaration() const { return *IFC4X3_RC3_IfcChiller_type; } @@ -14399,7 +14399,7 @@ Ifc4x3_rc3::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4x3_rc3 // Function implementations for IfcChimney boost::optional< ::Ifc4x3_rc3::IfcChimneyTypeEnum::Value > Ifc4x3_rc3::IfcChimney::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcChimneyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcChimneyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcChimneyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcChimney::declaration() const { return *IFC4X3_RC3_IfcChimney_type; } @@ -14465,19 +14465,19 @@ Ifc4x3_rc3::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, :: // Function implementations for IfcClassification boost::optional< std::string > Ifc4x3_rc3::IfcClassification::Source() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcClassification::Edition() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcClassification::EditionDate() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::string Ifc4x3_rc3::IfcClassification::Name() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcClassification::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcClassification::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcClassification::Location() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcClassification::ReferenceTokens() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc3::IfcRelAssociatesClassification::list::ptr Ifc4x3_rc3::IfcClassification::ClassificationForObjects() const { return data_->getInverse(IFC4X3_RC3_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x3_rc3::IfcClassificationReference::list::ptr Ifc4x3_rc3::IfcClassification::HasReferences() const { return data_->getInverse(IFC4X3_RC3_IfcClassificationReference_type, 3)->as(); } @@ -14491,9 +14491,9 @@ Ifc4x3_rc3::IfcClassification::IfcClassification(boost::optional< std::string > ::Ifc4x3_rc3::IfcClassificationReferenceSelect* Ifc4x3_rc3::IfcClassificationReference::ReferencedSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcClassificationReferenceSelect>(true); } void Ifc4x3_rc3::IfcClassificationReference::setReferencedSource(::Ifc4x3_rc3::IfcClassificationReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcClassificationReference::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcClassificationReference::Sort() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcRelAssociatesClassification::list::ptr Ifc4x3_rc3::IfcClassificationReference::ClassificationRefForObjects() const { return data_->getInverse(IFC4X3_RC3_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x3_rc3::IfcClassificationReference::list::ptr Ifc4x3_rc3::IfcClassificationReference::HasReferences() const { return data_->getInverse(IFC4X3_RC3_IfcClassificationReference_type, 3)->as(); } @@ -14523,7 +14523,7 @@ Ifc4x3_rc3::IfcClothoid::IfcClothoid(::Ifc4x3_rc3::IfcAxis2Placement* v1_Positio // Function implementations for IfcCoil boost::optional< ::Ifc4x3_rc3::IfcCoilTypeEnum::Value > Ifc4x3_rc3::IfcCoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCoil::declaration() const { return *IFC4X3_RC3_IfcCoil_type; } @@ -14567,7 +14567,7 @@ Ifc4x3_rc3::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double // Function implementations for IfcColourSpecification boost::optional< std::string > Ifc4x3_rc3::IfcColourSpecification::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcColourSpecification::declaration() const { return *IFC4X3_RC3_IfcColourSpecification_type; } @@ -14577,7 +14577,7 @@ Ifc4x3_rc3::IfcColourSpecification::IfcColourSpecification(boost::optional< std: // Function implementations for IfcColumn boost::optional< ::Ifc4x3_rc3::IfcColumnTypeEnum::Value > Ifc4x3_rc3::IfcColumn::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcColumnTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcColumnTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcColumnTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcColumn::declaration() const { return *IFC4X3_RC3_IfcColumn_type; } @@ -14605,7 +14605,7 @@ Ifc4x3_rc3::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4x3_rc3:: // Function implementations for IfcCommunicationsAppliance boost::optional< ::Ifc4x3_rc3::IfcCommunicationsApplianceTypeEnum::Value > Ifc4x3_rc3::IfcCommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCommunicationsAppliance::declaration() const { return *IFC4X3_RC3_IfcCommunicationsAppliance_type; } @@ -14637,11 +14637,11 @@ Ifc4x3_rc3::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::o // Function implementations for IfcComplexPropertyTemplate boost::optional< std::string > Ifc4x3_rc3::IfcComplexPropertyTemplate::UsageName() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< ::Ifc4x3_rc3::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4x3_rc3::IfcComplexPropertyTemplate::TemplateType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcComplexPropertyTemplateTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc3::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc3::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc3::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPropertyTemplate >::ptr > Ifc4x3_rc3::IfcComplexPropertyTemplate::HasPropertyTemplates() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc3::IfcPropertyTemplate >(); } -void Ifc4x3_rc3::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcComplexPropertyTemplate::declaration() const { return *IFC4X3_RC3_IfcComplexPropertyTemplate_type; } @@ -14685,7 +14685,7 @@ Ifc4x3_rc3::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4x3_rc3::Ifc aggregate_of< ::Ifc4x3_rc3::IfcProfileDef >::ptr Ifc4x3_rc3::IfcCompositeProfileDef::Profiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc3::IfcProfileDef >(); } void Ifc4x3_rc3::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc4x3_rc3::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcCompositeProfileDef::Label() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCompositeProfileDef::declaration() const { return *IFC4X3_RC3_IfcCompositeProfileDef_type; } @@ -14695,7 +14695,7 @@ Ifc4x3_rc3::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4x3_rc3::IfcProf // Function implementations for IfcCompressor boost::optional< ::Ifc4x3_rc3::IfcCompressorTypeEnum::Value > Ifc4x3_rc3::IfcCompressor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCompressorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCompressorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCompressorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCompressor::declaration() const { return *IFC4X3_RC3_IfcCompressor_type; } @@ -14715,7 +14715,7 @@ Ifc4x3_rc3::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCondenser boost::optional< ::Ifc4x3_rc3::IfcCondenserTypeEnum::Value > Ifc4x3_rc3::IfcCondenser::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCondenserTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCondenserTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCondenserTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCondenser::declaration() const { return *IFC4X3_RC3_IfcCondenser_type; } @@ -14775,11 +14775,11 @@ Ifc4x3_rc3::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEnt // Function implementations for IfcConnectionPointEccentricity boost::optional< double > Ifc4x3_rc3::IfcConnectionPointEccentricity::EccentricityInX() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcConnectionPointEccentricity::EccentricityInY() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcConnectionPointEccentricity::EccentricityInZ() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcConnectionPointEccentricity::declaration() const { return *IFC4X3_RC3_IfcConnectionPointEccentricity_type; } @@ -14827,17 +14827,17 @@ Ifc4x3_rc3::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4x3_rc std::string Ifc4x3_rc3::IfcConstraint::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc3::IfcConstraint::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcConstraint::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc3::IfcConstraintEnum::Value Ifc4x3_rc3::IfcConstraint::ConstraintGrade() const { return ::Ifc4x3_rc3::IfcConstraintEnum::FromString(*data_->getArgument(2)); } void Ifc4x3_rc3::IfcConstraint::setConstraintGrade(::Ifc4x3_rc3::IfcConstraintEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcConstraintEnum::ToString(v)));data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcConstraint::ConstraintSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc3::IfcActorSelect* Ifc4x3_rc3::IfcConstraint::CreatingActor() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc3::IfcActorSelect>(true); } void Ifc4x3_rc3::IfcConstraint::setCreatingActor(::Ifc4x3_rc3::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcConstraint::CreationTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcConstraint::UserDefinedGrade() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc3::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc3::IfcConstraint::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC3_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc3::IfcResourceConstraintRelationship::list::ptr Ifc4x3_rc3::IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(IFC4X3_RC3_IfcResourceConstraintRelationship_type, 2)->as(); } @@ -14849,7 +14849,7 @@ Ifc4x3_rc3::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< s // Function implementations for IfcConstructionEquipmentResource boost::optional< ::Ifc4x3_rc3::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4x3_rc3::IfcConstructionEquipmentResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcConstructionEquipmentResource::declaration() const { return *IFC4X3_RC3_IfcConstructionEquipmentResource_type; } @@ -14869,7 +14869,7 @@ Ifc4x3_rc3::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResour // Function implementations for IfcConstructionMaterialResource boost::optional< ::Ifc4x3_rc3::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4x3_rc3::IfcConstructionMaterialResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcConstructionMaterialResource::declaration() const { return *IFC4X3_RC3_IfcConstructionMaterialResource_type; } @@ -14889,7 +14889,7 @@ Ifc4x3_rc3::IfcConstructionMaterialResourceType::IfcConstructionMaterialResource // Function implementations for IfcConstructionProductResource boost::optional< ::Ifc4x3_rc3::IfcConstructionProductResourceTypeEnum::Value > Ifc4x3_rc3::IfcConstructionProductResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcConstructionProductResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcConstructionProductResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcConstructionProductResource::declaration() const { return *IFC4X3_RC3_IfcConstructionProductResource_type; } @@ -14911,7 +14911,7 @@ Ifc4x3_rc3::IfcConstructionProductResourceType::IfcConstructionProductResourceTy ::Ifc4x3_rc3::IfcResourceTime* Ifc4x3_rc3::IfcConstructionResource::Usage() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc3::IfcResourceTime>(true); } void Ifc4x3_rc3::IfcConstructionResource::setUsage(::Ifc4x3_rc3::IfcResourceTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAppliedValue >::ptr > Ifc4x3_rc3::IfcConstructionResource::BaseCosts() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc3::IfcAppliedValue >(); } -void Ifc4x3_rc3::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcPhysicalQuantity* Ifc4x3_rc3::IfcConstructionResource::BaseQuantity() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc3::IfcPhysicalQuantity>(true); } void Ifc4x3_rc3::IfcConstructionResource::setBaseQuantity(::Ifc4x3_rc3::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -14923,7 +14923,7 @@ Ifc4x3_rc3::IfcConstructionResource::IfcConstructionResource(std::string v1_Glob // Function implementations for IfcConstructionResourceType boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAppliedValue >::ptr > Ifc4x3_rc3::IfcConstructionResourceType::BaseCosts() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc3::IfcAppliedValue >(); } -void Ifc4x3_rc3::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x3_rc3::IfcPhysicalQuantity* Ifc4x3_rc3::IfcConstructionResourceType::BaseQuantity() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc3::IfcPhysicalQuantity>(true); } void Ifc4x3_rc3::IfcConstructionResourceType::setBaseQuantity(::Ifc4x3_rc3::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -14935,13 +14935,13 @@ Ifc4x3_rc3::IfcConstructionResourceType::IfcConstructionResourceType(std::string // Function implementations for IfcContext boost::optional< std::string > Ifc4x3_rc3::IfcContext::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcContext::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcContext::Phase() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcRepresentationContext >::ptr > Ifc4x3_rc3::IfcContext::RepresentationContexts() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc3::IfcRepresentationContext >(); } -void Ifc4x3_rc3::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcUnitAssignment* Ifc4x3_rc3::IfcContext::UnitsInContext() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc3::IfcUnitAssignment>(true); } void Ifc4x3_rc3::IfcContext::setUnitsInContext(::Ifc4x3_rc3::IfcUnitAssignment* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -14966,7 +14966,7 @@ Ifc4x3_rc3::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4x3_rc3::IfcDi // Function implementations for IfcControl boost::optional< std::string > Ifc4x3_rc3::IfcControl::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcRelAssignsToControl::list::ptr Ifc4x3_rc3::IfcControl::Controls() const { return data_->getInverse(IFC4X3_RC3_IfcRelAssignsToControl_type, 6)->as(); } @@ -14977,7 +14977,7 @@ Ifc4x3_rc3::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwn // Function implementations for IfcController boost::optional< ::Ifc4x3_rc3::IfcControllerTypeEnum::Value > Ifc4x3_rc3::IfcController::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcControllerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcControllerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcControllerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcController::declaration() const { return *IFC4X3_RC3_IfcController_type; } @@ -15020,7 +15020,7 @@ Ifc4x3_rc3::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(: // Function implementations for IfcConveyorSegment boost::optional< ::Ifc4x3_rc3::IfcConveyorSegmentTypeEnum::Value > Ifc4x3_rc3::IfcConveyorSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcConveyorSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcConveyorSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcConveyorSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcConveyorSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcConveyorSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcConveyorSegment::declaration() const { return *IFC4X3_RC3_IfcConveyorSegment_type; } @@ -15040,7 +15040,7 @@ Ifc4x3_rc3::IfcConveyorSegmentType::IfcConveyorSegmentType(std::string v1_Global // Function implementations for IfcCooledBeam boost::optional< ::Ifc4x3_rc3::IfcCooledBeamTypeEnum::Value > Ifc4x3_rc3::IfcCooledBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCooledBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCooledBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCooledBeam::declaration() const { return *IFC4X3_RC3_IfcCooledBeam_type; } @@ -15060,7 +15060,7 @@ Ifc4x3_rc3::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCoolingTower boost::optional< ::Ifc4x3_rc3::IfcCoolingTowerTypeEnum::Value > Ifc4x3_rc3::IfcCoolingTower::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCoolingTowerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCoolingTowerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCoolingTower::declaration() const { return *IFC4X3_RC3_IfcCoolingTower_type; } @@ -15094,11 +15094,11 @@ Ifc4x3_rc3::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4x3_rc3::IfcCoor std::string Ifc4x3_rc3::IfcCoordinateReferenceSystem::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc3::IfcCoordinateReferenceSystem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcCoordinateReferenceSystem::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcCoordinateReferenceSystem::VerticalDatum() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc3::IfcCoordinateOperation::list::ptr Ifc4x3_rc3::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return data_->getInverse(IFC4X3_RC3_IfcCoordinateOperation_type, 0)->as(); } @@ -15121,11 +15121,11 @@ Ifc4x3_rc3::IfcCosine::IfcCosine(::Ifc4x3_rc3::IfcAxis2Placement* v1_Position, d // Function implementations for IfcCostItem boost::optional< ::Ifc4x3_rc3::IfcCostItemTypeEnum::Value > Ifc4x3_rc3::IfcCostItem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCostItemTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc3::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCostItemTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCostItemTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcCostValue >::ptr > Ifc4x3_rc3::IfcCostItem::CostValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc3::IfcCostValue >(); } -void Ifc4x3_rc3::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPhysicalQuantity >::ptr > Ifc4x3_rc3::IfcCostItem::CostQuantities() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc3::IfcPhysicalQuantity >(); } -void Ifc4x3_rc3::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCostItem::declaration() const { return *IFC4X3_RC3_IfcCostItem_type; } @@ -15135,13 +15135,13 @@ Ifc4x3_rc3::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcCostSchedule boost::optional< ::Ifc4x3_rc3::IfcCostScheduleTypeEnum::Value > Ifc4x3_rc3::IfcCostSchedule::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCostScheduleTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc3::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCostScheduleTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCostScheduleTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcCostSchedule::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcCostSchedule::SubmittedOn() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcCostSchedule::UpdateDate() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCostSchedule::declaration() const { return *IFC4X3_RC3_IfcCostSchedule_type; } @@ -15159,7 +15159,7 @@ Ifc4x3_rc3::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, b // Function implementations for IfcCourse boost::optional< ::Ifc4x3_rc3::IfcCourseTypeEnum::Value > Ifc4x3_rc3::IfcCourse::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCourseTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCourseTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCourseTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCourseTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCourseTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCourse::declaration() const { return *IFC4X3_RC3_IfcCourse_type; } @@ -15179,7 +15179,7 @@ Ifc4x3_rc3::IfcCourseType::IfcCourseType(std::string v1_GlobalId, ::Ifc4x3_rc3:: // Function implementations for IfcCovering boost::optional< ::Ifc4x3_rc3::IfcCoveringTypeEnum::Value > Ifc4x3_rc3::IfcCovering::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCoveringTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCoveringTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcRelCoversSpaces::list::ptr Ifc4x3_rc3::IfcCovering::CoversSpaces() const { return data_->getInverse(IFC4X3_RC3_IfcRelCoversSpaces_type, 5)->as(); } ::Ifc4x3_rc3::IfcRelCoversBldgElements::list::ptr Ifc4x3_rc3::IfcCovering::CoversElements() const { return data_->getInverse(IFC4X3_RC3_IfcRelCoversBldgElements_type, 5)->as(); } @@ -15201,7 +15201,7 @@ Ifc4x3_rc3::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcCrewResource boost::optional< ::Ifc4x3_rc3::IfcCrewResourceTypeEnum::Value > Ifc4x3_rc3::IfcCrewResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCrewResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCrewResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCrewResource::declaration() const { return *IFC4X3_RC3_IfcCrewResource_type; } @@ -15247,7 +15247,7 @@ void Ifc4x3_rc3::IfcCurrencyRelationship::setRelatedMonetaryUnit(::Ifc4x3_rc3::I double Ifc4x3_rc3::IfcCurrencyRelationship::ExchangeRate() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc3::IfcCurrencyRelationship::setExchangeRate(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcCurrencyRelationship::RateDateTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcLibraryInformation* Ifc4x3_rc3::IfcCurrencyRelationship::RateSource() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcLibraryInformation>(true); } void Ifc4x3_rc3::IfcCurrencyRelationship::setRateSource(::Ifc4x3_rc3::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -15259,7 +15259,7 @@ Ifc4x3_rc3::IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< st // Function implementations for IfcCurtainWall boost::optional< ::Ifc4x3_rc3::IfcCurtainWallTypeEnum::Value > Ifc4x3_rc3::IfcCurtainWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCurtainWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCurtainWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCurtainWall::declaration() const { return *IFC4X3_RC3_IfcCurtainWall_type; } @@ -15337,7 +15337,7 @@ void Ifc4x3_rc3::IfcCurveStyle::setCurveWidth(::Ifc4x3_rc3::IfcSizeSelect* v) { ::Ifc4x3_rc3::IfcColour* Ifc4x3_rc3::IfcCurveStyle::CurveColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcColour>(true); } void Ifc4x3_rc3::IfcCurveStyle::setCurveColour(::Ifc4x3_rc3::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x3_rc3::IfcCurveStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcCurveStyle::declaration() const { return *IFC4X3_RC3_IfcCurveStyle_type; } @@ -15347,7 +15347,7 @@ Ifc4x3_rc3::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, // Function implementations for IfcCurveStyleFont boost::optional< std::string > Ifc4x3_rc3::IfcCurveStyleFont::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc4x3_rc3::IfcCurveStyleFontPattern >::ptr Ifc4x3_rc3::IfcCurveStyleFont::PatternList() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc3::IfcCurveStyleFontPattern >(); } void Ifc4x3_rc3::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc4x3_rc3::IfcCurveStyleFontPattern >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -15359,7 +15359,7 @@ Ifc4x3_rc3::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > // Function implementations for IfcCurveStyleFontAndScaling boost::optional< std::string > Ifc4x3_rc3::IfcCurveStyleFontAndScaling::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc3::IfcCurveStyleFontSelect* Ifc4x3_rc3::IfcCurveStyleFontAndScaling::CurveFont() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc3::IfcCurveStyleFontSelect>(true); } void Ifc4x3_rc3::IfcCurveStyleFontAndScaling::setCurveFont(::Ifc4x3_rc3::IfcCurveStyleFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } double Ifc4x3_rc3::IfcCurveStyleFontAndScaling::CurveFontScaling() const { double v = *data_->getArgument(2); return v; } @@ -15395,7 +15395,7 @@ Ifc4x3_rc3::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4x3_rc3::IfcAxis2P // Function implementations for IfcDamper boost::optional< ::Ifc4x3_rc3::IfcDamperTypeEnum::Value > Ifc4x3_rc3::IfcDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDamper::declaration() const { return *IFC4X3_RC3_IfcDamper_type; } @@ -15435,7 +15435,7 @@ void Ifc4x3_rc3::IfcDerivedProfileDef::setParentProfile(::Ifc4x3_rc3::IfcProfile ::Ifc4x3_rc3::IfcCartesianTransformationOperator2D* Ifc4x3_rc3::IfcDerivedProfileDef::Operator() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcCartesianTransformationOperator2D>(true); } void Ifc4x3_rc3::IfcDerivedProfileDef::setOperator(::Ifc4x3_rc3::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDerivedProfileDef::Label() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDerivedProfileDef::declaration() const { return *IFC4X3_RC3_IfcDerivedProfileDef_type; } @@ -15449,7 +15449,7 @@ void Ifc4x3_rc3::IfcDerivedUnit::setElements(aggregate_of< ::Ifc4x3_rc3::IfcDeri ::Ifc4x3_rc3::IfcDerivedUnitEnum::Value Ifc4x3_rc3::IfcDerivedUnit::UnitType() const { return ::Ifc4x3_rc3::IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); } void Ifc4x3_rc3::IfcDerivedUnit::setUnitType(::Ifc4x3_rc3::IfcDerivedUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcDerivedUnitEnum::ToString(v)));data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDerivedUnit::UserDefinedType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDerivedUnit::declaration() const { return *IFC4X3_RC3_IfcDerivedUnit_type; } @@ -15539,7 +15539,7 @@ Ifc4x3_rc3::IfcDirectrixDistanceSweptAreaSolid::IfcDirectrixDistanceSweptAreaSol // Function implementations for IfcDiscreteAccessory boost::optional< ::Ifc4x3_rc3::IfcDiscreteAccessoryTypeEnum::Value > Ifc4x3_rc3::IfcDiscreteAccessory::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDiscreteAccessoryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDiscreteAccessoryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDiscreteAccessory::declaration() const { return *IFC4X3_RC3_IfcDiscreteAccessory_type; } @@ -15559,7 +15559,7 @@ Ifc4x3_rc3::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_Gl // Function implementations for IfcDistributionBoard boost::optional< ::Ifc4x3_rc3::IfcDistributionBoardTypeEnum::Value > Ifc4x3_rc3::IfcDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDistributionBoard::declaration() const { return *IFC4X3_RC3_IfcDistributionBoard_type; } @@ -15579,7 +15579,7 @@ Ifc4x3_rc3::IfcDistributionBoardType::IfcDistributionBoardType(std::string v1_Gl // Function implementations for IfcDistributionChamberElement boost::optional< ::Ifc4x3_rc3::IfcDistributionChamberElementTypeEnum::Value > Ifc4x3_rc3::IfcDistributionChamberElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDistributionChamberElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDistributionChamberElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDistributionChamberElement::declaration() const { return *IFC4X3_RC3_IfcDistributionChamberElement_type; } @@ -15658,11 +15658,11 @@ Ifc4x3_rc3::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std:: // Function implementations for IfcDistributionPort boost::optional< ::Ifc4x3_rc3::IfcFlowDirectionEnum::Value > Ifc4x3_rc3::IfcDistributionPort::FlowDirection() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc3::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_rc3::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFlowDirectionEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_rc3::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFlowDirectionEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc3::IfcDistributionPortTypeEnum::Value > Ifc4x3_rc3::IfcDistributionPort::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDistributionPortTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDistributionPortTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDistributionPortTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc3::IfcDistributionSystemEnum::Value > Ifc4x3_rc3::IfcDistributionPort::SystemType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDistributionSystemEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_rc3::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_rc3::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDistributionPort::declaration() const { return *IFC4X3_RC3_IfcDistributionPort_type; } @@ -15672,9 +15672,9 @@ Ifc4x3_rc3::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, :: // Function implementations for IfcDistributionSystem boost::optional< std::string > Ifc4x3_rc3::IfcDistributionSystem::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< ::Ifc4x3_rc3::IfcDistributionSystemEnum::Value > Ifc4x3_rc3::IfcDistributionSystem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDistributionSystemEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc3::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDistributionSystem::declaration() const { return *IFC4X3_RC3_IfcDistributionSystem_type; } @@ -15688,35 +15688,35 @@ void Ifc4x3_rc3::IfcDocumentInformation::setIdentification(std::string v) { {Ifc std::string Ifc4x3_rc3::IfcDocumentInformation::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcDocumentInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::Location() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::Purpose() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::IntendedUse() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::Scope() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::Revision() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcActorSelect* Ifc4x3_rc3::IfcDocumentInformation::DocumentOwner() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc3::IfcActorSelect>(true); } void Ifc4x3_rc3::IfcDocumentInformation::setDocumentOwner(::Ifc4x3_rc3::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc3::IfcDocumentInformation::Editors() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::CreationTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::LastRevisionTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::ElectronicFormat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::ValidFrom() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformation::ValidUntil() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc3::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< ::Ifc4x3_rc3::IfcDocumentConfidentialityEnum::Value > Ifc4x3_rc3::IfcDocumentInformation::Confidentiality() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); } -void Ifc4x3_rc3::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_rc3::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDocumentConfidentialityEnum::ToString(*v)));data_->setArgument(15,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_rc3::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDocumentConfidentialityEnum::ToString(*v)));}data_->setArgument(15,attr);} } boost::optional< ::Ifc4x3_rc3::IfcDocumentStatusEnum::Value > Ifc4x3_rc3::IfcDocumentInformation::Status() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); } -void Ifc4x3_rc3::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_rc3::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDocumentStatusEnum::ToString(*v)));data_->setArgument(16,attr);} } +void Ifc4x3_rc3::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_rc3::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDocumentStatusEnum::ToString(*v)));}data_->setArgument(16,attr);} } ::Ifc4x3_rc3::IfcRelAssociatesDocument::list::ptr Ifc4x3_rc3::IfcDocumentInformation::DocumentInfoForObjects() const { return data_->getInverse(IFC4X3_RC3_IfcRelAssociatesDocument_type, 5)->as(); } ::Ifc4x3_rc3::IfcDocumentReference::list::ptr Ifc4x3_rc3::IfcDocumentInformation::HasDocumentReferences() const { return data_->getInverse(IFC4X3_RC3_IfcDocumentReference_type, 4)->as(); } @@ -15734,7 +15734,7 @@ void Ifc4x3_rc3::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc4x aggregate_of< ::Ifc4x3_rc3::IfcDocumentInformation >::ptr Ifc4x3_rc3::IfcDocumentInformationRelationship::RelatedDocuments() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc3::IfcDocumentInformation >(); } void Ifc4x3_rc3::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc4x3_rc3::IfcDocumentInformation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDocumentInformationRelationship::RelationshipType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDocumentInformationRelationship::declaration() const { return *IFC4X3_RC3_IfcDocumentInformationRelationship_type; } @@ -15744,7 +15744,7 @@ Ifc4x3_rc3::IfcDocumentInformationRelationship::IfcDocumentInformationRelationsh // Function implementations for IfcDocumentReference boost::optional< std::string > Ifc4x3_rc3::IfcDocumentReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc3::IfcDocumentInformation* Ifc4x3_rc3::IfcDocumentReference::ReferencedDocument() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc3::IfcDocumentInformation>(true); } void Ifc4x3_rc3::IfcDocumentReference::setReferencedDocument(::Ifc4x3_rc3::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -15757,15 +15757,15 @@ Ifc4x3_rc3::IfcDocumentReference::IfcDocumentReference(boost::optional< std::str // Function implementations for IfcDoor boost::optional< double > Ifc4x3_rc3::IfcDoor::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoor::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc3::IfcDoorTypeEnum::Value > Ifc4x3_rc3::IfcDoor::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDoorTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDoorTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDoorTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc3::IfcDoorTypeOperationEnum::Value > Ifc4x3_rc3::IfcDoor::OperationType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc3::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_rc3::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDoorTypeOperationEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_rc3::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDoorTypeOperationEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDoor::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDoor::declaration() const { return *IFC4X3_RC3_IfcDoor_type; } @@ -15775,31 +15775,31 @@ Ifc4x3_rc3::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHist // Function implementations for IfcDoorLiningProperties boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::ThresholdDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::ThresholdThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::TransomThickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::TransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::LiningOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::ThresholdOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::CasingThickness() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::CasingDepth() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } ::Ifc4x3_rc3::IfcShapeAspect* Ifc4x3_rc3::IfcDoorLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc4x3_rc3::IfcShapeAspect>(true); } void Ifc4x3_rc3::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc4x3_rc3::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc3::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc3::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDoorLiningProperties::declaration() const { return *IFC4X3_RC3_IfcDoorLiningProperties_type; } @@ -15809,11 +15809,11 @@ Ifc4x3_rc3::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_Glob // Function implementations for IfcDoorPanelProperties boost::optional< double > Ifc4x3_rc3::IfcDoorPanelProperties::PanelDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc3::IfcDoorPanelOperationEnum::Value Ifc4x3_rc3::IfcDoorPanelProperties::PanelOperation() const { return ::Ifc4x3_rc3::IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc3::IfcDoorPanelProperties::setPanelOperation(::Ifc4x3_rc3::IfcDoorPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcDoorPanelOperationEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcDoorPanelProperties::PanelWidth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc3::IfcDoorPanelPositionEnum::Value Ifc4x3_rc3::IfcDoorPanelProperties::PanelPosition() const { return ::Ifc4x3_rc3::IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc3::IfcDoorPanelProperties::setPanelPosition(::Ifc4x3_rc3::IfcDoorPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcDoorPanelPositionEnum::ToString(v)));data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcShapeAspect* Ifc4x3_rc3::IfcDoorPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc3::IfcShapeAspect>(true); } @@ -15855,9 +15855,9 @@ void Ifc4x3_rc3::IfcDoorType::setPredefinedType(::Ifc4x3_rc3::IfcDoorTypeEnum::V ::Ifc4x3_rc3::IfcDoorTypeOperationEnum::Value Ifc4x3_rc3::IfcDoorType::OperationType() const { return ::Ifc4x3_rc3::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc3::IfcDoorType::setOperationType(::Ifc4x3_rc3::IfcDoorTypeOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcDoorTypeOperationEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x3_rc3::IfcDoorType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcDoorType::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDoorType::declaration() const { return *IFC4X3_RC3_IfcDoorType_type; } @@ -15883,7 +15883,7 @@ Ifc4x3_rc3::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(s // Function implementations for IfcDuctFitting boost::optional< ::Ifc4x3_rc3::IfcDuctFittingTypeEnum::Value > Ifc4x3_rc3::IfcDuctFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDuctFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDuctFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDuctFitting::declaration() const { return *IFC4X3_RC3_IfcDuctFitting_type; } @@ -15903,7 +15903,7 @@ Ifc4x3_rc3::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcDuctSegment boost::optional< ::Ifc4x3_rc3::IfcDuctSegmentTypeEnum::Value > Ifc4x3_rc3::IfcDuctSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDuctSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDuctSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDuctSegment::declaration() const { return *IFC4X3_RC3_IfcDuctSegment_type; } @@ -15923,7 +15923,7 @@ Ifc4x3_rc3::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::If // Function implementations for IfcDuctSilencer boost::optional< ::Ifc4x3_rc3::IfcDuctSilencerTypeEnum::Value > Ifc4x3_rc3::IfcDuctSilencer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDuctSilencerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDuctSilencerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcDuctSilencer::declaration() const { return *IFC4X3_RC3_IfcDuctSilencer_type; } @@ -15943,7 +15943,7 @@ Ifc4x3_rc3::IfcDuctSilencerType::IfcDuctSilencerType(std::string v1_GlobalId, :: // Function implementations for IfcEarthworksCut boost::optional< ::Ifc4x3_rc3::IfcEarthworksCutTypeEnum::Value > Ifc4x3_rc3::IfcEarthworksCut::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcEarthworksCutTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEarthworksCutTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEarthworksCutTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEarthworksCutTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEarthworksCutTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcEarthworksCut::declaration() const { return *IFC4X3_RC3_IfcEarthworksCut_type; } @@ -15961,7 +15961,7 @@ Ifc4x3_rc3::IfcEarthworksElement::IfcEarthworksElement(std::string v1_GlobalId, // Function implementations for IfcEarthworksFill boost::optional< ::Ifc4x3_rc3::IfcEarthworksFillTypeEnum::Value > Ifc4x3_rc3::IfcEarthworksFill::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcEarthworksFillTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEarthworksFillTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEarthworksFillTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEarthworksFillTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEarthworksFillTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcEarthworksFill::declaration() const { return *IFC4X3_RC3_IfcEarthworksFill_type; } @@ -16005,7 +16005,7 @@ Ifc4x3_rc3::IfcEdgeLoop::IfcEdgeLoop(aggregate_of< ::Ifc4x3_rc3::IfcOrientedEdge // Function implementations for IfcElectricAppliance boost::optional< ::Ifc4x3_rc3::IfcElectricApplianceTypeEnum::Value > Ifc4x3_rc3::IfcElectricAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcElectricAppliance::declaration() const { return *IFC4X3_RC3_IfcElectricAppliance_type; } @@ -16025,7 +16025,7 @@ Ifc4x3_rc3::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_Gl // Function implementations for IfcElectricDistributionBoard boost::optional< ::Ifc4x3_rc3::IfcElectricDistributionBoardTypeEnum::Value > Ifc4x3_rc3::IfcElectricDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcElectricDistributionBoard::declaration() const { return *IFC4X3_RC3_IfcElectricDistributionBoard_type; } @@ -16045,7 +16045,7 @@ Ifc4x3_rc3::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(s // Function implementations for IfcElectricFlowStorageDevice boost::optional< ::Ifc4x3_rc3::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4x3_rc3::IfcElectricFlowStorageDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcElectricFlowStorageDevice::declaration() const { return *IFC4X3_RC3_IfcElectricFlowStorageDevice_type; } @@ -16065,7 +16065,7 @@ Ifc4x3_rc3::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(s // Function implementations for IfcElectricFlowTreatmentDevice boost::optional< ::Ifc4x3_rc3::IfcElectricFlowTreatmentDeviceTypeEnum::Value > Ifc4x3_rc3::IfcElectricFlowTreatmentDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcElectricFlowTreatmentDevice::declaration() const { return *IFC4X3_RC3_IfcElectricFlowTreatmentDevice_type; } @@ -16085,7 +16085,7 @@ Ifc4x3_rc3::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceTy // Function implementations for IfcElectricGenerator boost::optional< ::Ifc4x3_rc3::IfcElectricGeneratorTypeEnum::Value > Ifc4x3_rc3::IfcElectricGenerator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricGeneratorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricGeneratorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcElectricGenerator::declaration() const { return *IFC4X3_RC3_IfcElectricGenerator_type; } @@ -16105,7 +16105,7 @@ Ifc4x3_rc3::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_Gl // Function implementations for IfcElectricMotor boost::optional< ::Ifc4x3_rc3::IfcElectricMotorTypeEnum::Value > Ifc4x3_rc3::IfcElectricMotor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricMotorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricMotorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcElectricMotor::declaration() const { return *IFC4X3_RC3_IfcElectricMotor_type; } @@ -16125,7 +16125,7 @@ Ifc4x3_rc3::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, // Function implementations for IfcElectricTimeControl boost::optional< ::Ifc4x3_rc3::IfcElectricTimeControlTypeEnum::Value > Ifc4x3_rc3::IfcElectricTimeControl::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricTimeControlTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElectricTimeControlTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcElectricTimeControl::declaration() const { return *IFC4X3_RC3_IfcElectricTimeControl_type; } @@ -16145,7 +16145,7 @@ Ifc4x3_rc3::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v // Function implementations for IfcElement boost::optional< std::string > Ifc4x3_rc3::IfcElement::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcRelFillsElement::list::ptr Ifc4x3_rc3::IfcElement::FillsVoids() const { return data_->getInverse(IFC4X3_RC3_IfcRelFillsElement_type, 5)->as(); } ::Ifc4x3_rc3::IfcRelConnectsElements::list::ptr Ifc4x3_rc3::IfcElement::ConnectedTo() const { return data_->getInverse(IFC4X3_RC3_IfcRelConnectsElements_type, 5)->as(); } @@ -16166,9 +16166,9 @@ Ifc4x3_rc3::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwn // Function implementations for IfcElementAssembly boost::optional< ::Ifc4x3_rc3::IfcAssemblyPlaceEnum::Value > Ifc4x3_rc3::IfcElementAssembly::AssemblyPlace() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_rc3::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAssemblyPlaceEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_rc3::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcAssemblyPlaceEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc3::IfcElementAssemblyTypeEnum::Value > Ifc4x3_rc3::IfcElementAssembly::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElementAssemblyTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElementAssemblyTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcElementAssembly::declaration() const { return *IFC4X3_RC3_IfcElementAssembly_type; } @@ -16204,7 +16204,7 @@ Ifc4x3_rc3::IfcElementComponentType::IfcElementComponentType(std::string v1_Glob // Function implementations for IfcElementQuantity boost::optional< std::string > Ifc4x3_rc3::IfcElementQuantity::MethodOfMeasurement() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x3_rc3::IfcPhysicalQuantity >::ptr Ifc4x3_rc3::IfcElementQuantity::Quantities() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc3::IfcPhysicalQuantity >(); } void Ifc4x3_rc3::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc4x3_rc3::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -16216,7 +16216,7 @@ Ifc4x3_rc3::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::If // Function implementations for IfcElementType boost::optional< std::string > Ifc4x3_rc3::IfcElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcElementType::declaration() const { return *IFC4X3_RC3_IfcElementType_type; } @@ -16276,7 +16276,7 @@ Ifc4x3_rc3::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::st // Function implementations for IfcEngine boost::optional< ::Ifc4x3_rc3::IfcEngineTypeEnum::Value > Ifc4x3_rc3::IfcEngine::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcEngineTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEngineTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEngineTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcEngine::declaration() const { return *IFC4X3_RC3_IfcEngine_type; } @@ -16296,7 +16296,7 @@ Ifc4x3_rc3::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4x3_rc3:: // Function implementations for IfcEvaporativeCooler boost::optional< ::Ifc4x3_rc3::IfcEvaporativeCoolerTypeEnum::Value > Ifc4x3_rc3::IfcEvaporativeCooler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEvaporativeCoolerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEvaporativeCoolerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcEvaporativeCooler::declaration() const { return *IFC4X3_RC3_IfcEvaporativeCooler_type; } @@ -16316,7 +16316,7 @@ Ifc4x3_rc3::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_Gl // Function implementations for IfcEvaporator boost::optional< ::Ifc4x3_rc3::IfcEvaporatorTypeEnum::Value > Ifc4x3_rc3::IfcEvaporator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEvaporatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEvaporatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcEvaporator::declaration() const { return *IFC4X3_RC3_IfcEvaporator_type; } @@ -16336,11 +16336,11 @@ Ifc4x3_rc3::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcEvent boost::optional< ::Ifc4x3_rc3::IfcEventTypeEnum::Value > Ifc4x3_rc3::IfcEvent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcEventTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc3::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEventTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEventTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc3::IfcEventTriggerTypeEnum::Value > Ifc4x3_rc3::IfcEvent::EventTriggerType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_rc3::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEventTriggerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_rc3::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcEventTriggerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcEvent::UserDefinedEventTriggerType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x3_rc3::IfcEventTime* Ifc4x3_rc3::IfcEvent::EventOccurenceTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc3::IfcEventTime>(true); } void Ifc4x3_rc3::IfcEvent::setEventOccurenceTime(::Ifc4x3_rc3::IfcEventTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -16352,13 +16352,13 @@ Ifc4x3_rc3::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHi // Function implementations for IfcEventTime boost::optional< std::string > Ifc4x3_rc3::IfcEventTime::ActualDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcEventTime::EarlyDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcEventTime::LateDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcEventTime::ScheduleDate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcEventTime::declaration() const { return *IFC4X3_RC3_IfcEventTime_type; } @@ -16372,7 +16372,7 @@ void Ifc4x3_rc3::IfcEventType::setPredefinedType(::Ifc4x3_rc3::IfcEventTypeEnum: ::Ifc4x3_rc3::IfcEventTriggerTypeEnum::Value Ifc4x3_rc3::IfcEventType::EventTriggerType() const { return ::Ifc4x3_rc3::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc3::IfcEventType::setEventTriggerType(::Ifc4x3_rc3::IfcEventTriggerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcEventTriggerTypeEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcEventType::UserDefinedEventTriggerType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcEventType::declaration() const { return *IFC4X3_RC3_IfcEventType_type; } @@ -16382,9 +16382,9 @@ Ifc4x3_rc3::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4x3_rc3::If // Function implementations for IfcExtendedProperties boost::optional< std::string > Ifc4x3_rc3::IfcExtendedProperties::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcExtendedProperties::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc3::IfcProperty >::ptr Ifc4x3_rc3::IfcExtendedProperties::Properties() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc3::IfcProperty >(); } void Ifc4x3_rc3::IfcExtendedProperties::setProperties(aggregate_of< ::Ifc4x3_rc3::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -16404,11 +16404,11 @@ Ifc4x3_rc3::IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseE // Function implementations for IfcExternalReference boost::optional< std::string > Ifc4x3_rc3::IfcExternalReference::Location() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcExternalReference::Identification() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcExternalReference::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc3::IfcExternalReference::ExternalReferenceForResources() const { return data_->getInverse(IFC4X3_RC3_IfcExternalReferenceRelationship_type, 2)->as(); } @@ -16431,7 +16431,7 @@ Ifc4x3_rc3::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(b // Function implementations for IfcExternalSpatialElement boost::optional< ::Ifc4x3_rc3::IfcExternalSpatialElementTypeEnum::Value > Ifc4x3_rc3::IfcExternalSpatialElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcExternalSpatialElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcExternalSpatialElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcExternalSpatialElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc3::IfcExternalSpatialElement::BoundedBy() const { return data_->getInverse(IFC4X3_RC3_IfcRelSpaceBoundary_type, 4)->as(); } @@ -16587,17 +16587,17 @@ Ifc4x3_rc3::IfcFacilityPart::IfcFacilityPart(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcFailureConnectionCondition boost::optional< double > Ifc4x3_rc3::IfcFailureConnectionCondition::TensionFailureX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcFailureConnectionCondition::TensionFailureY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcFailureConnectionCondition::TensionFailureZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcFailureConnectionCondition::CompressionFailureX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc3::IfcFailureConnectionCondition::CompressionFailureY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcFailureConnectionCondition::CompressionFailureZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFailureConnectionCondition::declaration() const { return *IFC4X3_RC3_IfcFailureConnectionCondition_type; } @@ -16607,7 +16607,7 @@ Ifc4x3_rc3::IfcFailureConnectionCondition::IfcFailureConnectionCondition(boost:: // Function implementations for IfcFan boost::optional< ::Ifc4x3_rc3::IfcFanTypeEnum::Value > Ifc4x3_rc3::IfcFan::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcFanTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFanTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFanTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFan::declaration() const { return *IFC4X3_RC3_IfcFan_type; } @@ -16627,7 +16627,7 @@ Ifc4x3_rc3::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwn // Function implementations for IfcFastener boost::optional< ::Ifc4x3_rc3::IfcFastenerTypeEnum::Value > Ifc4x3_rc3::IfcFastener::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcFastenerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFastenerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFastenerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFastener::declaration() const { return *IFC4X3_RC3_IfcFastener_type; } @@ -16675,7 +16675,7 @@ Ifc4x3_rc3::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::stri aggregate_of_instance::ptr Ifc4x3_rc3::IfcFillAreaStyle::FillStyles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcFillAreaStyle::setFillStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc3::IfcFillAreaStyle::ModelOrDraughting() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcFillAreaStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcFillAreaStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFillAreaStyle::declaration() const { return *IFC4X3_RC3_IfcFillAreaStyle_type; } @@ -16717,7 +16717,7 @@ Ifc4x3_rc3::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(aggregate_of< ::Ifc4x3_ // Function implementations for IfcFilter boost::optional< ::Ifc4x3_rc3::IfcFilterTypeEnum::Value > Ifc4x3_rc3::IfcFilter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcFilterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFilterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFilterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFilter::declaration() const { return *IFC4X3_RC3_IfcFilter_type; } @@ -16737,7 +16737,7 @@ Ifc4x3_rc3::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4x3_rc3:: // Function implementations for IfcFireSuppressionTerminal boost::optional< ::Ifc4x3_rc3::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4x3_rc3::IfcFireSuppressionTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFireSuppressionTerminal::declaration() const { return *IFC4X3_RC3_IfcFireSuppressionTerminal_type; } @@ -16799,7 +16799,7 @@ Ifc4x3_rc3::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcFlowInstrument boost::optional< ::Ifc4x3_rc3::IfcFlowInstrumentTypeEnum::Value > Ifc4x3_rc3::IfcFlowInstrument::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFlowInstrumentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFlowInstrumentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFlowInstrument::declaration() const { return *IFC4X3_RC3_IfcFlowInstrument_type; } @@ -16819,7 +16819,7 @@ Ifc4x3_rc3::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId // Function implementations for IfcFlowMeter boost::optional< ::Ifc4x3_rc3::IfcFlowMeterTypeEnum::Value > Ifc4x3_rc3::IfcFlowMeter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFlowMeterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFlowMeterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFlowMeter::declaration() const { return *IFC4X3_RC3_IfcFlowMeter_type; } @@ -16919,7 +16919,7 @@ Ifc4x3_rc3::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v // Function implementations for IfcFooting boost::optional< ::Ifc4x3_rc3::IfcFootingTypeEnum::Value > Ifc4x3_rc3::IfcFooting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcFootingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFootingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFootingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFooting::declaration() const { return *IFC4X3_RC3_IfcFooting_type; } @@ -16955,7 +16955,7 @@ Ifc4x3_rc3::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_Gl // Function implementations for IfcFurniture boost::optional< ::Ifc4x3_rc3::IfcFurnitureTypeEnum::Value > Ifc4x3_rc3::IfcFurniture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcFurnitureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFurniture::declaration() const { return *IFC4X3_RC3_IfcFurniture_type; } @@ -16967,7 +16967,7 @@ Ifc4x3_rc3::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4x3_rc3::If ::Ifc4x3_rc3::IfcAssemblyPlaceEnum::Value Ifc4x3_rc3::IfcFurnitureType::AssemblyPlace() const { return ::Ifc4x3_rc3::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc3::IfcFurnitureType::setAssemblyPlace(::Ifc4x3_rc3::IfcAssemblyPlaceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcAssemblyPlaceEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc3::IfcFurnitureTypeEnum::Value > Ifc4x3_rc3::IfcFurnitureType::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcFurnitureTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcFurnitureType::declaration() const { return *IFC4X3_RC3_IfcFurnitureType_type; } @@ -16977,7 +16977,7 @@ Ifc4x3_rc3::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4x3 // Function implementations for IfcGeographicElement boost::optional< ::Ifc4x3_rc3::IfcGeographicElementTypeEnum::Value > Ifc4x3_rc3::IfcGeographicElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcGeographicElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcGeographicElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcGeographicElement::declaration() const { return *IFC4X3_RC3_IfcGeographicElement_type; } @@ -17007,7 +17007,7 @@ Ifc4x3_rc3::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of_instance::pt int Ifc4x3_rc3::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { int v = *data_->getArgument(2); return v; } void Ifc4x3_rc3::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcGeometricRepresentationContext::Precision() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc3::IfcAxis2Placement* Ifc4x3_rc3::IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc3::IfcAxis2Placement>(true); } void Ifc4x3_rc3::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc4x3_rc3::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } ::Ifc4x3_rc3::IfcDirection* Ifc4x3_rc3::IfcGeometricRepresentationContext::TrueNorth() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc3::IfcDirection>(true); } @@ -17033,11 +17033,11 @@ Ifc4x3_rc3::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : I ::Ifc4x3_rc3::IfcGeometricRepresentationContext* Ifc4x3_rc3::IfcGeometricRepresentationSubContext::ParentContext() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcGeometricRepresentationContext>(true); } void Ifc4x3_rc3::IfcGeometricRepresentationSubContext::setParentContext(::Ifc4x3_rc3::IfcGeometricRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcGeometricRepresentationSubContext::TargetScale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcGeometricProjectionEnum::Value Ifc4x3_rc3::IfcGeometricRepresentationSubContext::TargetView() const { return ::Ifc4x3_rc3::IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc3::IfcGeometricRepresentationSubContext::setTargetView(::Ifc4x3_rc3::IfcGeometricProjectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcGeometricProjectionEnum::ToString(v)));data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcGeometricRepresentationSubContext::declaration() const { return *IFC4X3_RC3_IfcGeometricRepresentationSubContext_type; } @@ -17113,9 +17113,9 @@ void Ifc4x3_rc3::IfcGrid::setUAxes(aggregate_of< ::Ifc4x3_rc3::IfcGridAxis >::pt aggregate_of< ::Ifc4x3_rc3::IfcGridAxis >::ptr Ifc4x3_rc3::IfcGrid::VAxes() const { aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc3::IfcGridAxis >(); } void Ifc4x3_rc3::IfcGrid::setVAxes(aggregate_of< ::Ifc4x3_rc3::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcGridAxis >::ptr > Ifc4x3_rc3::IfcGrid::WAxes() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc3::IfcGridAxis >(); } -void Ifc4x3_rc3::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc3::IfcGridTypeEnum::Value > Ifc4x3_rc3::IfcGrid::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcGridTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcGridTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcGridTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcGrid::declaration() const { return *IFC4X3_RC3_IfcGrid_type; } @@ -17125,7 +17125,7 @@ Ifc4x3_rc3::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHist // Function implementations for IfcGridAxis boost::optional< std::string > Ifc4x3_rc3::IfcGridAxis::AxisTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc3::IfcCurve* Ifc4x3_rc3::IfcGridAxis::AxisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc3::IfcCurve>(true); } void Ifc4x3_rc3::IfcGridAxis::setAxisCurve(::Ifc4x3_rc3::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } bool Ifc4x3_rc3::IfcGridAxis::SameSense() const { bool v = *data_->getArgument(2); return v; } @@ -17176,7 +17176,7 @@ Ifc4x3_rc3::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4x3_rc3::IfcSurface* v1_Ba // Function implementations for IfcHeatExchanger boost::optional< ::Ifc4x3_rc3::IfcHeatExchangerTypeEnum::Value > Ifc4x3_rc3::IfcHeatExchanger::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcHeatExchangerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcHeatExchangerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcHeatExchanger::declaration() const { return *IFC4X3_RC3_IfcHeatExchanger_type; } @@ -17196,7 +17196,7 @@ Ifc4x3_rc3::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, // Function implementations for IfcHumidifier boost::optional< ::Ifc4x3_rc3::IfcHumidifierTypeEnum::Value > Ifc4x3_rc3::IfcHumidifier::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcHumidifierTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcHumidifierTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcHumidifierTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcHumidifier::declaration() const { return *IFC4X3_RC3_IfcHumidifier_type; } @@ -17224,11 +17224,11 @@ void Ifc4x3_rc3::IfcIShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc3::IfcIShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcIShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcIShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc3::IfcIShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcIShapeProfileDef::declaration() const { return *IFC4X3_RC3_IfcIShapeProfileDef_type; } @@ -17268,7 +17268,7 @@ Ifc4x3_rc3::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(std::st // Function implementations for IfcInclinedReferenceSweptAreaSolid boost::optional< bool > Ifc4x3_rc3::IfcInclinedReferenceSweptAreaSolid::FixedAxisVertical() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } bool v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcInclinedReferenceSweptAreaSolid::setFixedAxisVertical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcInclinedReferenceSweptAreaSolid::setFixedAxisVertical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcInclinedReferenceSweptAreaSolid::declaration() const { return *IFC4X3_RC3_IfcInclinedReferenceSweptAreaSolid_type; } @@ -17280,7 +17280,7 @@ Ifc4x3_rc3::IfcInclinedReferenceSweptAreaSolid::IfcInclinedReferenceSweptAreaSol ::Ifc4x3_rc3::IfcTessellatedFaceSet* Ifc4x3_rc3::IfcIndexedColourMap::MappedTo() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc3::IfcTessellatedFaceSet>(true); } void Ifc4x3_rc3::IfcIndexedColourMap::setMappedTo(::Ifc4x3_rc3::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc3::IfcIndexedColourMap::Opacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc3::IfcColourRgbList* Ifc4x3_rc3::IfcIndexedColourMap::Colours() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc3::IfcColourRgbList>(true); } void Ifc4x3_rc3::IfcIndexedColourMap::setColours(::Ifc4x3_rc3::IfcColourRgbList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::vector< int > /*[1:?]*/ Ifc4x3_rc3::IfcIndexedColourMap::ColourIndex() const { std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } @@ -17296,9 +17296,9 @@ Ifc4x3_rc3::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4x3_rc3::IfcTessellate ::Ifc4x3_rc3::IfcCartesianPointList* Ifc4x3_rc3::IfcIndexedPolyCurve::Points() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc3::IfcCartesianPointList>(true); } void Ifc4x3_rc3::IfcIndexedPolyCurve::setPoints(::Ifc4x3_rc3::IfcCartesianPointList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc3::IfcIndexedPolyCurve::Segments() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc3::IfcIndexedPolyCurve::SelfIntersect() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcIndexedPolyCurve::declaration() const { return *IFC4X3_RC3_IfcIndexedPolyCurve_type; } @@ -17341,7 +17341,7 @@ Ifc4x3_rc3::IfcIndexedTextureMap::IfcIndexedTextureMap(aggregate_of< ::Ifc4x3_rc // Function implementations for IfcIndexedTriangleTextureMap boost::optional< std::vector< std::vector< int > > > Ifc4x3_rc3::IfcIndexedTriangleTextureMap::TexCoordIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcIndexedTriangleTextureMap::declaration() const { return *IFC4X3_RC3_IfcIndexedTriangleTextureMap_type; } @@ -17351,7 +17351,7 @@ Ifc4x3_rc3::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(aggregate // Function implementations for IfcInterceptor boost::optional< ::Ifc4x3_rc3::IfcInterceptorTypeEnum::Value > Ifc4x3_rc3::IfcInterceptor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcInterceptorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcInterceptorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcInterceptorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcInterceptor::declaration() const { return *IFC4X3_RC3_IfcInterceptor_type; } @@ -17379,13 +17379,13 @@ Ifc4x3_rc3::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4x3_rc3::IfcCurve* v // Function implementations for IfcInventory boost::optional< ::Ifc4x3_rc3::IfcInventoryTypeEnum::Value > Ifc4x3_rc3::IfcInventory::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc3::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcInventoryTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcInventoryTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcActorSelect* Ifc4x3_rc3::IfcInventory::Jurisdiction() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcActorSelect>(true); } void Ifc4x3_rc3::IfcInventory::setJurisdiction(::Ifc4x3_rc3::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPerson >::ptr > Ifc4x3_rc3::IfcInventory::ResponsiblePersons() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc3::IfcPerson >(); } -void Ifc4x3_rc3::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcInventory::LastUpdateDate() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcCostValue* Ifc4x3_rc3::IfcInventory::CurrentValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc3::IfcCostValue>(true); } void Ifc4x3_rc3::IfcInventory::setCurrentValue(::Ifc4x3_rc3::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x3_rc3::IfcCostValue* Ifc4x3_rc3::IfcInventory::OriginalValue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc3::IfcCostValue>(true); } @@ -17421,7 +17421,7 @@ Ifc4x3_rc3::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string // Function implementations for IfcJunctionBox boost::optional< ::Ifc4x3_rc3::IfcJunctionBoxTypeEnum::Value > Ifc4x3_rc3::IfcJunctionBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcJunctionBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcJunctionBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcJunctionBox::declaration() const { return *IFC4X3_RC3_IfcJunctionBox_type; } @@ -17463,15 +17463,15 @@ Ifc4x3_rc3::IfcKerbType::IfcKerbType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO double Ifc4x3_rc3::IfcLShapeProfileDef::Depth() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcLShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcLShapeProfileDef::Width() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } double Ifc4x3_rc3::IfcLShapeProfileDef::Thickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x3_rc3::IfcLShapeProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcLShapeProfileDef::FilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcLShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcLShapeProfileDef::LegSlope() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcLShapeProfileDef::declaration() const { return *IFC4X3_RC3_IfcLShapeProfileDef_type; } @@ -17481,7 +17481,7 @@ Ifc4x3_rc3::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4x3_rc3::IfcProfileTyp // Function implementations for IfcLaborResource boost::optional< ::Ifc4x3_rc3::IfcLaborResourceTypeEnum::Value > Ifc4x3_rc3::IfcLaborResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcLaborResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcLaborResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcLaborResource::declaration() const { return *IFC4X3_RC3_IfcLaborResource_type; } @@ -17513,7 +17513,7 @@ Ifc4x3_rc3::IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost // Function implementations for IfcLamp boost::optional< ::Ifc4x3_rc3::IfcLampTypeEnum::Value > Ifc4x3_rc3::IfcLamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcLampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcLampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcLampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcLamp::declaration() const { return *IFC4X3_RC3_IfcLamp_type; } @@ -17535,15 +17535,15 @@ Ifc4x3_rc3::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO std::string Ifc4x3_rc3::IfcLibraryInformation::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc3::IfcLibraryInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcLibraryInformation::Version() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc3::IfcActorSelect* Ifc4x3_rc3::IfcLibraryInformation::Publisher() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc3::IfcActorSelect>(true); } void Ifc4x3_rc3::IfcLibraryInformation::setPublisher(::Ifc4x3_rc3::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcLibraryInformation::VersionDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcLibraryInformation::Location() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcLibraryInformation::Description() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcRelAssociatesLibrary::list::ptr Ifc4x3_rc3::IfcLibraryInformation::LibraryInfoForObjects() const { return data_->getInverse(IFC4X3_RC3_IfcRelAssociatesLibrary_type, 5)->as(); } ::Ifc4x3_rc3::IfcLibraryReference::list::ptr Ifc4x3_rc3::IfcLibraryInformation::HasLibraryReferences() const { return data_->getInverse(IFC4X3_RC3_IfcLibraryReference_type, 5)->as(); } @@ -17555,9 +17555,9 @@ Ifc4x3_rc3::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, bo // Function implementations for IfcLibraryReference boost::optional< std::string > Ifc4x3_rc3::IfcLibraryReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcLibraryReference::Language() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc3::IfcLibraryInformation* Ifc4x3_rc3::IfcLibraryReference::ReferencedLibrary() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc3::IfcLibraryInformation>(true); } void Ifc4x3_rc3::IfcLibraryReference::setReferencedLibrary(::Ifc4x3_rc3::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -17584,7 +17584,7 @@ Ifc4x3_rc3::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPla // Function implementations for IfcLightFixture boost::optional< ::Ifc4x3_rc3::IfcLightFixtureTypeEnum::Value > Ifc4x3_rc3::IfcLightFixture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcLightFixtureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcLightFixtureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcLightFixture::declaration() const { return *IFC4X3_RC3_IfcLightFixture_type; } @@ -17616,13 +17616,13 @@ Ifc4x3_rc3::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4x // Function implementations for IfcLightSource boost::optional< std::string > Ifc4x3_rc3::IfcLightSource::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc3::IfcColourRgb* Ifc4x3_rc3::IfcLightSource::LightColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc3::IfcColourRgb>(true); } void Ifc4x3_rc3::IfcLightSource::setLightColour(::Ifc4x3_rc3::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcLightSource::AmbientIntensity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcLightSource::Intensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcLightSource::declaration() const { return *IFC4X3_RC3_IfcLightSource_type; } @@ -17690,7 +17690,7 @@ Ifc4x3_rc3::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< ::Ifc4x3_rc3::IfcDirection* Ifc4x3_rc3::IfcLightSourceSpot::Orientation() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc3::IfcDirection>(true); } void Ifc4x3_rc3::IfcLightSourceSpot::setOrientation(::Ifc4x3_rc3::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcLightSourceSpot::ConcentrationExponent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } double Ifc4x3_rc3::IfcLightSourceSpot::SpreadAngle() const { double v = *data_->getArgument(11); return v; } void Ifc4x3_rc3::IfcLightSourceSpot::setSpreadAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } double Ifc4x3_rc3::IfcLightSourceSpot::BeamWidthAngle() const { double v = *data_->getArgument(12); return v; } @@ -17744,7 +17744,7 @@ Ifc4x3_rc3::IfcLinearPositioningElement::IfcLinearPositioningElement(std::string // Function implementations for IfcLiquidTerminal boost::optional< ::Ifc4x3_rc3::IfcLiquidTerminalTypeEnum::Value > Ifc4x3_rc3::IfcLiquidTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcLiquidTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcLiquidTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcLiquidTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcLiquidTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcLiquidTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcLiquidTerminal::declaration() const { return *IFC4X3_RC3_IfcLiquidTerminal_type; } @@ -17798,15 +17798,15 @@ void Ifc4x3_rc3::IfcMapConversion::setNorthings(double v) { {IfcWrite::IfcWriteA double Ifc4x3_rc3::IfcMapConversion::OrthogonalHeight() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc3::IfcMapConversion::setOrthogonalHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMapConversion::XAxisAbscissa() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMapConversion::XAxisOrdinate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMapConversion::Scale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMapConversion::ScaleY() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcMapConversion::setScaleY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcMapConversion::setScaleY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMapConversion::ScaleZ() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcMapConversion::setScaleZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcMapConversion::setScaleZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMapConversion::declaration() const { return *IFC4X3_RC3_IfcMapConversion_type; } @@ -17828,7 +17828,7 @@ Ifc4x3_rc3::IfcMappedItem::IfcMappedItem(::Ifc4x3_rc3::IfcRepresentationMap* v1_ // Function implementations for IfcMarineFacility boost::optional< ::Ifc4x3_rc3::IfcMarineFacilityTypeEnum::Value > Ifc4x3_rc3::IfcMarineFacility::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcMarineFacilityTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcMarineFacility::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMarineFacilityTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMarineFacilityTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcMarineFacility::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMarineFacilityTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMarineFacilityTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMarineFacility::declaration() const { return *IFC4X3_RC3_IfcMarineFacility_type; } @@ -17840,9 +17840,9 @@ Ifc4x3_rc3::IfcMarineFacility::IfcMarineFacility(std::string v1_GlobalId, ::Ifc4 std::string Ifc4x3_rc3::IfcMaterial::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc3::IfcMaterial::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterial::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterial::Category() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcMaterialDefinitionRepresentation::list::ptr Ifc4x3_rc3::IfcMaterial::HasRepresentation() const { return data_->getInverse(IFC4X3_RC3_IfcMaterialDefinitionRepresentation_type, 3)->as(); } ::Ifc4x3_rc3::IfcMaterialRelationship::list::ptr Ifc4x3_rc3::IfcMaterial::IsRelatedWith() const { return data_->getInverse(IFC4X3_RC3_IfcMaterialRelationship_type, 3)->as(); } @@ -17867,15 +17867,15 @@ Ifc4x3_rc3::IfcMaterialClassificationRelationship::IfcMaterialClassificationRela // Function implementations for IfcMaterialConstituent boost::optional< std::string > Ifc4x3_rc3::IfcMaterialConstituent::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialConstituent::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc3::IfcMaterial* Ifc4x3_rc3::IfcMaterialConstituent::Material() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc3::IfcMaterial>(true); } void Ifc4x3_rc3::IfcMaterialConstituent::setMaterial(::Ifc4x3_rc3::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMaterialConstituent::Fraction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialConstituent::Category() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc3::IfcMaterialConstituentSet::list::ptr Ifc4x3_rc3::IfcMaterialConstituent::ToMaterialConstituentSet() const { return data_->getInverse(IFC4X3_RC3_IfcMaterialConstituentSet_type, 2)->as(); } @@ -17886,11 +17886,11 @@ Ifc4x3_rc3::IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std: // Function implementations for IfcMaterialConstituentSet boost::optional< std::string > Ifc4x3_rc3::IfcMaterialConstituentSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialConstituentSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcMaterialConstituent >::ptr > Ifc4x3_rc3::IfcMaterialConstituentSet::MaterialConstituents() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc3::IfcMaterialConstituent >(); } -void Ifc4x3_rc3::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMaterialConstituentSet::declaration() const { return *IFC4X3_RC3_IfcMaterialConstituentSet_type; } @@ -17925,15 +17925,15 @@ void Ifc4x3_rc3::IfcMaterialLayer::setMaterial(::Ifc4x3_rc3::IfcMaterial* v) { { double Ifc4x3_rc3::IfcMaterialLayer::LayerThickness() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcMaterialLayer::setLayerThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< boost::logic::tribool > Ifc4x3_rc3::IfcMaterialLayer::IsVentilated() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } boost::logic::tribool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialLayer::Name() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialLayer::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialLayer::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x3_rc3::IfcMaterialLayer::Priority() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc3::IfcMaterialLayerSet::list::ptr Ifc4x3_rc3::IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(IFC4X3_RC3_IfcMaterialLayerSet_type, 0)->as(); } @@ -17946,9 +17946,9 @@ Ifc4x3_rc3::IfcMaterialLayer::IfcMaterialLayer(::Ifc4x3_rc3::IfcMaterial* v1_Mat aggregate_of< ::Ifc4x3_rc3::IfcMaterialLayer >::ptr Ifc4x3_rc3::IfcMaterialLayerSet::MaterialLayers() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc3::IfcMaterialLayer >(); } void Ifc4x3_rc3::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc4x3_rc3::IfcMaterialLayer >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialLayerSet::LayerSetName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialLayerSet::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMaterialLayerSet::declaration() const { return *IFC4X3_RC3_IfcMaterialLayerSet_type; } @@ -17966,7 +17966,7 @@ void Ifc4x3_rc3::IfcMaterialLayerSetUsage::setDirectionSense(::Ifc4x3_rc3::IfcDi double Ifc4x3_rc3::IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMaterialLayerSetUsage::declaration() const { return *IFC4X3_RC3_IfcMaterialLayerSetUsage_type; } @@ -17998,17 +17998,17 @@ Ifc4x3_rc3::IfcMaterialList::IfcMaterialList(aggregate_of< ::Ifc4x3_rc3::IfcMate // Function implementations for IfcMaterialProfile boost::optional< std::string > Ifc4x3_rc3::IfcMaterialProfile::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialProfile::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc3::IfcMaterial* Ifc4x3_rc3::IfcMaterialProfile::Material() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc3::IfcMaterial>(true); } void Ifc4x3_rc3::IfcMaterialProfile::setMaterial(::Ifc4x3_rc3::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcProfileDef* Ifc4x3_rc3::IfcMaterialProfile::Profile() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcProfileDef>(true); } void Ifc4x3_rc3::IfcMaterialProfile::setProfile(::Ifc4x3_rc3::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc3::IfcMaterialProfile::Priority() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialProfile::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcMaterialProfileSet::list::ptr Ifc4x3_rc3::IfcMaterialProfile::ToMaterialProfileSet() const { return data_->getInverse(IFC4X3_RC3_IfcMaterialProfileSet_type, 2)->as(); } @@ -18019,9 +18019,9 @@ Ifc4x3_rc3::IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string // Function implementations for IfcMaterialProfileSet boost::optional< std::string > Ifc4x3_rc3::IfcMaterialProfileSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialProfileSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc3::IfcMaterialProfile >::ptr Ifc4x3_rc3::IfcMaterialProfileSet::MaterialProfiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc3::IfcMaterialProfile >(); } void Ifc4x3_rc3::IfcMaterialProfileSet::setMaterialProfiles(aggregate_of< ::Ifc4x3_rc3::IfcMaterialProfile >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcCompositeProfileDef* Ifc4x3_rc3::IfcMaterialProfileSet::CompositeProfile() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcCompositeProfileDef>(true); } @@ -18037,9 +18037,9 @@ Ifc4x3_rc3::IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::s ::Ifc4x3_rc3::IfcMaterialProfileSet* Ifc4x3_rc3::IfcMaterialProfileSetUsage::ForProfileSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc3::IfcMaterialProfileSet>(true); } void Ifc4x3_rc3::IfcMaterialProfileSetUsage::setForProfileSet(::Ifc4x3_rc3::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< int > Ifc4x3_rc3::IfcMaterialProfileSetUsage::CardinalPoint() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMaterialProfileSetUsage::declaration() const { return *IFC4X3_RC3_IfcMaterialProfileSetUsage_type; } @@ -18051,7 +18051,7 @@ Ifc4x3_rc3::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4x3_rc3: ::Ifc4x3_rc3::IfcMaterialProfileSet* Ifc4x3_rc3::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcMaterialProfileSet>(true); } void Ifc4x3_rc3::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(::Ifc4x3_rc3::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc3::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMaterialProfileSetUsageTapering::declaration() const { return *IFC4X3_RC3_IfcMaterialProfileSetUsageTapering_type; } @@ -18085,7 +18085,7 @@ void Ifc4x3_rc3::IfcMaterialRelationship::setRelatingMaterial(::Ifc4x3_rc3::IfcM aggregate_of< ::Ifc4x3_rc3::IfcMaterial >::ptr Ifc4x3_rc3::IfcMaterialRelationship::RelatedMaterials() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc3::IfcMaterial >(); } void Ifc4x3_rc3::IfcMaterialRelationship::setRelatedMaterials(aggregate_of< ::Ifc4x3_rc3::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMaterialRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMaterialRelationship::declaration() const { return *IFC4X3_RC3_IfcMaterialRelationship_type; } @@ -18116,11 +18116,11 @@ Ifc4x3_rc3::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4x3_rc3::IfcValue* v1_Va // Function implementations for IfcMechanicalFastener boost::optional< double > Ifc4x3_rc3::IfcMechanicalFastener::NominalDiameter() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMechanicalFastener::NominalLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc3::IfcMechanicalFastenerTypeEnum::Value > Ifc4x3_rc3::IfcMechanicalFastener::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMechanicalFastenerTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMechanicalFastenerTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMechanicalFastener::declaration() const { return *IFC4X3_RC3_IfcMechanicalFastener_type; } @@ -18132,9 +18132,9 @@ Ifc4x3_rc3::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId ::Ifc4x3_rc3::IfcMechanicalFastenerTypeEnum::Value Ifc4x3_rc3::IfcMechanicalFastenerType::PredefinedType() const { return ::Ifc4x3_rc3::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc3::IfcMechanicalFastenerType::setPredefinedType(::Ifc4x3_rc3::IfcMechanicalFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcMechanicalFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMechanicalFastenerType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcMechanicalFastenerType::NominalLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMechanicalFastenerType::declaration() const { return *IFC4X3_RC3_IfcMechanicalFastenerType_type; } @@ -18144,7 +18144,7 @@ Ifc4x3_rc3::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_ // Function implementations for IfcMedicalDevice boost::optional< ::Ifc4x3_rc3::IfcMedicalDeviceTypeEnum::Value > Ifc4x3_rc3::IfcMedicalDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMedicalDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMedicalDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMedicalDevice::declaration() const { return *IFC4X3_RC3_IfcMedicalDevice_type; } @@ -18164,7 +18164,7 @@ Ifc4x3_rc3::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, // Function implementations for IfcMember boost::optional< ::Ifc4x3_rc3::IfcMemberTypeEnum::Value > Ifc4x3_rc3::IfcMember::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcMemberTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMemberTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMemberTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMember::declaration() const { return *IFC4X3_RC3_IfcMember_type; } @@ -18194,7 +18194,7 @@ Ifc4x3_rc3::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4x3_rc3:: ::Ifc4x3_rc3::IfcBenchmarkEnum::Value Ifc4x3_rc3::IfcMetric::Benchmark() const { return ::Ifc4x3_rc3::IfcBenchmarkEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc3::IfcMetric::setBenchmark(::Ifc4x3_rc3::IfcBenchmarkEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcBenchmarkEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcMetric::ValueSource() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcMetricValueSelect* Ifc4x3_rc3::IfcMetric::DataValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc3::IfcMetricValueSelect>(true); } void Ifc4x3_rc3::IfcMetric::setDataValue(::Ifc4x3_rc3::IfcMetricValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x3_rc3::IfcReference* Ifc4x3_rc3::IfcMetric::ReferencePath() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc3::IfcReference>(true); } @@ -18216,7 +18216,7 @@ Ifc4x3_rc3::IfcMirroredProfileDef::IfcMirroredProfileDef(::Ifc4x3_rc3::IfcProfil // Function implementations for IfcMobileTelecommunicationsAppliance boost::optional< ::Ifc4x3_rc3::IfcMobileTelecommunicationsApplianceTypeEnum::Value > Ifc4x3_rc3::IfcMobileTelecommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMobileTelecommunicationsAppliance::declaration() const { return *IFC4X3_RC3_IfcMobileTelecommunicationsAppliance_type; } @@ -18246,7 +18246,7 @@ Ifc4x3_rc3::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil: // Function implementations for IfcMooringDevice boost::optional< ::Ifc4x3_rc3::IfcMooringDeviceTypeEnum::Value > Ifc4x3_rc3::IfcMooringDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcMooringDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMooringDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMooringDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMooringDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMooringDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMooringDevice::declaration() const { return *IFC4X3_RC3_IfcMooringDevice_type; } @@ -18266,7 +18266,7 @@ Ifc4x3_rc3::IfcMooringDeviceType::IfcMooringDeviceType(std::string v1_GlobalId, // Function implementations for IfcMotorConnection boost::optional< ::Ifc4x3_rc3::IfcMotorConnectionTypeEnum::Value > Ifc4x3_rc3::IfcMotorConnection::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMotorConnectionTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcMotorConnectionTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcMotorConnection::declaration() const { return *IFC4X3_RC3_IfcMotorConnection_type; } @@ -18298,7 +18298,7 @@ Ifc4x3_rc3::IfcNamedUnit::IfcNamedUnit(::Ifc4x3_rc3::IfcDimensionalExponents* v1 // Function implementations for IfcNavigationElement boost::optional< ::Ifc4x3_rc3::IfcNavigationElementTypeEnum::Value > Ifc4x3_rc3::IfcNavigationElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcNavigationElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcNavigationElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcNavigationElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcNavigationElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcNavigationElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcNavigationElement::declaration() const { return *IFC4X3_RC3_IfcNavigationElement_type; } @@ -18318,7 +18318,7 @@ Ifc4x3_rc3::IfcNavigationElementType::IfcNavigationElementType(std::string v1_Gl // Function implementations for IfcObject boost::optional< std::string > Ifc4x3_rc3::IfcObject::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc3::IfcRelDefinesByObject::list::ptr Ifc4x3_rc3::IfcObject::IsDeclaredBy() const { return data_->getInverse(IFC4X3_RC3_IfcRelDefinesByObject_type, 4)->as(); } ::Ifc4x3_rc3::IfcRelDefinesByObject::list::ptr Ifc4x3_rc3::IfcObject::Declares() const { return data_->getInverse(IFC4X3_RC3_IfcRelDefinesByObject_type, 5)->as(); } @@ -18358,13 +18358,13 @@ Ifc4x3_rc3::IfcObjectPlacement::IfcObjectPlacement(::Ifc4x3_rc3::IfcObjectPlacem // Function implementations for IfcObjective boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcConstraint >::ptr > Ifc4x3_rc3::IfcObjective::BenchmarkValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc3::IfcConstraint >(); } -void Ifc4x3_rc3::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc3::IfcLogicalOperatorEnum::Value > Ifc4x3_rc3::IfcObjective::LogicalAggregator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcLogicalOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_rc3::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcLogicalOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_rc3::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcLogicalOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcObjectiveEnum::Value Ifc4x3_rc3::IfcObjective::ObjectiveQualifier() const { return ::Ifc4x3_rc3::IfcObjectiveEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc3::IfcObjective::setObjectiveQualifier(::Ifc4x3_rc3::IfcObjectiveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcObjectiveEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcObjective::UserDefinedQualifier() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcObjective::declaration() const { return *IFC4X3_RC3_IfcObjective_type; } @@ -18374,7 +18374,7 @@ Ifc4x3_rc3::IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std // Function implementations for IfcOccupant boost::optional< ::Ifc4x3_rc3::IfcOccupantTypeEnum::Value > Ifc4x3_rc3::IfcOccupant::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcOccupantTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc3::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcOccupantTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcOccupantTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcOccupant::declaration() const { return *IFC4X3_RC3_IfcOccupant_type; } @@ -18422,7 +18422,7 @@ Ifc4x3_rc3::IfcOffsetCurve3D::IfcOffsetCurve3D(::Ifc4x3_rc3::IfcCurve* v1_BasisC aggregate_of< ::Ifc4x3_rc3::IfcPointByDistanceExpression >::ptr Ifc4x3_rc3::IfcOffsetCurveByDistances::OffsetValues() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc3::IfcPointByDistanceExpression >(); } void Ifc4x3_rc3::IfcOffsetCurveByDistances::setOffsetValues(aggregate_of< ::Ifc4x3_rc3::IfcPointByDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcOffsetCurveByDistances::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcOffsetCurveByDistances::declaration() const { return *IFC4X3_RC3_IfcOffsetCurveByDistances_type; } @@ -18438,7 +18438,7 @@ void Ifc4x3_rc3::IfcOpenCrossProfileDef::setWidths(std::vector< double > /*[1:?] std::vector< double > /*[1:?]*/ Ifc4x3_rc3::IfcOpenCrossProfileDef::Slopes() const { std::vector< double > /*[1:?]*/ v = *data_->getArgument(4); return v; } void Ifc4x3_rc3::IfcOpenCrossProfileDef::setSlopes(std::vector< double > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[2:?]*/ > Ifc4x3_rc3::IfcOpenCrossProfileDef::Tags() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[2:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcOpenCrossProfileDef::declaration() const { return *IFC4X3_RC3_IfcOpenCrossProfileDef_type; } @@ -18456,7 +18456,7 @@ Ifc4x3_rc3::IfcOpenShell::IfcOpenShell(aggregate_of< ::Ifc4x3_rc3::IfcFace >::pt // Function implementations for IfcOpeningElement boost::optional< ::Ifc4x3_rc3::IfcOpeningElementTypeEnum::Value > Ifc4x3_rc3::IfcOpeningElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcOpeningElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcOpeningElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcOpeningElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcRelFillsElement::list::ptr Ifc4x3_rc3::IfcOpeningElement::HasFillings() const { return data_->getInverse(IFC4X3_RC3_IfcRelFillsElement_type, 4)->as(); } @@ -18475,15 +18475,15 @@ Ifc4x3_rc3::IfcOpeningStandardCase::IfcOpeningStandardCase(std::string v1_Global // Function implementations for IfcOrganization boost::optional< std::string > Ifc4x3_rc3::IfcOrganization::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } std::string Ifc4x3_rc3::IfcOrganization::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcOrganization::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcOrganization::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcActorRole >::ptr > Ifc4x3_rc3::IfcOrganization::Roles() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc3::IfcActorRole >(); } -void Ifc4x3_rc3::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAddress >::ptr > Ifc4x3_rc3::IfcOrganization::Addresses() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc3::IfcAddress >(); } -void Ifc4x3_rc3::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(4,attr);} } ::Ifc4x3_rc3::IfcOrganizationRelationship::list::ptr Ifc4x3_rc3::IfcOrganization::IsRelatedBy() const { return data_->getInverse(IFC4X3_RC3_IfcOrganizationRelationship_type, 3)->as(); } ::Ifc4x3_rc3::IfcOrganizationRelationship::list::ptr Ifc4x3_rc3::IfcOrganization::Relates() const { return data_->getInverse(IFC4X3_RC3_IfcOrganizationRelationship_type, 2)->as(); } @@ -18528,7 +18528,7 @@ Ifc4x3_rc3::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(aggregate_of< ::Ifc4x3_ // Function implementations for IfcOutlet boost::optional< ::Ifc4x3_rc3::IfcOutletTypeEnum::Value > Ifc4x3_rc3::IfcOutlet::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcOutletTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcOutletTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcOutletTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcOutlet::declaration() const { return *IFC4X3_RC3_IfcOutlet_type; } @@ -18552,11 +18552,11 @@ void Ifc4x3_rc3::IfcOwnerHistory::setOwningUser(::Ifc4x3_rc3::IfcPersonAndOrgani ::Ifc4x3_rc3::IfcApplication* Ifc4x3_rc3::IfcOwnerHistory::OwningApplication() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc3::IfcApplication>(true); } void Ifc4x3_rc3::IfcOwnerHistory::setOwningApplication(::Ifc4x3_rc3::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x3_rc3::IfcStateEnum::Value > Ifc4x3_rc3::IfcOwnerHistory::State() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcStateEnum::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc3::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_rc3::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcStateEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_rc3::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcStateEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< ::Ifc4x3_rc3::IfcChangeActionEnum::Value > Ifc4x3_rc3::IfcOwnerHistory::ChangeAction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcChangeActionEnum::FromString(*data_->getArgument(3)); } -void Ifc4x3_rc3::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_rc3::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcChangeActionEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_rc3::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcChangeActionEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc3::IfcOwnerHistory::LastModifiedDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc3::IfcPersonAndOrganization* Ifc4x3_rc3::IfcOwnerHistory::LastModifyingUser() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc3::IfcPersonAndOrganization>(true); } void Ifc4x3_rc3::IfcOwnerHistory::setLastModifyingUser(::Ifc4x3_rc3::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcApplication* Ifc4x3_rc3::IfcOwnerHistory::LastModifyingApplication() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcApplication>(true); } @@ -18592,7 +18592,7 @@ Ifc4x3_rc3::IfcPath::IfcPath(aggregate_of< ::Ifc4x3_rc3::IfcOrientedEdge >::ptr // Function implementations for IfcPavement boost::optional< ::Ifc4x3_rc3::IfcPavementTypeEnum::Value > Ifc4x3_rc3::IfcPavement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcPavementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcPavement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPavementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPavementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcPavement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPavementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPavementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPavement::declaration() const { return *IFC4X3_RC3_IfcPavement_type; } @@ -18626,7 +18626,7 @@ Ifc4x3_rc3::IfcPcurve::IfcPcurve(::Ifc4x3_rc3::IfcSurface* v1_BasisSurface, ::If std::string Ifc4x3_rc3::IfcPerformanceHistory::LifeCyclePhase() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcPerformanceHistory::setLifeCyclePhase(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc3::IfcPerformanceHistoryTypeEnum::Value > Ifc4x3_rc3::IfcPerformanceHistory::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcPerformanceHistoryTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc3::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPerformanceHistoryTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPerformanceHistoryTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPerformanceHistory::declaration() const { return *IFC4X3_RC3_IfcPerformanceHistory_type; } @@ -18640,9 +18640,9 @@ void Ifc4x3_rc3::IfcPermeableCoveringProperties::setOperationType(::Ifc4x3_rc3:: ::Ifc4x3_rc3::IfcWindowPanelPositionEnum::Value Ifc4x3_rc3::IfcPermeableCoveringProperties::PanelPosition() const { return ::Ifc4x3_rc3::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc3::IfcPermeableCoveringProperties::setPanelPosition(::Ifc4x3_rc3::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcPermeableCoveringProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcPermeableCoveringProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcShapeAspect* Ifc4x3_rc3::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc3::IfcShapeAspect>(true); } void Ifc4x3_rc3::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc4x3_rc3::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -18654,11 +18654,11 @@ Ifc4x3_rc3::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std:: // Function implementations for IfcPermit boost::optional< ::Ifc4x3_rc3::IfcPermitTypeEnum::Value > Ifc4x3_rc3::IfcPermit::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcPermitTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc3::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPermitTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPermitTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPermit::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPermit::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPermit::declaration() const { return *IFC4X3_RC3_IfcPermit_type; } @@ -18668,21 +18668,21 @@ Ifc4x3_rc3::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwner // Function implementations for IfcPerson boost::optional< std::string > Ifc4x3_rc3::IfcPerson::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPerson::FamilyName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPerson::GivenName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcPerson::MiddleNames() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcPerson::PrefixTitles() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcPerson::SuffixTitles() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcActorRole >::ptr > Ifc4x3_rc3::IfcPerson::Roles() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc3::IfcActorRole >(); } -void Ifc4x3_rc3::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAddress >::ptr > Ifc4x3_rc3::IfcPerson::Addresses() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc3::IfcAddress >(); } -void Ifc4x3_rc3::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcPersonAndOrganization::list::ptr Ifc4x3_rc3::IfcPerson::EngagedIn() const { return data_->getInverse(IFC4X3_RC3_IfcPersonAndOrganization_type, 0)->as(); } @@ -18697,7 +18697,7 @@ void Ifc4x3_rc3::IfcPersonAndOrganization::setThePerson(::Ifc4x3_rc3::IfcPerson* ::Ifc4x3_rc3::IfcOrganization* Ifc4x3_rc3::IfcPersonAndOrganization::TheOrganization() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc3::IfcOrganization>(true); } void Ifc4x3_rc3::IfcPersonAndOrganization::setTheOrganization(::Ifc4x3_rc3::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcActorRole >::ptr > Ifc4x3_rc3::IfcPersonAndOrganization::Roles() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc3::IfcActorRole >(); } -void Ifc4x3_rc3::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPersonAndOrganization::declaration() const { return *IFC4X3_RC3_IfcPersonAndOrganization_type; } @@ -18711,9 +18711,9 @@ void Ifc4x3_rc3::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::If std::string Ifc4x3_rc3::IfcPhysicalComplexQuantity::Discrimination() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPhysicalComplexQuantity::Quality() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPhysicalComplexQuantity::Usage() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPhysicalComplexQuantity::declaration() const { return *IFC4X3_RC3_IfcPhysicalComplexQuantity_type; } @@ -18725,7 +18725,7 @@ Ifc4x3_rc3::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v std::string Ifc4x3_rc3::IfcPhysicalQuantity::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc3::IfcPhysicalQuantity::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPhysicalQuantity::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc3::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc3::IfcPhysicalQuantity::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC3_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc3::IfcPhysicalComplexQuantity::list::ptr Ifc4x3_rc3::IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(IFC4X3_RC3_IfcPhysicalComplexQuantity_type, 2)->as(); } @@ -18747,9 +18747,9 @@ Ifc4x3_rc3::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_ // Function implementations for IfcPile boost::optional< ::Ifc4x3_rc3::IfcPileTypeEnum::Value > Ifc4x3_rc3::IfcPile::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcPileTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPileTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPileTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc3::IfcPileConstructionEnum::Value > Ifc4x3_rc3::IfcPile::ConstructionType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcPileConstructionEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_rc3::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPileConstructionEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_rc3::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPileConstructionEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPile::declaration() const { return *IFC4X3_RC3_IfcPile_type; } @@ -18769,7 +18769,7 @@ Ifc4x3_rc3::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcPipeFitting boost::optional< ::Ifc4x3_rc3::IfcPipeFittingTypeEnum::Value > Ifc4x3_rc3::IfcPipeFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPipeFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPipeFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPipeFitting::declaration() const { return *IFC4X3_RC3_IfcPipeFitting_type; } @@ -18789,7 +18789,7 @@ Ifc4x3_rc3::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcPipeSegment boost::optional< ::Ifc4x3_rc3::IfcPipeSegmentTypeEnum::Value > Ifc4x3_rc3::IfcPipeSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPipeSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPipeSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPipeSegment::declaration() const { return *IFC4X3_RC3_IfcPipeSegment_type; } @@ -18873,7 +18873,7 @@ Ifc4x3_rc3::IfcPlant::IfcPlant(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHi // Function implementations for IfcPlate boost::optional< ::Ifc4x3_rc3::IfcPlateTypeEnum::Value > Ifc4x3_rc3::IfcPlate::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcPlateTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPlateTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPlateTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPlate::declaration() const { return *IFC4X3_RC3_IfcPlate_type; } @@ -18911,11 +18911,11 @@ Ifc4x3_rc3::IfcPoint::IfcPoint() : IfcGeometricRepresentationItem((IfcEntityInst ::Ifc4x3_rc3::IfcCurveMeasureSelect* Ifc4x3_rc3::IfcPointByDistanceExpression::DistanceAlong() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc3::IfcCurveMeasureSelect>(true); } void Ifc4x3_rc3::IfcPointByDistanceExpression::setDistanceAlong(::Ifc4x3_rc3::IfcCurveMeasureSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc3::IfcPointByDistanceExpression::OffsetLateral() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcPointByDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcPointByDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcPointByDistanceExpression::OffsetVertical() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcPointByDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcPointByDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcPointByDistanceExpression::OffsetLongitudinal() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcPointByDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcPointByDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc3::IfcCurve* Ifc4x3_rc3::IfcPointByDistanceExpression::BasisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc3::IfcCurve>(true); } void Ifc4x3_rc3::IfcPointByDistanceExpression::setBasisCurve(::Ifc4x3_rc3::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -18975,11 +18975,11 @@ Ifc4x3_rc3::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4x3_ // Function implementations for IfcPolygonalFaceSet boost::optional< bool > Ifc4x3_rc3::IfcPolygonalFaceSet::Closed() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc3::IfcIndexedPolygonalFace >::ptr Ifc4x3_rc3::IfcPolygonalFaceSet::Faces() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc3::IfcIndexedPolygonalFace >(); } void Ifc4x3_rc3::IfcPolygonalFaceSet::setFaces(aggregate_of< ::Ifc4x3_rc3::IfcIndexedPolygonalFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc3::IfcPolygonalFaceSet::PnIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPolygonalFaceSet::declaration() const { return *IFC4X3_RC3_IfcPolygonalFaceSet_type; } @@ -19001,11 +19001,11 @@ Ifc4x3_rc3::IfcPolyline::IfcPolyline(aggregate_of< ::Ifc4x3_rc3::IfcCartesianPoi ::Ifc4x3_rc3::IfcPlacement* Ifc4x3_rc3::IfcPolynomialCurve::Position() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc3::IfcPlacement>(true); } void Ifc4x3_rc3::IfcPolynomialCurve::setPosition(::Ifc4x3_rc3::IfcPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_rc3::IfcPolynomialCurve::CoefficientsX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< double > /*[2:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcPolynomialCurve::setCoefficientsX(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcPolynomialCurve::setCoefficientsX(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_rc3::IfcPolynomialCurve::CoefficientsY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[2:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcPolynomialCurve::setCoefficientsY(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcPolynomialCurve::setCoefficientsY(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_rc3::IfcPolynomialCurve::CoefficientsZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< double > /*[2:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcPolynomialCurve::setCoefficientsZ(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcPolynomialCurve::setCoefficientsZ(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPolynomialCurve::declaration() const { return *IFC4X3_RC3_IfcPolynomialCurve_type; } @@ -19036,19 +19036,19 @@ Ifc4x3_rc3::IfcPositioningElement::IfcPositioningElement(std::string v1_GlobalId // Function implementations for IfcPostalAddress boost::optional< std::string > Ifc4x3_rc3::IfcPostalAddress::InternalLocation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcPostalAddress::AddressLines() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPostalAddress::PostalBox() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPostalAddress::Town() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPostalAddress::Region() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPostalAddress::PostalCode() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPostalAddress::Country() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPostalAddress::declaration() const { return *IFC4X3_RC3_IfcPostalAddress_type; } @@ -19118,11 +19118,11 @@ Ifc4x3_rc3::IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity( std::string Ifc4x3_rc3::IfcPresentationLayerAssignment::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc3::IfcPresentationLayerAssignment::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPresentationLayerAssignment::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of_instance::ptr Ifc4x3_rc3::IfcPresentationLayerAssignment::AssignedItems() const { aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } void Ifc4x3_rc3::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPresentationLayerAssignment::Identifier() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPresentationLayerAssignment::declaration() const { return *IFC4X3_RC3_IfcPresentationLayerAssignment_type; } @@ -19148,7 +19148,7 @@ Ifc4x3_rc3::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::st // Function implementations for IfcPresentationStyle boost::optional< std::string > Ifc4x3_rc3::IfcPresentationStyle::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPresentationStyle::declaration() const { return *IFC4X3_RC3_IfcPresentationStyle_type; } @@ -19158,7 +19158,7 @@ Ifc4x3_rc3::IfcPresentationStyle::IfcPresentationStyle(boost::optional< std::str // Function implementations for IfcProcedure boost::optional< ::Ifc4x3_rc3::IfcProcedureTypeEnum::Value > Ifc4x3_rc3::IfcProcedure::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcProcedureTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc3::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProcedureTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProcedureTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcProcedure::declaration() const { return *IFC4X3_RC3_IfcProcedure_type; } @@ -19178,9 +19178,9 @@ Ifc4x3_rc3::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4x3 // Function implementations for IfcProcess boost::optional< std::string > Ifc4x3_rc3::IfcProcess::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcProcess::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc3::IfcRelSequence::list::ptr Ifc4x3_rc3::IfcProcess::IsPredecessorTo() const { return data_->getInverse(IFC4X3_RC3_IfcRelSequence_type, 4)->as(); } ::Ifc4x3_rc3::IfcRelSequence::list::ptr Ifc4x3_rc3::IfcProcess::IsSuccessorFrom() const { return data_->getInverse(IFC4X3_RC3_IfcRelSequence_type, 5)->as(); } @@ -19218,9 +19218,9 @@ Ifc4x3_rc3::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional // Function implementations for IfcProductRepresentation boost::optional< std::string > Ifc4x3_rc3::IfcProductRepresentation::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcProductRepresentation::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc3::IfcRepresentation >::ptr Ifc4x3_rc3::IfcProductRepresentation::Representations() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc3::IfcRepresentation >(); } void Ifc4x3_rc3::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc4x3_rc3::IfcRepresentation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -19234,7 +19234,7 @@ Ifc4x3_rc3::IfcProductRepresentation::IfcProductRepresentation(boost::optional< ::Ifc4x3_rc3::IfcProfileTypeEnum::Value Ifc4x3_rc3::IfcProfileDef::ProfileType() const { return ::Ifc4x3_rc3::IfcProfileTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc3::IfcProfileDef::setProfileType(::Ifc4x3_rc3::IfcProfileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcProfileTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcProfileDef::ProfileName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc3::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc3::IfcProfileDef::HasExternalReference() const { return data_->getInverse(IFC4X3_RC3_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc3::IfcProfileProperties::list::ptr Ifc4x3_rc3::IfcProfileDef::HasProperties() const { return data_->getInverse(IFC4X3_RC3_IfcProfileProperties_type, 3)->as(); } @@ -19272,11 +19272,11 @@ Ifc4x3_rc3::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcProjectOrder boost::optional< ::Ifc4x3_rc3::IfcProjectOrderTypeEnum::Value > Ifc4x3_rc3::IfcProjectOrder::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc3::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProjectOrderTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProjectOrderTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcProjectOrder::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcProjectOrder::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcProjectOrder::declaration() const { return *IFC4X3_RC3_IfcProjectOrder_type; } @@ -19286,9 +19286,9 @@ Ifc4x3_rc3::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcProjectedCRS boost::optional< std::string > Ifc4x3_rc3::IfcProjectedCRS::MapProjection() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcProjectedCRS::MapZone() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcNamedUnit* Ifc4x3_rc3::IfcProjectedCRS::MapUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcNamedUnit>(true); } void Ifc4x3_rc3::IfcProjectedCRS::setMapUnit(::Ifc4x3_rc3::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -19300,7 +19300,7 @@ Ifc4x3_rc3::IfcProjectedCRS::IfcProjectedCRS(std::string v1_Name, boost::optiona // Function implementations for IfcProjectionElement boost::optional< ::Ifc4x3_rc3::IfcProjectionElementTypeEnum::Value > Ifc4x3_rc3::IfcProjectionElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcProjectionElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProjectionElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProjectionElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcProjectionElement::declaration() const { return *IFC4X3_RC3_IfcProjectionElement_type; } @@ -19312,7 +19312,7 @@ Ifc4x3_rc3::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, std::string Ifc4x3_rc3::IfcProperty::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc3::IfcProperty::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcProperty::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc3::IfcPropertySet::list::ptr Ifc4x3_rc3::IfcProperty::PartOfPset() const { return data_->getInverse(IFC4X3_RC3_IfcPropertySet_type, 4)->as(); } ::Ifc4x3_rc3::IfcPropertyDependencyRelationship::list::ptr Ifc4x3_rc3::IfcProperty::PropertyForDependance() const { return data_->getInverse(IFC4X3_RC3_IfcPropertyDependencyRelationship_type, 2)->as(); } @@ -19367,7 +19367,7 @@ void Ifc4x3_rc3::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc4x ::Ifc4x3_rc3::IfcProperty* Ifc4x3_rc3::IfcPropertyDependencyRelationship::DependantProperty() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcProperty>(true); } void Ifc4x3_rc3::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc4x3_rc3::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPropertyDependencyRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPropertyDependencyRelationship::declaration() const { return *IFC4X3_RC3_IfcPropertyDependencyRelationship_type; } @@ -19377,7 +19377,7 @@ Ifc4x3_rc3::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship // Function implementations for IfcPropertyEnumeratedValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc3::IfcPropertyEnumeratedValue::EnumerationValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcPropertyEnumeration* Ifc4x3_rc3::IfcPropertyEnumeratedValue::EnumerationReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcPropertyEnumeration>(true); } void Ifc4x3_rc3::IfcPropertyEnumeratedValue::setEnumerationReference(::Ifc4x3_rc3::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19403,7 +19403,7 @@ Ifc4x3_rc3::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, // Function implementations for IfcPropertyListValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc3::IfcPropertyListValue::ListValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcUnit* Ifc4x3_rc3::IfcPropertyListValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcUnit>(true); } void Ifc4x3_rc3::IfcPropertyListValue::setUnit(::Ifc4x3_rc3::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19415,7 +19415,7 @@ Ifc4x3_rc3::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boos // Function implementations for IfcPropertyReferenceValue boost::optional< std::string > Ifc4x3_rc3::IfcPropertyReferenceValue::UsageName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcObjectReferenceSelect* Ifc4x3_rc3::IfcPropertyReferenceValue::PropertyReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcObjectReferenceSelect>(true); } void Ifc4x3_rc3::IfcPropertyReferenceValue::setPropertyReference(::Ifc4x3_rc3::IfcObjectReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19448,9 +19448,9 @@ Ifc4x3_rc3::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_Gl // Function implementations for IfcPropertySetTemplate boost::optional< ::Ifc4x3_rc3::IfcPropertySetTemplateTypeEnum::Value > Ifc4x3_rc3::IfcPropertySetTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcPropertySetTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x3_rc3::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc3::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPropertySetTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc3::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPropertySetTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPropertySetTemplate::ApplicableEntity() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } aggregate_of< ::Ifc4x3_rc3::IfcPropertyTemplate >::ptr Ifc4x3_rc3::IfcPropertySetTemplate::HasPropertyTemplates() const { aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc3::IfcPropertyTemplate >(); } void Ifc4x3_rc3::IfcPropertySetTemplate::setHasPropertyTemplates(aggregate_of< ::Ifc4x3_rc3::IfcPropertyTemplate >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(6,attr);} } @@ -19475,17 +19475,17 @@ Ifc4x3_rc3::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, // Function implementations for IfcPropertyTableValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc3::IfcPropertyTableValue::DefiningValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc3::IfcPropertyTableValue::DefinedValues() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcPropertyTableValue::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc3::IfcUnit* Ifc4x3_rc3::IfcPropertyTableValue::DefiningUnit() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc3::IfcUnit>(true); } void Ifc4x3_rc3::IfcPropertyTableValue::setDefiningUnit(::Ifc4x3_rc3::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcUnit* Ifc4x3_rc3::IfcPropertyTableValue::DefinedUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcUnit>(true); } void Ifc4x3_rc3::IfcPropertyTableValue::setDefinedUnit(::Ifc4x3_rc3::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc3::IfcCurveInterpolationEnum::Value > Ifc4x3_rc3::IfcPropertyTableValue::CurveInterpolation() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcCurveInterpolationEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc3::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_rc3::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCurveInterpolationEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_rc3::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcCurveInterpolationEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPropertyTableValue::declaration() const { return *IFC4X3_RC3_IfcPropertyTableValue_type; } @@ -19513,7 +19513,7 @@ Ifc4x3_rc3::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::st // Function implementations for IfcProtectiveDevice boost::optional< ::Ifc4x3_rc3::IfcProtectiveDeviceTypeEnum::Value > Ifc4x3_rc3::IfcProtectiveDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProtectiveDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProtectiveDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcProtectiveDevice::declaration() const { return *IFC4X3_RC3_IfcProtectiveDevice_type; } @@ -19523,7 +19523,7 @@ Ifc4x3_rc3::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, :: // Function implementations for IfcProtectiveDeviceTrippingUnit boost::optional< ::Ifc4x3_rc3::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4x3_rc3::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcProtectiveDeviceTrippingUnit::declaration() const { return *IFC4X3_RC3_IfcProtectiveDeviceTrippingUnit_type; } @@ -19555,7 +19555,7 @@ Ifc4x3_rc3::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_Glob ::Ifc4x3_rc3::IfcObjectTypeEnum::Value Ifc4x3_rc3::IfcProxy::ProxyType() const { return ::Ifc4x3_rc3::IfcObjectTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc3::IfcProxy::setProxyType(::Ifc4x3_rc3::IfcObjectTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcObjectTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcProxy::Tag() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcProxy::declaration() const { return *IFC4X3_RC3_IfcProxy_type; } @@ -19565,7 +19565,7 @@ Ifc4x3_rc3::IfcProxy::IfcProxy(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHi // Function implementations for IfcPump boost::optional< ::Ifc4x3_rc3::IfcPumpTypeEnum::Value > Ifc4x3_rc3::IfcPump::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcPumpTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPumpTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcPumpTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcPump::declaration() const { return *IFC4X3_RC3_IfcPump_type; } @@ -19587,7 +19587,7 @@ Ifc4x3_rc3::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO double Ifc4x3_rc3::IfcQuantityArea::AreaValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcQuantityArea::setAreaValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcQuantityArea::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcQuantityArea::declaration() const { return *IFC4X3_RC3_IfcQuantityArea_type; } @@ -19599,7 +19599,7 @@ Ifc4x3_rc3::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optiona double Ifc4x3_rc3::IfcQuantityCount::CountValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcQuantityCount::setCountValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcQuantityCount::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcQuantityCount::declaration() const { return *IFC4X3_RC3_IfcQuantityCount_type; } @@ -19611,7 +19611,7 @@ Ifc4x3_rc3::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optio double Ifc4x3_rc3::IfcQuantityLength::LengthValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcQuantityLength::setLengthValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcQuantityLength::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcQuantityLength::declaration() const { return *IFC4X3_RC3_IfcQuantityLength_type; } @@ -19631,7 +19631,7 @@ Ifc4x3_rc3::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4x3_rc3 double Ifc4x3_rc3::IfcQuantityTime::TimeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcQuantityTime::setTimeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcQuantityTime::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcQuantityTime::declaration() const { return *IFC4X3_RC3_IfcQuantityTime_type; } @@ -19643,7 +19643,7 @@ Ifc4x3_rc3::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optiona double Ifc4x3_rc3::IfcQuantityVolume::VolumeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcQuantityVolume::setVolumeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcQuantityVolume::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcQuantityVolume::declaration() const { return *IFC4X3_RC3_IfcQuantityVolume_type; } @@ -19655,7 +19655,7 @@ Ifc4x3_rc3::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::opt double Ifc4x3_rc3::IfcQuantityWeight::WeightValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcQuantityWeight::setWeightValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcQuantityWeight::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcQuantityWeight::declaration() const { return *IFC4X3_RC3_IfcQuantityWeight_type; } @@ -19665,7 +19665,7 @@ Ifc4x3_rc3::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::opt // Function implementations for IfcRail boost::optional< ::Ifc4x3_rc3::IfcRailTypeEnum::Value > Ifc4x3_rc3::IfcRail::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcRailTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRailTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRailTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRailTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRailTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRail::declaration() const { return *IFC4X3_RC3_IfcRail_type; } @@ -19685,7 +19685,7 @@ Ifc4x3_rc3::IfcRailType::IfcRailType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcRailing boost::optional< ::Ifc4x3_rc3::IfcRailingTypeEnum::Value > Ifc4x3_rc3::IfcRailing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcRailingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRailingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRailingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRailing::declaration() const { return *IFC4X3_RC3_IfcRailing_type; } @@ -19705,7 +19705,7 @@ Ifc4x3_rc3::IfcRailingType::IfcRailingType(std::string v1_GlobalId, ::Ifc4x3_rc3 // Function implementations for IfcRailway boost::optional< ::Ifc4x3_rc3::IfcRailwayTypeEnum::Value > Ifc4x3_rc3::IfcRailway::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcRailwayTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcRailway::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRailwayTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRailwayTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcRailway::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRailwayTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRailwayTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRailway::declaration() const { return *IFC4X3_RC3_IfcRailway_type; } @@ -19715,7 +19715,7 @@ Ifc4x3_rc3::IfcRailway::IfcRailway(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwn // Function implementations for IfcRamp boost::optional< ::Ifc4x3_rc3::IfcRampTypeEnum::Value > Ifc4x3_rc3::IfcRamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcRampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRamp::declaration() const { return *IFC4X3_RC3_IfcRamp_type; } @@ -19725,7 +19725,7 @@ Ifc4x3_rc3::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHist // Function implementations for IfcRampFlight boost::optional< ::Ifc4x3_rc3::IfcRampFlightTypeEnum::Value > Ifc4x3_rc3::IfcRampFlight::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcRampFlightTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRampFlightTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRampFlightTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRampFlight::declaration() const { return *IFC4X3_RC3_IfcRampFlight_type; } @@ -19777,9 +19777,9 @@ Ifc4x3_rc3::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKno double Ifc4x3_rc3::IfcRectangleHollowProfileDef::WallThickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x3_rc3::IfcRectangleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRectangleHollowProfileDef::declaration() const { return *IFC4X3_RC3_IfcRectangleHollowProfileDef_type; } @@ -19839,19 +19839,19 @@ Ifc4x3_rc3::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4x3_ ::Ifc4x3_rc3::IfcRecurrenceTypeEnum::Value Ifc4x3_rc3::IfcRecurrencePattern::RecurrenceType() const { return ::Ifc4x3_rc3::IfcRecurrenceTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc3::IfcRecurrencePattern::setRecurrenceType(::Ifc4x3_rc3::IfcRecurrenceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcRecurrenceTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc3::IfcRecurrencePattern::DayComponent() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc3::IfcRecurrencePattern::WeekdayComponent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc3::IfcRecurrencePattern::MonthComponent() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc3::IfcRecurrencePattern::Position() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< int > Ifc4x3_rc3::IfcRecurrencePattern::Interval() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } int v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x3_rc3::IfcRecurrencePattern::Occurrences() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcTimePeriod >::ptr > Ifc4x3_rc3::IfcRecurrencePattern::TimePeriods() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc3::IfcTimePeriod >(); } -void Ifc4x3_rc3::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRecurrencePattern::declaration() const { return *IFC4X3_RC3_IfcRecurrencePattern_type; } @@ -19861,13 +19861,13 @@ Ifc4x3_rc3::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4x3_rc3::IfcRecurren // Function implementations for IfcReference boost::optional< std::string > Ifc4x3_rc3::IfcReference::TypeIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcReference::AttributeIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcReference::InstanceName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc3::IfcReference::ListPositions() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc3::IfcReference* Ifc4x3_rc3::IfcReference::InnerReference() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc3::IfcReference>(true); } void Ifc4x3_rc3::IfcReference::setInnerReference(::Ifc4x3_rc3::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -19879,9 +19879,9 @@ Ifc4x3_rc3::IfcReference::IfcReference(boost::optional< std::string > v1_TypeIde // Function implementations for IfcReferent boost::optional< ::Ifc4x3_rc3::IfcReferentTypeEnum::Value > Ifc4x3_rc3::IfcReferent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcReferentTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc3::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReferentTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReferentTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReferent::RestartDistance() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcReferent::declaration() const { return *IFC4X3_RC3_IfcReferent_type; } @@ -19903,7 +19903,7 @@ Ifc4x3_rc3::IfcRegularTimeSeries::IfcRegularTimeSeries(std::string v1_Name, boos // Function implementations for IfcReinforcedSoil boost::optional< ::Ifc4x3_rc3::IfcReinforcedSoilTypeEnum::Value > Ifc4x3_rc3::IfcReinforcedSoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcReinforcedSoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcReinforcedSoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcedSoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcReinforcedSoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcedSoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcReinforcedSoil::declaration() const { return *IFC4X3_RC3_IfcReinforcedSoil_type; } @@ -19917,13 +19917,13 @@ void Ifc4x3_rc3::IfcReinforcementBarProperties::setTotalCrossSectionArea(double std::string Ifc4x3_rc3::IfcReinforcementBarProperties::SteelGrade() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcReinforcementBarProperties::setSteelGrade(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc3::IfcReinforcementBarProperties::BarSurface() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc3::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcementBarProperties::EffectiveDepth() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcementBarProperties::NominalBarDiameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcementBarProperties::BarCount() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcReinforcementBarProperties::declaration() const { return *IFC4X3_RC3_IfcReinforcementBarProperties_type; } @@ -19933,7 +19933,7 @@ Ifc4x3_rc3::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double // Function implementations for IfcReinforcementDefinitionProperties boost::optional< std::string > Ifc4x3_rc3::IfcReinforcementDefinitionProperties::DefinitionType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x3_rc3::IfcSectionReinforcementProperties >::ptr Ifc4x3_rc3::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc3::IfcSectionReinforcementProperties >(); } void Ifc4x3_rc3::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc4x3_rc3::IfcSectionReinforcementProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -19945,15 +19945,15 @@ Ifc4x3_rc3::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProp // Function implementations for IfcReinforcingBar boost::optional< double > Ifc4x3_rc3::IfcReinforcingBar::NominalDiameter() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingBar::CrossSectionArea() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingBar::BarLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarTypeEnum::Value > Ifc4x3_rc3::IfcReinforcingBar::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc3::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcingBarTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcingBarTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc3::IfcReinforcingBar::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc3::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcReinforcingBar::declaration() const { return *IFC4X3_RC3_IfcReinforcingBar_type; } @@ -19965,17 +19965,17 @@ Ifc4x3_rc3::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4 ::Ifc4x3_rc3::IfcReinforcingBarTypeEnum::Value Ifc4x3_rc3::IfcReinforcingBarType::PredefinedType() const { return ::Ifc4x3_rc3::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc3::IfcReinforcingBarType::setPredefinedType(::Ifc4x3_rc3::IfcReinforcingBarTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcReinforcingBarTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingBarType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingBarType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingBarType::BarLength() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc3::IfcReinforcingBarType::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc3::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcReinforcingBarType::BendingShapeCode() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc3::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc3::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc3::IfcReinforcingBarType::BendingParameters() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(15); return v; } -void Ifc4x3_rc3::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc3::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcReinforcingBarType::declaration() const { return *IFC4X3_RC3_IfcReinforcingBarType_type; } @@ -19985,7 +19985,7 @@ Ifc4x3_rc3::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId // Function implementations for IfcReinforcingElement boost::optional< std::string > Ifc4x3_rc3::IfcReinforcingElement::SteelGrade() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcReinforcingElement::declaration() const { return *IFC4X3_RC3_IfcReinforcingElement_type; } @@ -20003,23 +20003,23 @@ Ifc4x3_rc3::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_ // Function implementations for IfcReinforcingMesh boost::optional< double > Ifc4x3_rc3::IfcReinforcingMesh::MeshLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMesh::MeshWidth() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc3::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc3::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc3::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc3::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc3::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMesh::TransverseBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc3::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc3::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< ::Ifc4x3_rc3::IfcReinforcingMeshTypeEnum::Value > Ifc4x3_rc3::IfcReinforcingMesh::PredefinedType() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(17)); } -void Ifc4x3_rc3::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcingMeshTypeEnum::ToString(*v)));data_->setArgument(17,attr);} } +void Ifc4x3_rc3::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcReinforcingMeshTypeEnum::ToString(*v)));}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcReinforcingMesh::declaration() const { return *IFC4X3_RC3_IfcReinforcingMesh_type; } @@ -20031,25 +20031,25 @@ Ifc4x3_rc3::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::If ::Ifc4x3_rc3::IfcReinforcingMeshTypeEnum::Value Ifc4x3_rc3::IfcReinforcingMeshType::PredefinedType() const { return ::Ifc4x3_rc3::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc3::IfcReinforcingMeshType::setPredefinedType(::Ifc4x3_rc3::IfcReinforcingMeshTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcReinforcingMeshTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMeshType::MeshLength() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMeshType::MeshWidth() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc3::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc3::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc3::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc3::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc3::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc3::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc3::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x3_rc3::IfcReinforcingMeshType::TransverseBarSpacing() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x3_rc3::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc3::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcReinforcingMeshType::BendingShapeCode() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x3_rc3::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x3_rc3::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc3::IfcReinforcingMeshType::BendingParameters() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(19); return v; } -void Ifc4x3_rc3::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x3_rc3::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcReinforcingMeshType::declaration() const { return *IFC4X3_RC3_IfcReinforcingMeshType_type; } @@ -20073,7 +20073,7 @@ Ifc4x3_rc3::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4x3 aggregate_of< ::Ifc4x3_rc3::IfcObjectDefinition >::ptr Ifc4x3_rc3::IfcRelAssigns::RelatedObjects() const { aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc3::IfcObjectDefinition >(); } void Ifc4x3_rc3::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc4x3_rc3::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} } boost::optional< ::Ifc4x3_rc3::IfcObjectTypeEnum::Value > Ifc4x3_rc3::IfcRelAssigns::RelatedObjectsType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcObjectTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc3::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x3_rc3::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcObjectTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x3_rc3::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcObjectTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRelAssigns::declaration() const { return *IFC4X3_RC3_IfcRelAssigns_type; } @@ -20187,7 +20187,7 @@ Ifc4x3_rc3::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std:: // Function implementations for IfcRelAssociatesConstraint boost::optional< std::string > Ifc4x3_rc3::IfcRelAssociatesConstraint::Intent() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcConstraint* Ifc4x3_rc3::IfcRelAssociatesConstraint::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcConstraint>(true); } void Ifc4x3_rc3::IfcRelAssociatesConstraint::setRelatingConstraint(::Ifc4x3_rc3::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -20323,7 +20323,7 @@ void Ifc4x3_rc3::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc4x3_rc ::Ifc4x3_rc3::IfcStructuralConnectionCondition* Ifc4x3_rc3::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc3::IfcStructuralConnectionCondition>(true); } void Ifc4x3_rc3::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc4x3_rc3::IfcStructuralConnectionCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcRelConnectsStructuralMember::SupportedLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcAxis2Placement3D* Ifc4x3_rc3::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc3::IfcAxis2Placement3D>(true); } void Ifc4x3_rc3::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc4x3_rc3::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -20347,7 +20347,7 @@ Ifc4x3_rc3::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std:: aggregate_of< ::Ifc4x3_rc3::IfcElement >::ptr Ifc4x3_rc3::IfcRelConnectsWithRealizingElements::RealizingElements() const { aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc3::IfcElement >(); } void Ifc4x3_rc3::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc4x3_rc3::IfcElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRelConnectsWithRealizingElements::declaration() const { return *IFC4X3_RC3_IfcRelConnectsWithRealizingElements_type; } @@ -20499,7 +20499,7 @@ void Ifc4x3_rc3::IfcRelInterferesElements::setRelatedElement(::Ifc4x3_rc3::IfcIn ::Ifc4x3_rc3::IfcConnectionGeometry* Ifc4x3_rc3::IfcRelInterferesElements::InterferenceGeometry() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcConnectionGeometry>(true); } void Ifc4x3_rc3::IfcRelInterferesElements::setInterferenceGeometry(::Ifc4x3_rc3::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcRelInterferesElements::InterferenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::logic::tribool Ifc4x3_rc3::IfcRelInterferesElements::ImpliedOrder() const { boost::logic::tribool v = *data_->getArgument(8); return v; } void Ifc4x3_rc3::IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -20565,9 +20565,9 @@ void Ifc4x3_rc3::IfcRelSequence::setRelatedProcess(::Ifc4x3_rc3::IfcProcess* v) ::Ifc4x3_rc3::IfcLagTime* Ifc4x3_rc3::IfcRelSequence::TimeLag() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcLagTime>(true); } void Ifc4x3_rc3::IfcRelSequence::setTimeLag(::Ifc4x3_rc3::IfcLagTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc3::IfcSequenceEnum::Value > Ifc4x3_rc3::IfcRelSequence::SequenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSequenceEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc3::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_rc3::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSequenceEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_rc3::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSequenceEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcRelSequence::UserDefinedSequenceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRelSequence::declaration() const { return *IFC4X3_RC3_IfcRelSequence_type; } @@ -20661,9 +20661,9 @@ Ifc4x3_rc3::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCu ::Ifc4x3_rc3::IfcRepresentationContext* Ifc4x3_rc3::IfcRepresentation::ContextOfItems() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc3::IfcRepresentationContext>(true); } void Ifc4x3_rc3::IfcRepresentation::setContextOfItems(::Ifc4x3_rc3::IfcRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcRepresentation::RepresentationIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcRepresentation::RepresentationType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } aggregate_of< ::Ifc4x3_rc3::IfcRepresentationItem >::ptr Ifc4x3_rc3::IfcRepresentation::Items() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc3::IfcRepresentationItem >(); } void Ifc4x3_rc3::IfcRepresentation::setItems(aggregate_of< ::Ifc4x3_rc3::IfcRepresentationItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } @@ -20678,9 +20678,9 @@ Ifc4x3_rc3::IfcRepresentation::IfcRepresentation(::Ifc4x3_rc3::IfcRepresentation // Function implementations for IfcRepresentationContext boost::optional< std::string > Ifc4x3_rc3::IfcRepresentationContext::ContextIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcRepresentationContext::ContextType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc3::IfcRepresentation::list::ptr Ifc4x3_rc3::IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(IFC4X3_RC3_IfcRepresentation_type, 0)->as(); } @@ -20715,9 +20715,9 @@ Ifc4x3_rc3::IfcRepresentationMap::IfcRepresentationMap(::Ifc4x3_rc3::IfcAxis2Pla // Function implementations for IfcResource boost::optional< std::string > Ifc4x3_rc3::IfcResource::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResource::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc3::IfcRelAssignsToResource::list::ptr Ifc4x3_rc3::IfcResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC3_IfcRelAssignsToResource_type, 6)->as(); } @@ -20752,9 +20752,9 @@ Ifc4x3_rc3::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship // Function implementations for IfcResourceLevelRelationship boost::optional< std::string > Ifc4x3_rc3::IfcResourceLevelRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResourceLevelRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcResourceLevelRelationship::declaration() const { return *IFC4X3_RC3_IfcResourceLevelRelationship_type; } @@ -20764,35 +20764,35 @@ Ifc4x3_rc3::IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::op // Function implementations for IfcResourceTime boost::optional< std::string > Ifc4x3_rc3::IfcResourceTime::ScheduleWork() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcResourceTime::ScheduleUsage() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResourceTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResourceTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResourceTime::ScheduleContour() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResourceTime::LevelingDelay() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< bool > Ifc4x3_rc3::IfcResourceTime::IsOverAllocated() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResourceTime::StatusTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResourceTime::ActualWork() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc3::IfcResourceTime::ActualUsage() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResourceTime::ActualStart() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x3_rc3::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResourceTime::ActualFinish() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc3::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcResourceTime::RemainingWork() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x3_rc3::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc3::IfcResourceTime::RemainingUsage() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc3::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x3_rc3::IfcResourceTime::Completion() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x3_rc3::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc3::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcResourceTime::declaration() const { return *IFC4X3_RC3_IfcResourceTime_type; } @@ -20848,7 +20848,7 @@ Ifc4x3_rc3::IfcRightCircularCylinder::IfcRightCircularCylinder(::Ifc4x3_rc3::Ifc // Function implementations for IfcRoad boost::optional< ::Ifc4x3_rc3::IfcRoadTypeEnum::Value > Ifc4x3_rc3::IfcRoad::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcRoadTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcRoad::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRoadTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRoadTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcRoad::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRoadTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRoadTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRoad::declaration() const { return *IFC4X3_RC3_IfcRoad_type; } @@ -20858,7 +20858,7 @@ Ifc4x3_rc3::IfcRoad::IfcRoad(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHist // Function implementations for IfcRoof boost::optional< ::Ifc4x3_rc3::IfcRoofTypeEnum::Value > Ifc4x3_rc3::IfcRoof::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcRoofTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRoofTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcRoofTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRoof::declaration() const { return *IFC4X3_RC3_IfcRoof_type; } @@ -20882,9 +20882,9 @@ void Ifc4x3_rc3::IfcRoot::setGlobalId(std::string v) { {IfcWrite::IfcWriteArgume ::Ifc4x3_rc3::IfcOwnerHistory* Ifc4x3_rc3::IfcRoot::OwnerHistory() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc3::IfcOwnerHistory>(true); } void Ifc4x3_rc3::IfcRoot::setOwnerHistory(::Ifc4x3_rc3::IfcOwnerHistory* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcRoot::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcRoot::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcRoot::declaration() const { return *IFC4X3_RC3_IfcRoot_type; } @@ -20904,7 +20904,7 @@ Ifc4x3_rc3::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4x // Function implementations for IfcSIUnit boost::optional< ::Ifc4x3_rc3::IfcSIPrefix::Value > Ifc4x3_rc3::IfcSIUnit::Prefix() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSIPrefix::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc3::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_rc3::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSIPrefix::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_rc3::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSIPrefix::ToString(*v)));}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcSIUnitName::Value Ifc4x3_rc3::IfcSIUnit::Name() const { return ::Ifc4x3_rc3::IfcSIUnitName::FromString(*data_->getArgument(3)); } void Ifc4x3_rc3::IfcSIUnit::setName(::Ifc4x3_rc3::IfcSIUnitName::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcSIUnitName::ToString(v)));data_->setArgument(3,attr);} } @@ -20916,7 +20916,7 @@ Ifc4x3_rc3::IfcSIUnit::IfcSIUnit(::Ifc4x3_rc3::IfcUnitEnum::Value v2_UnitType, b // Function implementations for IfcSanitaryTerminal boost::optional< ::Ifc4x3_rc3::IfcSanitaryTerminalTypeEnum::Value > Ifc4x3_rc3::IfcSanitaryTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSanitaryTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSanitaryTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSanitaryTerminal::declaration() const { return *IFC4X3_RC3_IfcSanitaryTerminal_type; } @@ -20936,11 +20936,11 @@ Ifc4x3_rc3::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_Glob // Function implementations for IfcSchedulingTime boost::optional< std::string > Ifc4x3_rc3::IfcSchedulingTime::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< ::Ifc4x3_rc3::IfcDataOriginEnum::Value > Ifc4x3_rc3::IfcSchedulingTime::DataOrigin() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcDataOriginEnum::FromString(*data_->getArgument(1)); } -void Ifc4x3_rc3::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_rc3::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDataOriginEnum::ToString(*v)));data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_rc3::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcDataOriginEnum::ToString(*v)));}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcSchedulingTime::UserDefinedDataOrigin() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSchedulingTime::declaration() const { return *IFC4X3_RC3_IfcSchedulingTime_type; } @@ -20960,9 +20960,9 @@ Ifc4x3_rc3::IfcSeamCurve::IfcSeamCurve(::Ifc4x3_rc3::IfcCurve* v1_Curve3D, aggre double Ifc4x3_rc3::IfcSecondOrderPolynomialSpiral::QuadraticTerm() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcSecondOrderPolynomialSpiral::setQuadraticTerm(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSecondOrderPolynomialSpiral::LinearTerm() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcSecondOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcSecondOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSecondOrderPolynomialSpiral::ConstantTerm() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcSecondOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcSecondOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSecondOrderPolynomialSpiral::declaration() const { return *IFC4X3_RC3_IfcSecondOrderPolynomialSpiral_type; } @@ -20990,7 +20990,7 @@ void Ifc4x3_rc3::IfcSectionReinforcementProperties::setLongitudinalStartPosition double Ifc4x3_rc3::IfcSectionReinforcementProperties::LongitudinalEndPosition() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSectionReinforcementProperties::TransversePosition() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcReinforcingBarRoleEnum::Value Ifc4x3_rc3::IfcSectionReinforcementProperties::ReinforcementRole() const { return ::Ifc4x3_rc3::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); } void Ifc4x3_rc3::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc4x3_rc3::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(3,attr);} } ::Ifc4x3_rc3::IfcSectionProperties* Ifc4x3_rc3::IfcSectionReinforcementProperties::SectionDefinition() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc3::IfcSectionProperties>(true); } @@ -21083,7 +21083,7 @@ Ifc4x3_rc3::IfcSegmentedReferenceCurve::IfcSegmentedReferenceCurve(aggregate_of< // Function implementations for IfcSensor boost::optional< ::Ifc4x3_rc3::IfcSensorTypeEnum::Value > Ifc4x3_rc3::IfcSensor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSensorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSensorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSensorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSensor::declaration() const { return *IFC4X3_RC3_IfcSensor_type; } @@ -21103,7 +21103,7 @@ Ifc4x3_rc3::IfcSensorType::IfcSensorType(std::string v1_GlobalId, ::Ifc4x3_rc3:: // Function implementations for IfcShadingDevice boost::optional< ::Ifc4x3_rc3::IfcShadingDeviceTypeEnum::Value > Ifc4x3_rc3::IfcShadingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcShadingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcShadingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcShadingDevice::declaration() const { return *IFC4X3_RC3_IfcShadingDevice_type; } @@ -21125,9 +21125,9 @@ Ifc4x3_rc3::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, aggregate_of< ::Ifc4x3_rc3::IfcShapeModel >::ptr Ifc4x3_rc3::IfcShapeAspect::ShapeRepresentations() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc3::IfcShapeModel >(); } void Ifc4x3_rc3::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc4x3_rc3::IfcShapeModel >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcShapeAspect::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcShapeAspect::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::logic::tribool Ifc4x3_rc3::IfcShapeAspect::ProductDefinitional() const { boost::logic::tribool v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc3::IfcProductRepresentationSelect* Ifc4x3_rc3::IfcShapeAspect::PartOfProductDefinitionShape() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc3::IfcProductRepresentationSelect>(true); } @@ -21169,7 +21169,7 @@ Ifc4x3_rc3::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(aggregate_of_in // Function implementations for IfcSign boost::optional< ::Ifc4x3_rc3::IfcSignTypeEnum::Value > Ifc4x3_rc3::IfcSign::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSignTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSignTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSignTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSignTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSignTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSign::declaration() const { return *IFC4X3_RC3_IfcSign_type; } @@ -21189,7 +21189,7 @@ Ifc4x3_rc3::IfcSignType::IfcSignType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcSignal boost::optional< ::Ifc4x3_rc3::IfcSignalTypeEnum::Value > Ifc4x3_rc3::IfcSignal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSignalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSignalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSignalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSignalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSignalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSignal::declaration() const { return *IFC4X3_RC3_IfcSignal_type; } @@ -21217,11 +21217,11 @@ Ifc4x3_rc3::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::opt // Function implementations for IfcSimplePropertyTemplate boost::optional< ::Ifc4x3_rc3::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4x3_rc3::IfcSimplePropertyTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSimplePropertyTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x3_rc3::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc3::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc3::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc3::IfcPropertyEnumeration* Ifc4x3_rc3::IfcSimplePropertyTemplate::Enumerators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc3::IfcPropertyEnumeration>(true); } void Ifc4x3_rc3::IfcSimplePropertyTemplate::setEnumerators(::Ifc4x3_rc3::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcUnit* Ifc4x3_rc3::IfcSimplePropertyTemplate::PrimaryUnit() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc3::IfcUnit>(true); } @@ -21229,9 +21229,9 @@ void Ifc4x3_rc3::IfcSimplePropertyTemplate::setPrimaryUnit(::Ifc4x3_rc3::IfcUnit ::Ifc4x3_rc3::IfcUnit* Ifc4x3_rc3::IfcSimplePropertyTemplate::SecondaryUnit() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc3::IfcUnit>(true); } void Ifc4x3_rc3::IfcSimplePropertyTemplate::setSecondaryUnit(::Ifc4x3_rc3::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcSimplePropertyTemplate::Expression() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc3::IfcStateEnum::Value > Ifc4x3_rc3::IfcSimplePropertyTemplate::AccessState() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcStateEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc3::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_rc3::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcStateEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_rc3::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcStateEnum::ToString(*v)));}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSimplePropertyTemplate::declaration() const { return *IFC4X3_RC3_IfcSimplePropertyTemplate_type; } @@ -21253,13 +21253,13 @@ Ifc4x3_rc3::IfcSine::IfcSine(::Ifc4x3_rc3::IfcAxis2Placement* v1_Position, doubl // Function implementations for IfcSite boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc3::IfcSite::RefLatitude() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc3::IfcSite::RefLongitude() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSite::RefElevation() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcSite::LandTitleNumber() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x3_rc3::IfcPostalAddress* Ifc4x3_rc3::IfcSite::SiteAddress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc3::IfcPostalAddress>(true); } void Ifc4x3_rc3::IfcSite::setSiteAddress(::Ifc4x3_rc3::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -21271,7 +21271,7 @@ Ifc4x3_rc3::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHist // Function implementations for IfcSlab boost::optional< ::Ifc4x3_rc3::IfcSlabTypeEnum::Value > Ifc4x3_rc3::IfcSlab::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSlabTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSlabTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSlabTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSlab::declaration() const { return *IFC4X3_RC3_IfcSlab_type; } @@ -21307,11 +21307,11 @@ Ifc4x3_rc3::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcSlippageConnectionCondition boost::optional< double > Ifc4x3_rc3::IfcSlippageConnectionCondition::SlippageX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSlippageConnectionCondition::SlippageY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSlippageConnectionCondition::SlippageZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSlippageConnectionCondition::declaration() const { return *IFC4X3_RC3_IfcSlippageConnectionCondition_type; } @@ -21321,7 +21321,7 @@ Ifc4x3_rc3::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost // Function implementations for IfcSolarDevice boost::optional< ::Ifc4x3_rc3::IfcSolarDeviceTypeEnum::Value > Ifc4x3_rc3::IfcSolarDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSolarDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSolarDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSolarDevice::declaration() const { return *IFC4X3_RC3_IfcSolarDevice_type; } @@ -21357,9 +21357,9 @@ Ifc4x3_rc3::IfcSolidStratum::IfcSolidStratum(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcSpace boost::optional< ::Ifc4x3_rc3::IfcSpaceTypeEnum::Value > Ifc4x3_rc3::IfcSpace::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSpaceTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSpaceTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSpace::ElevationWithFlooring() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc3::IfcRelCoversSpaces::list::ptr Ifc4x3_rc3::IfcSpace::HasCoverings() const { return data_->getInverse(IFC4X3_RC3_IfcRelCoversSpaces_type, 4)->as(); } ::Ifc4x3_rc3::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc3::IfcSpace::BoundedBy() const { return data_->getInverse(IFC4X3_RC3_IfcRelSpaceBoundary_type, 4)->as(); } @@ -21371,7 +21371,7 @@ Ifc4x3_rc3::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHi // Function implementations for IfcSpaceHeater boost::optional< ::Ifc4x3_rc3::IfcSpaceHeaterTypeEnum::Value > Ifc4x3_rc3::IfcSpaceHeater::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSpaceHeaterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSpaceHeaterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSpaceHeater::declaration() const { return *IFC4X3_RC3_IfcSpaceHeater_type; } @@ -21393,7 +21393,7 @@ Ifc4x3_rc3::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::If ::Ifc4x3_rc3::IfcSpaceTypeEnum::Value Ifc4x3_rc3::IfcSpaceType::PredefinedType() const { return ::Ifc4x3_rc3::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc3::IfcSpaceType::setPredefinedType(::Ifc4x3_rc3::IfcSpaceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcSpaceTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcSpaceType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSpaceType::declaration() const { return *IFC4X3_RC3_IfcSpaceType_type; } @@ -21403,7 +21403,7 @@ Ifc4x3_rc3::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4x3_rc3::If // Function implementations for IfcSpatialElement boost::optional< std::string > Ifc4x3_rc3::IfcSpatialElement::LongName() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc3::IfcSpatialElement::ContainsElements() const { return data_->getInverse(IFC4X3_RC3_IfcRelContainedInSpatialStructure_type, 5)->as(); } ::Ifc4x3_rc3::IfcRelServicesBuildings::list::ptr Ifc4x3_rc3::IfcSpatialElement::ServicedBySystems() const { return data_->getInverse(IFC4X3_RC3_IfcRelServicesBuildings_type, 5)->as(); } @@ -21416,7 +21416,7 @@ Ifc4x3_rc3::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcSpatialElementType boost::optional< std::string > Ifc4x3_rc3::IfcSpatialElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSpatialElementType::declaration() const { return *IFC4X3_RC3_IfcSpatialElementType_type; } @@ -21426,7 +21426,7 @@ Ifc4x3_rc3::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId // Function implementations for IfcSpatialStructureElement boost::optional< ::Ifc4x3_rc3::IfcElementCompositionEnum::Value > Ifc4x3_rc3::IfcSpatialStructureElement::CompositionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_rc3::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElementCompositionEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_rc3::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcElementCompositionEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSpatialStructureElement::declaration() const { return *IFC4X3_RC3_IfcSpatialStructureElement_type; } @@ -21444,7 +21444,7 @@ Ifc4x3_rc3::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std:: // Function implementations for IfcSpatialZone boost::optional< ::Ifc4x3_rc3::IfcSpatialZoneTypeEnum::Value > Ifc4x3_rc3::IfcSpatialZone::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSpatialZoneTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSpatialZoneTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSpatialZone::declaration() const { return *IFC4X3_RC3_IfcSpatialZone_type; } @@ -21456,7 +21456,7 @@ Ifc4x3_rc3::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4x3_rc3 ::Ifc4x3_rc3::IfcSpatialZoneTypeEnum::Value Ifc4x3_rc3::IfcSpatialZoneType::PredefinedType() const { return ::Ifc4x3_rc3::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc3::IfcSpatialZoneType::setPredefinedType(::Ifc4x3_rc3::IfcSpatialZoneTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcSpatialZoneTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcSpatialZoneType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSpatialZoneType::declaration() const { return *IFC4X3_RC3_IfcSpatialZoneType_type; } @@ -21496,7 +21496,7 @@ Ifc4x3_rc3::IfcSpiral::IfcSpiral(::Ifc4x3_rc3::IfcAxis2Placement* v1_Position) : // Function implementations for IfcStackTerminal boost::optional< ::Ifc4x3_rc3::IfcStackTerminalTypeEnum::Value > Ifc4x3_rc3::IfcStackTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcStackTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcStackTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStackTerminal::declaration() const { return *IFC4X3_RC3_IfcStackTerminal_type; } @@ -21516,7 +21516,7 @@ Ifc4x3_rc3::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, // Function implementations for IfcStair boost::optional< ::Ifc4x3_rc3::IfcStairTypeEnum::Value > Ifc4x3_rc3::IfcStair::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcStairTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcStairTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcStairTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStair::declaration() const { return *IFC4X3_RC3_IfcStair_type; } @@ -21526,15 +21526,15 @@ Ifc4x3_rc3::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHi // Function implementations for IfcStairFlight boost::optional< int > Ifc4x3_rc3::IfcStairFlight::NumberOfRisers() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } int v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< int > Ifc4x3_rc3::IfcStairFlight::NumberOfTreads() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStairFlight::RiserHeight() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStairFlight::TreadLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc3::IfcStairFlightTypeEnum::Value > Ifc4x3_rc3::IfcStairFlight::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcStairFlightTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc3::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcStairFlightTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcStairFlightTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStairFlight::declaration() const { return *IFC4X3_RC3_IfcStairFlight_type; } @@ -21564,7 +21564,7 @@ Ifc4x3_rc3::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4x3_rc3::If // Function implementations for IfcStructuralAction boost::optional< bool > Ifc4x3_rc3::IfcStructuralAction::DestabilizingLoad() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralAction::declaration() const { return *IFC4X3_RC3_IfcStructuralAction_type; } @@ -21591,9 +21591,9 @@ void Ifc4x3_rc3::IfcStructuralAnalysisModel::setPredefinedType(::Ifc4x3_rc3::Ifc ::Ifc4x3_rc3::IfcAxis2Placement3D* Ifc4x3_rc3::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcAxis2Placement3D>(true); } void Ifc4x3_rc3::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc4x3_rc3::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcStructuralLoadGroup >::ptr > Ifc4x3_rc3::IfcStructuralAnalysisModel::LoadedBy() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc3::IfcStructuralLoadGroup >(); } -void Ifc4x3_rc3::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcStructuralResultGroup >::ptr > Ifc4x3_rc3::IfcStructuralAnalysisModel::HasResults() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc3::IfcStructuralResultGroup >(); } -void Ifc4x3_rc3::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcObjectPlacement* Ifc4x3_rc3::IfcStructuralAnalysisModel::SharedPlacement() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc3::IfcObjectPlacement>(true); } void Ifc4x3_rc3::IfcStructuralAnalysisModel::setSharedPlacement(::Ifc4x3_rc3::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -21616,7 +21616,7 @@ Ifc4x3_rc3::IfcStructuralConnection::IfcStructuralConnection(std::string v1_Glob // Function implementations for IfcStructuralConnectionCondition boost::optional< std::string > Ifc4x3_rc3::IfcStructuralConnectionCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralConnectionCondition::declaration() const { return *IFC4X3_RC3_IfcStructuralConnectionCondition_type; } @@ -21626,7 +21626,7 @@ Ifc4x3_rc3::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(b // Function implementations for IfcStructuralCurveAction boost::optional< ::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc3::IfcStructuralCurveAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x3_rc3::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_rc3::IfcStructuralCurveAction::PredefinedType() const { return ::Ifc4x3_rc3::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x3_rc3::IfcStructuralCurveAction::setPredefinedType(::Ifc4x3_rc3::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -21695,7 +21695,7 @@ Ifc4x3_rc3::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_ // Function implementations for IfcStructuralLoad boost::optional< std::string > Ifc4x3_rc3::IfcStructuralLoad::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralLoad::declaration() const { return *IFC4X3_RC3_IfcStructuralLoad_type; } @@ -21705,7 +21705,7 @@ Ifc4x3_rc3::IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > // Function implementations for IfcStructuralLoadCase boost::optional< std::vector< double > /*[3:3]*/ > Ifc4x3_rc3::IfcStructuralLoadCase::SelfWeightCoefficients() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< double > /*[3:3]*/ v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralLoadCase::declaration() const { return *IFC4X3_RC3_IfcStructuralLoadCase_type; } @@ -21717,7 +21717,7 @@ Ifc4x3_rc3::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId aggregate_of< ::Ifc4x3_rc3::IfcStructuralLoadOrResult >::ptr Ifc4x3_rc3::IfcStructuralLoadConfiguration::Values() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc3::IfcStructuralLoadOrResult >(); } void Ifc4x3_rc3::IfcStructuralLoadConfiguration::setValues(aggregate_of< ::Ifc4x3_rc3::IfcStructuralLoadOrResult >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::vector< std::vector< double > > > Ifc4x3_rc3::IfcStructuralLoadConfiguration::Locations() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralLoadConfiguration::declaration() const { return *IFC4X3_RC3_IfcStructuralLoadConfiguration_type; } @@ -21733,9 +21733,9 @@ void Ifc4x3_rc3::IfcStructuralLoadGroup::setActionType(::Ifc4x3_rc3::IfcActionTy ::Ifc4x3_rc3::IfcActionSourceTypeEnum::Value Ifc4x3_rc3::IfcStructuralLoadGroup::ActionSource() const { return ::Ifc4x3_rc3::IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc3::IfcStructuralLoadGroup::setActionSource(::Ifc4x3_rc3::IfcActionSourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcActionSourceTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadGroup::Coefficient() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcStructuralLoadGroup::Purpose() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x3_rc3::IfcStructuralResultGroup::list::ptr Ifc4x3_rc3::IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(IFC4X3_RC3_IfcStructuralResultGroup_type, 6)->as(); } ::Ifc4x3_rc3::IfcStructuralAnalysisModel::list::ptr Ifc4x3_rc3::IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(IFC4X3_RC3_IfcStructuralAnalysisModel_type, 7)->as(); } @@ -21747,17 +21747,17 @@ Ifc4x3_rc3::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_Global // Function implementations for IfcStructuralLoadLinearForce boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadLinearForce::LinearForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadLinearForce::LinearForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadLinearForce::LinearForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadLinearForce::LinearMomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadLinearForce::LinearMomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralLoadLinearForce::declaration() const { return *IFC4X3_RC3_IfcStructuralLoadLinearForce_type; } @@ -21775,11 +21775,11 @@ Ifc4x3_rc3::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional // Function implementations for IfcStructuralLoadPlanarForce boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralLoadPlanarForce::declaration() const { return *IFC4X3_RC3_IfcStructuralLoadPlanarForce_type; } @@ -21789,17 +21789,17 @@ Ifc4x3_rc3::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::op // Function implementations for IfcStructuralLoadSingleDisplacement boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::declaration() const { return *IFC4X3_RC3_IfcStructuralLoadSingleDisplacement_type; } @@ -21809,7 +21809,7 @@ Ifc4x3_rc3::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplace // Function implementations for IfcStructuralLoadSingleDisplacementDistortion boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IFC4X3_RC3_IfcStructuralLoadSingleDisplacementDistortion_type; } @@ -21819,17 +21819,17 @@ Ifc4x3_rc3::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSing // Function implementations for IfcStructuralLoadSingleForce boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleForce::ForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleForce::ForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleForce::ForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleForce::MomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleForce::MomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleForce::MomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralLoadSingleForce::declaration() const { return *IFC4X3_RC3_IfcStructuralLoadSingleForce_type; } @@ -21839,7 +21839,7 @@ Ifc4x3_rc3::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::op // Function implementations for IfcStructuralLoadSingleForceWarping boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralLoadSingleForceWarping::declaration() const { return *IFC4X3_RC3_IfcStructuralLoadSingleForceWarping_type; } @@ -21857,11 +21857,11 @@ Ifc4x3_rc3::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< st // Function implementations for IfcStructuralLoadTemperature boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadTemperature::DeltaTConstant() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadTemperature::DeltaTY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralLoadTemperature::DeltaTZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralLoadTemperature::declaration() const { return *IFC4X3_RC3_IfcStructuralLoadTemperature_type; } @@ -21937,7 +21937,7 @@ Ifc4x3_rc3::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_Gl // Function implementations for IfcStructuralSurfaceAction boost::optional< ::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc3::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x3_rc3::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_rc3::IfcStructuralSurfaceAction::PredefinedType() const { return ::Ifc4x3_rc3::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x3_rc3::IfcStructuralSurfaceAction::setPredefinedType(::Ifc4x3_rc3::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -21959,7 +21959,7 @@ Ifc4x3_rc3::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std:: ::Ifc4x3_rc3::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4x3_rc3::IfcStructuralSurfaceMember::PredefinedType() const { return ::Ifc4x3_rc3::IfcStructuralSurfaceMemberTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc3::IfcStructuralSurfaceMember::setPredefinedType(::Ifc4x3_rc3::IfcStructuralSurfaceMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcStructuralSurfaceMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcStructuralSurfaceMember::Thickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStructuralSurfaceMember::declaration() const { return *IFC4X3_RC3_IfcStructuralSurfaceMember_type; } @@ -21999,7 +21999,7 @@ void Ifc4x3_rc3::IfcStyledItem::setItem(::Ifc4x3_rc3::IfcRepresentationItem* v) aggregate_of< ::Ifc4x3_rc3::IfcPresentationStyle >::ptr Ifc4x3_rc3::IfcStyledItem::Styles() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc3::IfcPresentationStyle >(); } void Ifc4x3_rc3::IfcStyledItem::setStyles(aggregate_of< ::Ifc4x3_rc3::IfcPresentationStyle >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcStyledItem::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcStyledItem::declaration() const { return *IFC4X3_RC3_IfcStyledItem_type; } @@ -22017,7 +22017,7 @@ Ifc4x3_rc3::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4x3_rc3::IfcRe // Function implementations for IfcSubContractResource boost::optional< ::Ifc4x3_rc3::IfcSubContractResourceTypeEnum::Value > Ifc4x3_rc3::IfcSubContractResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSubContractResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSubContractResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSubContractResource::declaration() const { return *IFC4X3_RC3_IfcSubContractResource_type; } @@ -22079,7 +22079,7 @@ Ifc4x3_rc3::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4x // Function implementations for IfcSurfaceFeature boost::optional< ::Ifc4x3_rc3::IfcSurfaceFeatureTypeEnum::Value > Ifc4x3_rc3::IfcSurfaceFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSurfaceFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSurfaceFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSurfaceFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSurfaceFeature::declaration() const { return *IFC4X3_RC3_IfcSurfaceFeature_type; } @@ -22111,11 +22111,11 @@ Ifc4x3_rc3::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4x3_rc3::IfcProf // Function implementations for IfcSurfaceReinforcementArea boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc3::IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc3::IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSurfaceReinforcementArea::declaration() const { return *IFC4X3_RC3_IfcSurfaceReinforcementArea_type; } @@ -22153,9 +22153,9 @@ Ifc4x3_rc3::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4x3_rc3::IfcCo // Function implementations for IfcSurfaceStyleRefraction boost::optional< double > Ifc4x3_rc3::IfcSurfaceStyleRefraction::RefractionIndex() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSurfaceStyleRefraction::DispersionFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSurfaceStyleRefraction::declaration() const { return *IFC4X3_RC3_IfcSurfaceStyleRefraction_type; } @@ -22189,7 +22189,7 @@ Ifc4x3_rc3::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4x3_rc3::Ifc ::Ifc4x3_rc3::IfcColourRgb* Ifc4x3_rc3::IfcSurfaceStyleShading::SurfaceColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc3::IfcColourRgb>(true); } void Ifc4x3_rc3::IfcSurfaceStyleShading::setSurfaceColour(::Ifc4x3_rc3::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSurfaceStyleShading::Transparency() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSurfaceStyleShading::declaration() const { return *IFC4X3_RC3_IfcSurfaceStyleShading_type; } @@ -22213,11 +22213,11 @@ void Ifc4x3_rc3::IfcSurfaceTexture::setRepeatS(bool v) { {IfcWrite::IfcWriteArgu bool Ifc4x3_rc3::IfcSurfaceTexture::RepeatT() const { bool v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcSurfaceTexture::setRepeatT(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcSurfaceTexture::Mode() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcCartesianTransformationOperator2D* Ifc4x3_rc3::IfcSurfaceTexture::TextureTransform() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcCartesianTransformationOperator2D>(true); } void Ifc4x3_rc3::IfcSurfaceTexture::setTextureTransform(::Ifc4x3_rc3::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcSurfaceTexture::Parameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc3::IfcTextureCoordinate::list::ptr Ifc4x3_rc3::IfcSurfaceTexture::IsMappedBy() const { return data_->getInverse(IFC4X3_RC3_IfcTextureCoordinate_type, 0)->as(); } ::Ifc4x3_rc3::IfcSurfaceStyleWithTextures::list::ptr Ifc4x3_rc3::IfcSurfaceTexture::UsedInStyles() const { return data_->getInverse(IFC4X3_RC3_IfcSurfaceStyleWithTextures_type, 0)->as(); } @@ -22245,11 +22245,11 @@ void Ifc4x3_rc3::IfcSweptDiskSolid::setDirectrix(::Ifc4x3_rc3::IfcCurve* v) { {I double Ifc4x3_rc3::IfcSweptDiskSolid::Radius() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcSweptDiskSolid::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSweptDiskSolid::InnerRadius() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSweptDiskSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcSweptDiskSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSweptDiskSolid::declaration() const { return *IFC4X3_RC3_IfcSweptDiskSolid_type; } @@ -22259,7 +22259,7 @@ Ifc4x3_rc3::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4x3_rc3::IfcCurve* v1_Dire // Function implementations for IfcSweptDiskSolidPolygonal boost::optional< double > Ifc4x3_rc3::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSweptDiskSolidPolygonal::declaration() const { return *IFC4X3_RC3_IfcSweptDiskSolidPolygonal_type; } @@ -22281,7 +22281,7 @@ Ifc4x3_rc3::IfcSweptSurface::IfcSweptSurface(::Ifc4x3_rc3::IfcProfileDef* v1_Swe // Function implementations for IfcSwitchingDevice boost::optional< ::Ifc4x3_rc3::IfcSwitchingDeviceTypeEnum::Value > Ifc4x3_rc3::IfcSwitchingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSwitchingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSwitchingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSwitchingDevice::declaration() const { return *IFC4X3_RC3_IfcSwitchingDevice_type; } @@ -22311,7 +22311,7 @@ Ifc4x3_rc3::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwner // Function implementations for IfcSystemFurnitureElement boost::optional< ::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc3::IfcSystemFurnitureElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSystemFurnitureElement::declaration() const { return *IFC4X3_RC3_IfcSystemFurnitureElement_type; } @@ -22321,7 +22321,7 @@ Ifc4x3_rc3::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_ // Function implementations for IfcSystemFurnitureElementType boost::optional< ::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc3::IfcSystemFurnitureElementType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcSystemFurnitureElementType::declaration() const { return *IFC4X3_RC3_IfcSystemFurnitureElementType_type; } @@ -22339,15 +22339,15 @@ void Ifc4x3_rc3::IfcTShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc3::IfcTShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcTShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTShapeProfileDef::WebEdgeRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTShapeProfileDef::WebSlope() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTShapeProfileDef::declaration() const { return *IFC4X3_RC3_IfcTShapeProfileDef_type; } @@ -22357,11 +22357,11 @@ Ifc4x3_rc3::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4x3_rc3::IfcProfileTyp // Function implementations for IfcTable boost::optional< std::string > Ifc4x3_rc3::IfcTable::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcTableRow >::ptr > Ifc4x3_rc3::IfcTable::Rows() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc3::IfcTableRow >(); } -void Ifc4x3_rc3::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcTableColumn >::ptr > Ifc4x3_rc3::IfcTable::Columns() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc3::IfcTableColumn >(); } -void Ifc4x3_rc3::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTable::declaration() const { return *IFC4X3_RC3_IfcTable_type; } @@ -22371,11 +22371,11 @@ Ifc4x3_rc3::IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::op // Function implementations for IfcTableColumn boost::optional< std::string > Ifc4x3_rc3::IfcTableColumn::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTableColumn::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTableColumn::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcUnit* Ifc4x3_rc3::IfcTableColumn::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcUnit>(true); } void Ifc4x3_rc3::IfcTableColumn::setUnit(::Ifc4x3_rc3::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc3::IfcReference* Ifc4x3_rc3::IfcTableColumn::ReferencePath() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc3::IfcReference>(true); } @@ -22389,9 +22389,9 @@ Ifc4x3_rc3::IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Ide // Function implementations for IfcTableRow boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc3::IfcTableRow::RowCells() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(0); return v; } -void Ifc4x3_rc3::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc3::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< bool > Ifc4x3_rc3::IfcTableRow::IsHeading() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTableRow::declaration() const { return *IFC4X3_RC3_IfcTableRow_type; } @@ -22401,7 +22401,7 @@ Ifc4x3_rc3::IfcTableRow::IfcTableRow(boost::optional< aggregate_of_instance::ptr // Function implementations for IfcTank boost::optional< ::Ifc4x3_rc3::IfcTankTypeEnum::Value > Ifc4x3_rc3::IfcTank::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcTankTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTankTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTankTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTank::declaration() const { return *IFC4X3_RC3_IfcTank_type; } @@ -22421,17 +22421,17 @@ Ifc4x3_rc3::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcTask boost::optional< std::string > Ifc4x3_rc3::IfcTask::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTask::WorkMethod() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } bool Ifc4x3_rc3::IfcTask::IsMilestone() const { bool v = *data_->getArgument(9); return v; } void Ifc4x3_rc3::IfcTask::setIsMilestone(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< int > Ifc4x3_rc3::IfcTask::Priority() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } int v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc3::IfcTaskTime* Ifc4x3_rc3::IfcTask::TaskTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc3::IfcTaskTime>(true); } void Ifc4x3_rc3::IfcTask::setTaskTime(::Ifc4x3_rc3::IfcTaskTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc3::IfcTaskTypeEnum::Value > Ifc4x3_rc3::IfcTask::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcTaskTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc3::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTaskTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTaskTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTask::declaration() const { return *IFC4X3_RC3_IfcTask_type; } @@ -22441,39 +22441,39 @@ Ifc4x3_rc3::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwnerHist // Function implementations for IfcTaskTime boost::optional< ::Ifc4x3_rc3::IfcTaskDurationEnum::Value > Ifc4x3_rc3::IfcTaskTime::DurationType() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcTaskDurationEnum::FromString(*data_->getArgument(3)); } -void Ifc4x3_rc3::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_rc3::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTaskDurationEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_rc3::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTaskDurationEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::ScheduleDuration() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::EarlyStart() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::EarlyFinish() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::LateStart() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::LateFinish() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::FreeFloat() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::TotalFloat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< bool > Ifc4x3_rc3::IfcTaskTime::IsCritical() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } bool v = *data_->getArgument(13); return v; } -void Ifc4x3_rc3::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::StatusTime() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc3::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::ActualDuration() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x3_rc3::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::ActualStart() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } std::string v = *data_->getArgument(16); return v; } -void Ifc4x3_rc3::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::ActualFinish() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } std::string v = *data_->getArgument(17); return v; } -void Ifc4x3_rc3::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskTime::RemainingTime() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x3_rc3::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTaskTime::Completion() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } double v = *data_->getArgument(19); return v; } -void Ifc4x3_rc3::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x3_rc3::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTaskTime::declaration() const { return *IFC4X3_RC3_IfcTaskTime_type; } @@ -22495,7 +22495,7 @@ Ifc4x3_rc3::IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::str ::Ifc4x3_rc3::IfcTaskTypeEnum::Value Ifc4x3_rc3::IfcTaskType::PredefinedType() const { return ::Ifc4x3_rc3::IfcTaskTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc3::IfcTaskType::setPredefinedType(::Ifc4x3_rc3::IfcTaskTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcTaskTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTaskType::WorkMethod() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTaskType::declaration() const { return *IFC4X3_RC3_IfcTaskType_type; } @@ -22505,17 +22505,17 @@ Ifc4x3_rc3::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcTelecomAddress boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcTelecomAddress::TelephoneNumbers() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcTelecomAddress::FacsimileNumbers() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTelecomAddress::PagerNumber() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcTelecomAddress::ElectronicMailAddresses() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTelecomAddress::WWWHomePageURL() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc3::IfcTelecomAddress::MessagingIDs() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTelecomAddress::declaration() const { return *IFC4X3_RC3_IfcTelecomAddress_type; } @@ -22525,21 +22525,21 @@ Ifc4x3_rc3::IfcTelecomAddress::IfcTelecomAddress(boost::optional< ::Ifc4x3_rc3:: // Function implementations for IfcTendon boost::optional< ::Ifc4x3_rc3::IfcTendonTypeEnum::Value > Ifc4x3_rc3::IfcTendon::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTendonTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTendonTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTendon::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTendon::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTendon::TensionForce() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTendon::PreStress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc3::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTendon::FrictionCoefficient() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc3::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc3::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTendon::AnchorageSlip() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc3::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc3::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTendon::MinCurvatureRadius() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc3::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc3::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTendon::declaration() const { return *IFC4X3_RC3_IfcTendon_type; } @@ -22549,7 +22549,7 @@ Ifc4x3_rc3::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwner // Function implementations for IfcTendonAnchor boost::optional< ::Ifc4x3_rc3::IfcTendonAnchorTypeEnum::Value > Ifc4x3_rc3::IfcTendonAnchor::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTendonAnchorTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTendonAnchorTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTendonAnchor::declaration() const { return *IFC4X3_RC3_IfcTendonAnchor_type; } @@ -22591,11 +22591,11 @@ Ifc4x3_rc3::IfcTendonConduitType::IfcTendonConduitType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcTendonTypeEnum::Value Ifc4x3_rc3::IfcTendonType::PredefinedType() const { return ::Ifc4x3_rc3::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc3::IfcTendonType::setPredefinedType(::Ifc4x3_rc3::IfcTendonTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcTendonTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTendonType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTendonType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc3::IfcTendonType::SheathDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTendonType::declaration() const { return *IFC4X3_RC3_IfcTendonType_type; } @@ -22657,7 +22657,7 @@ void Ifc4x3_rc3::IfcTextStyle::setTextStyle(::Ifc4x3_rc3::IfcTextStyleTextModel* ::Ifc4x3_rc3::IfcTextFontSelect* Ifc4x3_rc3::IfcTextStyle::TextFontStyle() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcTextFontSelect>(true); } void Ifc4x3_rc3::IfcTextStyle::setTextFontStyle(::Ifc4x3_rc3::IfcTextFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x3_rc3::IfcTextStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTextStyle::declaration() const { return *IFC4X3_RC3_IfcTextStyle_type; } @@ -22669,11 +22669,11 @@ Ifc4x3_rc3::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, : std::vector< std::string > /*[1:?]*/ Ifc4x3_rc3::IfcTextStyleFontModel::FontFamily() const { std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTextStyleFontModel::FontStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTextStyleFontModel::FontVariant() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTextStyleFontModel::FontWeight() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc3::IfcSizeSelect* Ifc4x3_rc3::IfcTextStyleFontModel::FontSize() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc3::IfcSizeSelect>(true); } void Ifc4x3_rc3::IfcTextStyleFontModel::setFontSize(::Ifc4x3_rc3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -22699,15 +22699,15 @@ Ifc4x3_rc3::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4x3_rc3: ::Ifc4x3_rc3::IfcSizeSelect* Ifc4x3_rc3::IfcTextStyleTextModel::TextIndent() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc3::IfcSizeSelect>(true); } void Ifc4x3_rc3::IfcTextStyleTextModel::setTextIndent(::Ifc4x3_rc3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTextStyleTextModel::TextAlign() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTextStyleTextModel::TextDecoration() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc3::IfcSizeSelect* Ifc4x3_rc3::IfcTextStyleTextModel::LetterSpacing() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcSizeSelect>(true); } void Ifc4x3_rc3::IfcTextStyleTextModel::setLetterSpacing(::Ifc4x3_rc3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc3::IfcSizeSelect* Ifc4x3_rc3::IfcTextStyleTextModel::WordSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc3::IfcSizeSelect>(true); } void Ifc4x3_rc3::IfcTextStyleTextModel::setWordSpacing(::Ifc4x3_rc3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTextStyleTextModel::TextTransform() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcSizeSelect* Ifc4x3_rc3::IfcTextStyleTextModel::LineHeight() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc3::IfcSizeSelect>(true); } void Ifc4x3_rc3::IfcTextStyleTextModel::setLineHeight(::Ifc4x3_rc3::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -22731,7 +22731,7 @@ Ifc4x3_rc3::IfcTextureCoordinate::IfcTextureCoordinate(aggregate_of< ::Ifc4x3_rc std::string Ifc4x3_rc3::IfcTextureCoordinateGenerator::Mode() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcTextureCoordinateGenerator::setMode(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[1:?]*/ > Ifc4x3_rc3::IfcTextureCoordinateGenerator::Parameter() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTextureCoordinateGenerator::declaration() const { return *IFC4X3_RC3_IfcTextureCoordinateGenerator_type; } @@ -22775,11 +22775,11 @@ Ifc4x3_rc3::IfcTextureVertexList::IfcTextureVertexList(std::vector< std::vector< double Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::QubicTerm() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::setQubicTerm(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::QuadraticTerm() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::setQuadraticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::setQuadraticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::LinearTerm() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::ConstantTerm() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcThirdOrderPolynomialSpiral::declaration() const { return *IFC4X3_RC3_IfcThirdOrderPolynomialSpiral_type; } @@ -22803,7 +22803,7 @@ Ifc4x3_rc3::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v std::string Ifc4x3_rc3::IfcTimeSeries::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc3::IfcTimeSeries::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTimeSeries::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } std::string Ifc4x3_rc3::IfcTimeSeries::StartTime() const { std::string v = *data_->getArgument(2); return v; } void Ifc4x3_rc3::IfcTimeSeries::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::string Ifc4x3_rc3::IfcTimeSeries::EndTime() const { std::string v = *data_->getArgument(3); return v; } @@ -22813,7 +22813,7 @@ void Ifc4x3_rc3::IfcTimeSeries::setTimeSeriesDataType(::Ifc4x3_rc3::IfcTimeSerie ::Ifc4x3_rc3::IfcDataOriginEnum::Value Ifc4x3_rc3::IfcTimeSeries::DataOrigin() const { return ::Ifc4x3_rc3::IfcDataOriginEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc3::IfcTimeSeries::setDataOrigin(::Ifc4x3_rc3::IfcDataOriginEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcDataOriginEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTimeSeries::UserDefinedDataOrigin() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc3::IfcUnit* Ifc4x3_rc3::IfcTimeSeries::Unit() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc3::IfcUnit>(true); } void Ifc4x3_rc3::IfcTimeSeries::setUnit(::Ifc4x3_rc3::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } @@ -22864,7 +22864,7 @@ Ifc4x3_rc3::IfcToroidalSurface::IfcToroidalSurface(::Ifc4x3_rc3::IfcAxis2Placeme // Function implementations for IfcTrackElement boost::optional< ::Ifc4x3_rc3::IfcTrackElementTypeEnum::Value > Ifc4x3_rc3::IfcTrackElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcTrackElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTrackElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTrackElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTrackElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTrackElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTrackElement::declaration() const { return *IFC4X3_RC3_IfcTrackElement_type; } @@ -22884,7 +22884,7 @@ Ifc4x3_rc3::IfcTrackElementType::IfcTrackElementType(std::string v1_GlobalId, :: // Function implementations for IfcTransformer boost::optional< ::Ifc4x3_rc3::IfcTransformerTypeEnum::Value > Ifc4x3_rc3::IfcTransformer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcTransformerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTransformerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTransformerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTransformer::declaration() const { return *IFC4X3_RC3_IfcTransformer_type; } @@ -22940,13 +22940,13 @@ Ifc4x3_rc3::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4x3_rc3::IfcProf // Function implementations for IfcTriangulatedFaceSet boost::optional< std::vector< std::vector< double > > > Ifc4x3_rc3::IfcTriangulatedFaceSet::Normals() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(1); return v; } -void Ifc4x3_rc3::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc3::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc3::IfcTriangulatedFaceSet::Closed() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc3::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc3::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::vector< std::vector< int > > Ifc4x3_rc3::IfcTriangulatedFaceSet::CoordIndex() const { std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } void Ifc4x3_rc3::IfcTriangulatedFaceSet::setCoordIndex(std::vector< std::vector< int > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc3::IfcTriangulatedFaceSet::PnIndex() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTriangulatedFaceSet::declaration() const { return *IFC4X3_RC3_IfcTriangulatedFaceSet_type; } @@ -22984,7 +22984,7 @@ Ifc4x3_rc3::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4x3_rc3::IfcCurve* v1_BasisCur // Function implementations for IfcTubeBundle boost::optional< ::Ifc4x3_rc3::IfcTubeBundleTypeEnum::Value > Ifc4x3_rc3::IfcTubeBundle::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTubeBundleTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcTubeBundleTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcTubeBundle::declaration() const { return *IFC4X3_RC3_IfcTubeBundle_type; } @@ -23004,9 +23004,9 @@ Ifc4x3_rc3::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcTypeObject boost::optional< std::string > Ifc4x3_rc3::IfcTypeObject::ApplicableOccurrence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPropertySetDefinition >::ptr > Ifc4x3_rc3::IfcTypeObject::HasPropertySets() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc3::IfcPropertySetDefinition >(); } -void Ifc4x3_rc3::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(5,attr);} } ::Ifc4x3_rc3::IfcRelDefinesByType::list::ptr Ifc4x3_rc3::IfcTypeObject::Types() const { return data_->getInverse(IFC4X3_RC3_IfcRelDefinesByType_type, 5)->as(); } @@ -23017,11 +23017,11 @@ Ifc4x3_rc3::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4x3_rc3:: // Function implementations for IfcTypeProcess boost::optional< std::string > Ifc4x3_rc3::IfcTypeProcess::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTypeProcess::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTypeProcess::ProcessType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcRelAssignsToProcess::list::ptr Ifc4x3_rc3::IfcTypeProcess::OperatesOn() const { return data_->getInverse(IFC4X3_RC3_IfcRelAssignsToProcess_type, 6)->as(); } @@ -23032,9 +23032,9 @@ Ifc4x3_rc3::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4x3_rc3 // Function implementations for IfcTypeProduct boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcRepresentationMap >::ptr > Ifc4x3_rc3::IfcTypeProduct::RepresentationMaps() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc3::IfcRepresentationMap >(); } -void Ifc4x3_rc3::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTypeProduct::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcRelAssignsToProduct::list::ptr Ifc4x3_rc3::IfcTypeProduct::ReferencedBy() const { return data_->getInverse(IFC4X3_RC3_IfcRelAssignsToProduct_type, 6)->as(); } @@ -23045,11 +23045,11 @@ Ifc4x3_rc3::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4x3_rc3 // Function implementations for IfcTypeResource boost::optional< std::string > Ifc4x3_rc3::IfcTypeResource::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTypeResource::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcTypeResource::ResourceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc3::IfcRelAssignsToResource::list::ptr Ifc4x3_rc3::IfcTypeResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC3_IfcRelAssignsToResource_type, 6)->as(); } @@ -23068,11 +23068,11 @@ void Ifc4x3_rc3::IfcUShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc3::IfcUShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcUShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcUShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcUShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc3::IfcUShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcUShapeProfileDef::declaration() const { return *IFC4X3_RC3_IfcUShapeProfileDef_type; } @@ -23092,7 +23092,7 @@ Ifc4x3_rc3::IfcUnitAssignment::IfcUnitAssignment(aggregate_of_instance::ptr v1_U // Function implementations for IfcUnitaryControlElement boost::optional< ::Ifc4x3_rc3::IfcUnitaryControlElementTypeEnum::Value > Ifc4x3_rc3::IfcUnitaryControlElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcUnitaryControlElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcUnitaryControlElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcUnitaryControlElement::declaration() const { return *IFC4X3_RC3_IfcUnitaryControlElement_type; } @@ -23112,7 +23112,7 @@ Ifc4x3_rc3::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::stri // Function implementations for IfcUnitaryEquipment boost::optional< ::Ifc4x3_rc3::IfcUnitaryEquipmentTypeEnum::Value > Ifc4x3_rc3::IfcUnitaryEquipment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcUnitaryEquipmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcUnitaryEquipmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcUnitaryEquipment::declaration() const { return *IFC4X3_RC3_IfcUnitaryEquipment_type; } @@ -23132,7 +23132,7 @@ Ifc4x3_rc3::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_Glob // Function implementations for IfcValve boost::optional< ::Ifc4x3_rc3::IfcValveTypeEnum::Value > Ifc4x3_rc3::IfcValve::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcValveTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcValveTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcValveTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcValve::declaration() const { return *IFC4X3_RC3_IfcValve_type; } @@ -23192,7 +23192,7 @@ Ifc4x3_rc3::IfcVertexPoint::IfcVertexPoint(::Ifc4x3_rc3::IfcPoint* v1_VertexGeom // Function implementations for IfcVibrationDamper boost::optional< ::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc3::IfcVibrationDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcVibrationDamper::declaration() const { return *IFC4X3_RC3_IfcVibrationDamper_type; } @@ -23202,7 +23202,7 @@ Ifc4x3_rc3::IfcVibrationDamper::IfcVibrationDamper(std::string v1_GlobalId, ::If // Function implementations for IfcVibrationDamperType boost::optional< ::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc3::IfcVibrationDamperType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc3::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcVibrationDamperType::declaration() const { return *IFC4X3_RC3_IfcVibrationDamperType_type; } @@ -23212,7 +23212,7 @@ Ifc4x3_rc3::IfcVibrationDamperType::IfcVibrationDamperType(std::string v1_Global // Function implementations for IfcVibrationIsolator boost::optional< ::Ifc4x3_rc3::IfcVibrationIsolatorTypeEnum::Value > Ifc4x3_rc3::IfcVibrationIsolator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcVibrationIsolatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcVibrationIsolatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcVibrationIsolator::declaration() const { return *IFC4X3_RC3_IfcVibrationIsolator_type; } @@ -23276,7 +23276,7 @@ Ifc4x3_rc3::IfcVoidStratum::IfcVoidStratum(std::string v1_GlobalId, ::Ifc4x3_rc3 // Function implementations for IfcVoidingFeature boost::optional< ::Ifc4x3_rc3::IfcVoidingFeatureTypeEnum::Value > Ifc4x3_rc3::IfcVoidingFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcVoidingFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcVoidingFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcVoidingFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcVoidingFeature::declaration() const { return *IFC4X3_RC3_IfcVoidingFeature_type; } @@ -23286,7 +23286,7 @@ Ifc4x3_rc3::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcWall boost::optional< ::Ifc4x3_rc3::IfcWallTypeEnum::Value > Ifc4x3_rc3::IfcWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcWall::declaration() const { return *IFC4X3_RC3_IfcWall_type; } @@ -23322,7 +23322,7 @@ Ifc4x3_rc3::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcWasteTerminal boost::optional< ::Ifc4x3_rc3::IfcWasteTerminalTypeEnum::Value > Ifc4x3_rc3::IfcWasteTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWasteTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWasteTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcWasteTerminal::declaration() const { return *IFC4X3_RC3_IfcWasteTerminal_type; } @@ -23350,15 +23350,15 @@ Ifc4x3_rc3::IfcWaterStratum::IfcWaterStratum(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcWindow boost::optional< double > Ifc4x3_rc3::IfcWindow::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindow::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc3::IfcWindowTypeEnum::Value > Ifc4x3_rc3::IfcWindow::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcWindowTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc3::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWindowTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWindowTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc3::IfcWindowTypePartitioningEnum::Value > Ifc4x3_rc3::IfcWindow::PartitioningType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc3::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_rc3::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWindowTypePartitioningEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_rc3::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWindowTypePartitioningEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcWindow::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcWindow::declaration() const { return *IFC4X3_RC3_IfcWindow_type; } @@ -23368,29 +23368,29 @@ Ifc4x3_rc3::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcOwner // Function implementations for IfcWindowLiningProperties boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::TransomThickness() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::MullionThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::FirstTransomOffset() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::SecondTransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::FirstMullionOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::SecondMullionOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } ::Ifc4x3_rc3::IfcShapeAspect* Ifc4x3_rc3::IfcWindowLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc4x3_rc3::IfcShapeAspect>(true); } void Ifc4x3_rc3::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc4x3_rc3::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::LiningOffset() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc3::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc3::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcWindowLiningProperties::declaration() const { return *IFC4X3_RC3_IfcWindowLiningProperties_type; } @@ -23404,9 +23404,9 @@ void Ifc4x3_rc3::IfcWindowPanelProperties::setOperationType(::Ifc4x3_rc3::IfcWin ::Ifc4x3_rc3::IfcWindowPanelPositionEnum::Value Ifc4x3_rc3::IfcWindowPanelProperties::PanelPosition() const { return ::Ifc4x3_rc3::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc3::IfcWindowPanelProperties::setPanelPosition(::Ifc4x3_rc3::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowPanelProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc3::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcWindowPanelProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc3::IfcShapeAspect* Ifc4x3_rc3::IfcWindowPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc3::IfcShapeAspect>(true); } void Ifc4x3_rc3::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc4x3_rc3::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -23446,9 +23446,9 @@ void Ifc4x3_rc3::IfcWindowType::setPredefinedType(::Ifc4x3_rc3::IfcWindowTypeEnu ::Ifc4x3_rc3::IfcWindowTypePartitioningEnum::Value Ifc4x3_rc3::IfcWindowType::PartitioningType() const { return ::Ifc4x3_rc3::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc3::IfcWindowType::setPartitioningType(::Ifc4x3_rc3::IfcWindowTypePartitioningEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc3::IfcWindowTypePartitioningEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x3_rc3::IfcWindowType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x3_rc3::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc3::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcWindowType::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcWindowType::declaration() const { return *IFC4X3_RC3_IfcWindowType_type; } @@ -23458,11 +23458,11 @@ Ifc4x3_rc3::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4x3_rc3:: // Function implementations for IfcWorkCalendar boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcWorkTime >::ptr > Ifc4x3_rc3::IfcWorkCalendar::WorkingTimes() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc3::IfcWorkTime >(); } -void Ifc4x3_rc3::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc3::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcWorkTime >::ptr > Ifc4x3_rc3::IfcWorkCalendar::ExceptionTimes() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc3::IfcWorkTime >(); } -void Ifc4x3_rc3::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc3::IfcWorkCalendarTypeEnum::Value > Ifc4x3_rc3::IfcWorkCalendar::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcWorkCalendarTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc3::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWorkCalendarTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWorkCalendarTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcWorkCalendar::declaration() const { return *IFC4X3_RC3_IfcWorkCalendar_type; } @@ -23474,17 +23474,17 @@ Ifc4x3_rc3::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4x3_r std::string Ifc4x3_rc3::IfcWorkControl::CreationDate() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcWorkControl::setCreationDate(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPerson >::ptr > Ifc4x3_rc3::IfcWorkControl::Creators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc3::IfcPerson >(); } -void Ifc4x3_rc3::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_rc3::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcWorkControl::Purpose() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcWorkControl::Duration() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc3::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc3::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcWorkControl::TotalFloat() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc3::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc3::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } std::string Ifc4x3_rc3::IfcWorkControl::StartTime() const { std::string v = *data_->getArgument(11); return v; } void Ifc4x3_rc3::IfcWorkControl::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcWorkControl::FinishTime() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc3::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc3::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcWorkControl::declaration() const { return *IFC4X3_RC3_IfcWorkControl_type; } @@ -23494,7 +23494,7 @@ Ifc4x3_rc3::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4x3_rc3 // Function implementations for IfcWorkPlan boost::optional< ::Ifc4x3_rc3::IfcWorkPlanTypeEnum::Value > Ifc4x3_rc3::IfcWorkPlan::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcWorkPlanTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc3::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWorkPlanTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWorkPlanTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcWorkPlan::declaration() const { return *IFC4X3_RC3_IfcWorkPlan_type; } @@ -23504,7 +23504,7 @@ Ifc4x3_rc3::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4x3_rc3::IfcO // Function implementations for IfcWorkSchedule boost::optional< ::Ifc4x3_rc3::IfcWorkScheduleTypeEnum::Value > Ifc4x3_rc3::IfcWorkSchedule::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc3::IfcWorkScheduleTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc3::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWorkScheduleTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc3::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc3::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc3::IfcWorkScheduleTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcWorkSchedule::declaration() const { return *IFC4X3_RC3_IfcWorkSchedule_type; } @@ -23516,9 +23516,9 @@ Ifc4x3_rc3::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4x3_r ::Ifc4x3_rc3::IfcRecurrencePattern* Ifc4x3_rc3::IfcWorkTime::RecurrencePattern() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc3::IfcRecurrencePattern>(true); } void Ifc4x3_rc3::IfcWorkTime::setRecurrencePattern(::Ifc4x3_rc3::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcWorkTime::Start() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc3::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc3::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc3::IfcWorkTime::Finish() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcWorkTime::declaration() const { return *IFC4X3_RC3_IfcWorkTime_type; } @@ -23536,9 +23536,9 @@ void Ifc4x3_rc3::IfcZShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc3::IfcZShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc3::IfcZShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc3::IfcZShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc3::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc3::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc3::IfcZShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc3::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc3::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcZShapeProfileDef::declaration() const { return *IFC4X3_RC3_IfcZShapeProfileDef_type; } @@ -23548,7 +23548,7 @@ Ifc4x3_rc3::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4x3_rc3::IfcProfileTyp // Function implementations for IfcZone boost::optional< std::string > Ifc4x3_rc3::IfcZone::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc3::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc3::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc3::IfcZone::declaration() const { return *IFC4X3_RC3_IfcZone_type; } diff --git a/src/ifcparse/Ifc4x3_rc3.h b/src/ifcparse/Ifc4x3_rc3.h index 611b77393a..0ba741a6e1 100644 --- a/src/ifcparse/Ifc4x3_rc3.h +++ b/src/ifcparse/Ifc4x3_rc3.h @@ -42,7 +42,9 @@ struct Ifc4x3_rc3 { -static const IfcParse::schema_definition& get_schema(); +IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); + +IFC_PARSE_API static void clear_schema(); static const char* const Identifier; diff --git a/src/ifcparse/Ifc4x3_rc4-schema.cpp b/src/ifcparse/Ifc4x3_rc4-schema.cpp index edab421d43..0c875db269 100644 --- a/src/ifcparse/Ifc4x3_rc4-schema.cpp +++ b/src/ifcparse/Ifc4x3_rc4-schema.cpp @@ -17136,9 +17136,16 @@ IfcParse::schema_definition* IFC4X3_RC4_populate_schema() { #pragma optimize("", on) #endif -const schema_definition& Ifc4x3_rc4::get_schema() { +static std::unique_ptr schema; - static const schema_definition* s = IFC4X3_RC4_populate_schema(); - return *s; +void Ifc4x3_rc4::clear_schema() { + schema.reset(); +} + +const schema_definition& Ifc4x3_rc4::get_schema() { + if (!schema) { + schema.reset(IFC4X3_RC4_populate_schema()); + } + return *schema; } diff --git a/src/ifcparse/Ifc4x3_rc4.cpp b/src/ifcparse/Ifc4x3_rc4.cpp index f946e3f4c4..64058b2c9d 100644 --- a/src/ifcparse/Ifc4x3_rc4.cpp +++ b/src/ifcparse/Ifc4x3_rc4.cpp @@ -13148,11 +13148,11 @@ Ifc4x3_rc4::IfcWarpingMomentMeasure::operator double() const { return *data_->ge // Function implementations for IfcActionRequest boost::optional< ::Ifc4x3_rc4::IfcActionRequestTypeEnum::Value > Ifc4x3_rc4::IfcActionRequest::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcActionRequestTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc4::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcActionRequestTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcActionRequestTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcActionRequest::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcActionRequest::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcActionRequest::declaration() const { return *IFC4X3_RC4_IfcActionRequest_type; } @@ -13175,9 +13175,9 @@ Ifc4x3_rc4::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHi ::Ifc4x3_rc4::IfcRoleEnum::Value Ifc4x3_rc4::IfcActorRole::Role() const { return ::Ifc4x3_rc4::IfcRoleEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc4::IfcActorRole::setRole(::Ifc4x3_rc4::IfcRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcRoleEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcActorRole::UserDefinedRole() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcActorRole::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc4::IfcActorRole::HasExternalReference() const { return data_->getInverse(IFC4X3_RC4_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -13188,7 +13188,7 @@ Ifc4x3_rc4::IfcActorRole::IfcActorRole(::Ifc4x3_rc4::IfcRoleEnum::Value v1_Role, // Function implementations for IfcActuator boost::optional< ::Ifc4x3_rc4::IfcActuatorTypeEnum::Value > Ifc4x3_rc4::IfcActuator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcActuatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcActuatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcActuatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcActuator::declaration() const { return *IFC4X3_RC4_IfcActuator_type; } @@ -13208,11 +13208,11 @@ Ifc4x3_rc4::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcAddress boost::optional< ::Ifc4x3_rc4::IfcAddressTypeEnum::Value > Ifc4x3_rc4::IfcAddress::Purpose() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcAddressTypeEnum::FromString(*data_->getArgument(0)); } -void Ifc4x3_rc4::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_rc4::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAddressTypeEnum::ToString(*v)));data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_rc4::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAddressTypeEnum::ToString(*v)));}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcAddress::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcAddress::UserDefinedPurpose() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcPerson::list::ptr Ifc4x3_rc4::IfcAddress::OfPerson() const { return data_->getInverse(IFC4X3_RC4_IfcPerson_type, 7)->as(); } ::Ifc4x3_rc4::IfcOrganization::list::ptr Ifc4x3_rc4::IfcAddress::OfOrganization() const { return data_->getInverse(IFC4X3_RC4_IfcOrganization_type, 4)->as(); } @@ -13250,7 +13250,7 @@ Ifc4x3_rc4::IfcAdvancedFace::IfcAdvancedFace(aggregate_of< ::Ifc4x3_rc4::IfcFace // Function implementations for IfcAirTerminal boost::optional< ::Ifc4x3_rc4::IfcAirTerminalTypeEnum::Value > Ifc4x3_rc4::IfcAirTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAirTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAirTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcAirTerminal::declaration() const { return *IFC4X3_RC4_IfcAirTerminal_type; } @@ -13260,7 +13260,7 @@ Ifc4x3_rc4::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4x3_rc4 // Function implementations for IfcAirTerminalBox boost::optional< ::Ifc4x3_rc4::IfcAirTerminalBoxTypeEnum::Value > Ifc4x3_rc4::IfcAirTerminalBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAirTerminalBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAirTerminalBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcAirTerminalBox::declaration() const { return *IFC4X3_RC4_IfcAirTerminalBox_type; } @@ -13290,7 +13290,7 @@ Ifc4x3_rc4::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::If // Function implementations for IfcAirToAirHeatRecovery boost::optional< ::Ifc4x3_rc4::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4x3_rc4::IfcAirToAirHeatRecovery::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcAirToAirHeatRecovery::declaration() const { return *IFC4X3_RC4_IfcAirToAirHeatRecovery_type; } @@ -13310,7 +13310,7 @@ Ifc4x3_rc4::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string // Function implementations for IfcAlarm boost::optional< ::Ifc4x3_rc4::IfcAlarmTypeEnum::Value > Ifc4x3_rc4::IfcAlarm::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcAlarmTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAlarmTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAlarmTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcAlarm::declaration() const { return *IFC4X3_RC4_IfcAlarm_type; } @@ -13330,7 +13330,7 @@ Ifc4x3_rc4::IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, ::Ifc4x3_rc4::If // Function implementations for IfcAlignment boost::optional< ::Ifc4x3_rc4::IfcAlignmentTypeEnum::Value > Ifc4x3_rc4::IfcAlignment::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcAlignmentTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc4::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAlignmentTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAlignmentTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcAlignment::declaration() const { return *IFC4X3_RC4_IfcAlignment_type; } @@ -13356,11 +13356,11 @@ void Ifc4x3_rc4::IfcAlignmentCantSegment::setHorizontalLength(double v) { {IfcWr double Ifc4x3_rc4::IfcAlignmentCantSegment::StartCantLeft() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc4::IfcAlignmentCantSegment::setStartCantLeft(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAlignmentCantSegment::EndCantLeft() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcAlignmentCantSegment::setEndCantLeft(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcAlignmentCantSegment::setEndCantLeft(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } double Ifc4x3_rc4::IfcAlignmentCantSegment::StartCantRight() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcAlignmentCantSegment::setStartCantRight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAlignmentCantSegment::EndCantRight() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcAlignmentCantSegment::setEndCantRight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcAlignmentCantSegment::setEndCantRight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcAlignmentCantSegmentTypeEnum::Value Ifc4x3_rc4::IfcAlignmentCantSegment::PredefinedType() const { return ::Ifc4x3_rc4::IfcAlignmentCantSegmentTypeEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc4::IfcAlignmentCantSegment::setPredefinedType(::Ifc4x3_rc4::IfcAlignmentCantSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcAlignmentCantSegmentTypeEnum::ToString(v)));data_->setArgument(8,attr);} } @@ -13390,7 +13390,7 @@ void Ifc4x3_rc4::IfcAlignmentHorizontalSegment::setEndRadiusOfCurvature(double v double Ifc4x3_rc4::IfcAlignmentHorizontalSegment::SegmentLength() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcAlignmentHorizontalSegment::setSegmentLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAlignmentHorizontalSegment::GravityCenterLineHeight() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcAlignmentHorizontalSegment::setGravityCenterLineHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcAlignmentHorizontalSegment::setGravityCenterLineHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcAlignmentHorizontalSegmentTypeEnum::Value Ifc4x3_rc4::IfcAlignmentHorizontalSegment::PredefinedType() const { return ::Ifc4x3_rc4::IfcAlignmentHorizontalSegmentTypeEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc4::IfcAlignmentHorizontalSegment::setPredefinedType(::Ifc4x3_rc4::IfcAlignmentHorizontalSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcAlignmentHorizontalSegmentTypeEnum::ToString(v)));data_->setArgument(8,attr);} } @@ -13402,9 +13402,9 @@ Ifc4x3_rc4::IfcAlignmentHorizontalSegment::IfcAlignmentHorizontalSegment(boost:: // Function implementations for IfcAlignmentParameterSegment boost::optional< std::string > Ifc4x3_rc4::IfcAlignmentParameterSegment::StartTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcAlignmentParameterSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcAlignmentParameterSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcAlignmentParameterSegment::EndTag() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcAlignmentParameterSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcAlignmentParameterSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcAlignmentParameterSegment::declaration() const { return *IFC4X3_RC4_IfcAlignmentParameterSegment_type; } @@ -13442,7 +13442,7 @@ void Ifc4x3_rc4::IfcAlignmentVerticalSegment::setStartGradient(double v) { {IfcW double Ifc4x3_rc4::IfcAlignmentVerticalSegment::EndGradient() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcAlignmentVerticalSegment::setEndGradient(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAlignmentVerticalSegment::RadiusOfCurvature() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcAlignmentVerticalSegment::setRadiusOfCurvature(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcAlignmentVerticalSegment::setRadiusOfCurvature(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcAlignmentVerticalSegmentTypeEnum::Value Ifc4x3_rc4::IfcAlignmentVerticalSegment::PredefinedType() const { return ::Ifc4x3_rc4::IfcAlignmentVerticalSegmentTypeEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc4::IfcAlignmentVerticalSegment::setPredefinedType(::Ifc4x3_rc4::IfcAlignmentVerticalSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcAlignmentVerticalSegmentTypeEnum::ToString(v)));data_->setArgument(8,attr);} } @@ -13454,7 +13454,7 @@ Ifc4x3_rc4::IfcAlignmentVerticalSegment::IfcAlignmentVerticalSegment(boost::opti // Function implementations for IfcAnnotation boost::optional< ::Ifc4x3_rc4::IfcAnnotationTypeEnum::Value > Ifc4x3_rc4::IfcAnnotation::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcAnnotationTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc4::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAnnotationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAnnotationTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAnnotationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAnnotationTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc4::IfcAnnotation::ContainedInStructure() const { return data_->getInverse(IFC4X3_RC4_IfcRelContainedInSpatialStructure_type, 4)->as(); } @@ -13467,7 +13467,7 @@ Ifc4x3_rc4::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4x3_rc4:: ::Ifc4x3_rc4::IfcCurve* Ifc4x3_rc4::IfcAnnotationFillArea::OuterBoundary() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc4::IfcCurve>(true); } void Ifc4x3_rc4::IfcAnnotationFillArea::setOuterBoundary(::Ifc4x3_rc4::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcCurve >::ptr > Ifc4x3_rc4::IfcAnnotationFillArea::InnerBoundaries() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc4::IfcCurve >(); } -void Ifc4x3_rc4::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcAnnotationFillArea::declaration() const { return *IFC4X3_RC4_IfcAnnotationFillArea_type; } @@ -13493,25 +13493,25 @@ Ifc4x3_rc4::IfcApplication::IfcApplication(::Ifc4x3_rc4::IfcOrganization* v1_App // Function implementations for IfcAppliedValue boost::optional< std::string > Ifc4x3_rc4::IfcAppliedValue::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcAppliedValue::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc4::IfcAppliedValueSelect* Ifc4x3_rc4::IfcAppliedValue::AppliedValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc4::IfcAppliedValueSelect>(true); } void Ifc4x3_rc4::IfcAppliedValue::setAppliedValue(::Ifc4x3_rc4::IfcAppliedValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcMeasureWithUnit* Ifc4x3_rc4::IfcAppliedValue::UnitBasis() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcMeasureWithUnit>(true); } void Ifc4x3_rc4::IfcAppliedValue::setUnitBasis(::Ifc4x3_rc4::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcAppliedValue::ApplicableDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcAppliedValue::FixedUntilDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcAppliedValue::Category() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcAppliedValue::Condition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc4::IfcArithmeticOperatorEnum::Value > Ifc4x3_rc4::IfcAppliedValue::ArithmeticOperator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcArithmeticOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_rc4::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcArithmeticOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_rc4::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcArithmeticOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAppliedValue >::ptr > Ifc4x3_rc4::IfcAppliedValue::Components() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc4::IfcAppliedValue >(); } -void Ifc4x3_rc4::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x3_rc4::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc4::IfcAppliedValue::HasExternalReference() const { return data_->getInverse(IFC4X3_RC4_IfcExternalReferenceRelationship_type, 3)->as(); } @@ -13522,19 +13522,19 @@ Ifc4x3_rc4::IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_N // Function implementations for IfcApproval boost::optional< std::string > Ifc4x3_rc4::IfcApproval::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcApproval::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcApproval::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcApproval::TimeOfApproval() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcApproval::Status() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcApproval::Level() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcApproval::Qualifier() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc4::IfcActorSelect* Ifc4x3_rc4::IfcApproval::RequestingApproval() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc4::IfcActorSelect>(true); } void Ifc4x3_rc4::IfcApproval::setRequestingApproval(::Ifc4x3_rc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcActorSelect* Ifc4x3_rc4::IfcApproval::GivingApproval() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc4::IfcActorSelect>(true); } @@ -13595,7 +13595,7 @@ Ifc4x3_rc4::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::I // Function implementations for IfcAsset boost::optional< std::string > Ifc4x3_rc4::IfcAsset::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcCostValue* Ifc4x3_rc4::IfcAsset::OriginalValue() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcCostValue>(true); } void Ifc4x3_rc4::IfcAsset::setOriginalValue(::Ifc4x3_rc4::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } ::Ifc4x3_rc4::IfcCostValue* Ifc4x3_rc4::IfcAsset::CurrentValue() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc4::IfcCostValue>(true); } @@ -13609,7 +13609,7 @@ void Ifc4x3_rc4::IfcAsset::setUser(::Ifc4x3_rc4::IfcActorSelect* v) { {IfcWrite: ::Ifc4x3_rc4::IfcPerson* Ifc4x3_rc4::IfcAsset::ResponsiblePerson() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc4::IfcPerson>(true); } void Ifc4x3_rc4::IfcAsset::setResponsiblePerson(::Ifc4x3_rc4::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcAsset::IncorporationDate() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x3_rc4::IfcCostValue* Ifc4x3_rc4::IfcAsset::DepreciatedValue() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc4::IfcCostValue>(true); } void Ifc4x3_rc4::IfcAsset::setDepreciatedValue(::Ifc4x3_rc4::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -13629,21 +13629,21 @@ void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { {Ifc double Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } double Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { double v = *data_->getArgument(8); return v; } void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::declaration() const { return *IFC4X3_RC4_IfcAsymmetricIShapeProfileDef_type; } @@ -13653,7 +13653,7 @@ Ifc4x3_rc4::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4x // Function implementations for IfcAudioVisualAppliance boost::optional< ::Ifc4x3_rc4::IfcAudioVisualApplianceTypeEnum::Value > Ifc4x3_rc4::IfcAudioVisualAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAudioVisualApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAudioVisualApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcAudioVisualAppliance::declaration() const { return *IFC4X3_RC4_IfcAudioVisualAppliance_type; } @@ -13789,7 +13789,7 @@ Ifc4x3_rc4::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegre // Function implementations for IfcBeam boost::optional< ::Ifc4x3_rc4::IfcBeamTypeEnum::Value > Ifc4x3_rc4::IfcBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBeam::declaration() const { return *IFC4X3_RC4_IfcBeam_type; } @@ -13817,7 +13817,7 @@ Ifc4x3_rc4::IfcBeamType::IfcBeamType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcBearing boost::optional< ::Ifc4x3_rc4::IfcBearingTypeEnum::Value > Ifc4x3_rc4::IfcBearing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcBearingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBearingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBearingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBearing::declaration() const { return *IFC4X3_RC4_IfcBearing_type; } @@ -13863,7 +13863,7 @@ Ifc4x3_rc4::IfcBlock::IfcBlock(::Ifc4x3_rc4::IfcAxis2Placement3D* v1_Position, d // Function implementations for IfcBoiler boost::optional< ::Ifc4x3_rc4::IfcBoilerTypeEnum::Value > Ifc4x3_rc4::IfcBoiler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcBoilerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBoilerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBoilerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBoiler::declaration() const { return *IFC4X3_RC4_IfcBoiler_type; } @@ -13913,7 +13913,7 @@ Ifc4x3_rc4::IfcBorehole::IfcBorehole(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcBoundaryCondition boost::optional< std::string > Ifc4x3_rc4::IfcBoundaryCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBoundaryCondition::declaration() const { return *IFC4X3_RC4_IfcBoundaryCondition_type; } @@ -14037,7 +14037,7 @@ Ifc4x3_rc4::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4x3_rc4::IfcSurface* v1_Ba // Function implementations for IfcBridge boost::optional< ::Ifc4x3_rc4::IfcBridgeTypeEnum::Value > Ifc4x3_rc4::IfcBridge::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcBridgeTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBridgeTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBridgeTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBridge::declaration() const { return *IFC4X3_RC4_IfcBridge_type; } @@ -14047,9 +14047,9 @@ Ifc4x3_rc4::IfcBridge::IfcBridge(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwner // Function implementations for IfcBuilding boost::optional< double > Ifc4x3_rc4::IfcBuilding::ElevationOfRefHeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcBuilding::ElevationOfTerrain() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc4::IfcPostalAddress* Ifc4x3_rc4::IfcBuilding::BuildingAddress() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc4::IfcPostalAddress>(true); } void Ifc4x3_rc4::IfcBuilding::setBuildingAddress(::Ifc4x3_rc4::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } @@ -14061,7 +14061,7 @@ Ifc4x3_rc4::IfcBuilding::IfcBuilding(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcBuildingElementPart boost::optional< ::Ifc4x3_rc4::IfcBuildingElementPartTypeEnum::Value > Ifc4x3_rc4::IfcBuildingElementPart::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBuildingElementPartTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBuildingElementPartTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBuildingElementPart::declaration() const { return *IFC4X3_RC4_IfcBuildingElementPart_type; } @@ -14081,7 +14081,7 @@ Ifc4x3_rc4::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v // Function implementations for IfcBuildingElementProxy boost::optional< ::Ifc4x3_rc4::IfcBuildingElementProxyTypeEnum::Value > Ifc4x3_rc4::IfcBuildingElementProxy::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBuildingElementProxyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBuildingElementProxyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBuildingElementProxy::declaration() const { return *IFC4X3_RC4_IfcBuildingElementProxy_type; } @@ -14101,7 +14101,7 @@ Ifc4x3_rc4::IfcBuildingElementProxyType::IfcBuildingElementProxyType(std::string // Function implementations for IfcBuildingStorey boost::optional< double > Ifc4x3_rc4::IfcBuildingStorey::Elevation() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBuildingStorey::declaration() const { return *IFC4X3_RC4_IfcBuildingStorey_type; } @@ -14111,9 +14111,9 @@ Ifc4x3_rc4::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcBuildingSystem boost::optional< ::Ifc4x3_rc4::IfcBuildingSystemTypeEnum::Value > Ifc4x3_rc4::IfcBuildingSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcBuildingSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc4::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBuildingSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBuildingSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcBuildingSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBuildingSystem::declaration() const { return *IFC4X3_RC4_IfcBuildingSystem_type; } @@ -14139,9 +14139,9 @@ Ifc4x3_rc4::IfcBuiltElementType::IfcBuiltElementType(std::string v1_GlobalId, :: // Function implementations for IfcBuiltSystem boost::optional< ::Ifc4x3_rc4::IfcBuiltSystemTypeEnum::Value > Ifc4x3_rc4::IfcBuiltSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcBuiltSystemTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc4::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBuiltSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBuiltSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBuiltSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBuiltSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcBuiltSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBuiltSystem::declaration() const { return *IFC4X3_RC4_IfcBuiltSystem_type; } @@ -14151,7 +14151,7 @@ Ifc4x3_rc4::IfcBuiltSystem::IfcBuiltSystem(std::string v1_GlobalId, ::Ifc4x3_rc4 // Function implementations for IfcBurner boost::optional< ::Ifc4x3_rc4::IfcBurnerTypeEnum::Value > Ifc4x3_rc4::IfcBurner::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcBurnerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBurnerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcBurnerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcBurner::declaration() const { return *IFC4X3_RC4_IfcBurner_type; } @@ -14179,7 +14179,7 @@ void Ifc4x3_rc4::IfcCShapeProfileDef::setWallThickness(double v) { {IfcWrite::If double Ifc4x3_rc4::IfcCShapeProfileDef::Girth() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcCShapeProfileDef::setGirth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcCShapeProfileDef::InternalFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCShapeProfileDef::declaration() const { return *IFC4X3_RC4_IfcCShapeProfileDef_type; } @@ -14189,7 +14189,7 @@ Ifc4x3_rc4::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4x3_rc4::IfcProfileTyp // Function implementations for IfcCableCarrierFitting boost::optional< ::Ifc4x3_rc4::IfcCableCarrierFittingTypeEnum::Value > Ifc4x3_rc4::IfcCableCarrierFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCableCarrierFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCableCarrierFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCableCarrierFitting::declaration() const { return *IFC4X3_RC4_IfcCableCarrierFitting_type; } @@ -14209,7 +14209,7 @@ Ifc4x3_rc4::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v // Function implementations for IfcCableCarrierSegment boost::optional< ::Ifc4x3_rc4::IfcCableCarrierSegmentTypeEnum::Value > Ifc4x3_rc4::IfcCableCarrierSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCableCarrierSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCableCarrierSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCableCarrierSegment::declaration() const { return *IFC4X3_RC4_IfcCableCarrierSegment_type; } @@ -14229,7 +14229,7 @@ Ifc4x3_rc4::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v // Function implementations for IfcCableFitting boost::optional< ::Ifc4x3_rc4::IfcCableFittingTypeEnum::Value > Ifc4x3_rc4::IfcCableFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCableFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCableFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCableFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCableFitting::declaration() const { return *IFC4X3_RC4_IfcCableFitting_type; } @@ -14249,7 +14249,7 @@ Ifc4x3_rc4::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, :: // Function implementations for IfcCableSegment boost::optional< ::Ifc4x3_rc4::IfcCableSegmentTypeEnum::Value > Ifc4x3_rc4::IfcCableSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCableSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCableSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCableSegment::declaration() const { return *IFC4X3_RC4_IfcCableSegment_type; } @@ -14269,7 +14269,7 @@ Ifc4x3_rc4::IfcCableSegmentType::IfcCableSegmentType(std::string v1_GlobalId, :: // Function implementations for IfcCaissonFoundation boost::optional< ::Ifc4x3_rc4::IfcCaissonFoundationTypeEnum::Value > Ifc4x3_rc4::IfcCaissonFoundation::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCaissonFoundationTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCaissonFoundationTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCaissonFoundationTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCaissonFoundation::declaration() const { return *IFC4X3_RC4_IfcCaissonFoundation_type; } @@ -14309,7 +14309,7 @@ Ifc4x3_rc4::IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricReprese std::vector< std::vector< double > > Ifc4x3_rc4::IfcCartesianPointList2D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x3_rc4::IfcCartesianPointList2D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcCartesianPointList2D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCartesianPointList2D::declaration() const { return *IFC4X3_RC4_IfcCartesianPointList2D_type; } @@ -14321,7 +14321,7 @@ Ifc4x3_rc4::IfcCartesianPointList2D::IfcCartesianPointList2D(std::vector< std::v std::vector< std::vector< double > > Ifc4x3_rc4::IfcCartesianPointList3D::CoordList() const { std::vector< std::vector< double > > v = *data_->getArgument(0); return v; } void Ifc4x3_rc4::IfcCartesianPointList3D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcCartesianPointList3D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCartesianPointList3D::declaration() const { return *IFC4X3_RC4_IfcCartesianPointList3D_type; } @@ -14337,7 +14337,7 @@ void Ifc4x3_rc4::IfcCartesianTransformationOperator::setAxis2(::Ifc4x3_rc4::IfcD ::Ifc4x3_rc4::IfcCartesianPoint* Ifc4x3_rc4::IfcCartesianTransformationOperator::LocalOrigin() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc4::IfcCartesianPoint>(true); } void Ifc4x3_rc4::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc4x3_rc4::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcCartesianTransformationOperator::Scale() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCartesianTransformationOperator::declaration() const { return *IFC4X3_RC4_IfcCartesianTransformationOperator_type; } @@ -14355,7 +14355,7 @@ Ifc4x3_rc4::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOper // Function implementations for IfcCartesianTransformationOperator2DnonUniform boost::optional< double > Ifc4x3_rc4::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IFC4X3_RC4_IfcCartesianTransformationOperator2DnonUniform_type; } @@ -14375,9 +14375,9 @@ Ifc4x3_rc4::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOper // Function implementations for IfcCartesianTransformationOperator3DnonUniform boost::optional< double > Ifc4x3_rc4::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IFC4X3_RC4_IfcCartesianTransformationOperator3DnonUniform_type; } @@ -14397,7 +14397,7 @@ Ifc4x3_rc4::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4x3_rc4::IfcPr // Function implementations for IfcChiller boost::optional< ::Ifc4x3_rc4::IfcChillerTypeEnum::Value > Ifc4x3_rc4::IfcChiller::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcChillerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcChillerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcChillerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcChiller::declaration() const { return *IFC4X3_RC4_IfcChiller_type; } @@ -14417,7 +14417,7 @@ Ifc4x3_rc4::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4x3_rc4 // Function implementations for IfcChimney boost::optional< ::Ifc4x3_rc4::IfcChimneyTypeEnum::Value > Ifc4x3_rc4::IfcChimney::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcChimneyTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcChimneyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcChimneyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcChimney::declaration() const { return *IFC4X3_RC4_IfcChimney_type; } @@ -14483,19 +14483,19 @@ Ifc4x3_rc4::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, :: // Function implementations for IfcClassification boost::optional< std::string > Ifc4x3_rc4::IfcClassification::Source() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcClassification::Edition() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcClassification::EditionDate() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::string Ifc4x3_rc4::IfcClassification::Name() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcClassification::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcClassification::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcClassification::Location() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcClassification::ReferenceTokens() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc4::IfcRelAssociatesClassification::list::ptr Ifc4x3_rc4::IfcClassification::ClassificationForObjects() const { return data_->getInverse(IFC4X3_RC4_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x3_rc4::IfcClassificationReference::list::ptr Ifc4x3_rc4::IfcClassification::HasReferences() const { return data_->getInverse(IFC4X3_RC4_IfcClassificationReference_type, 3)->as(); } @@ -14509,9 +14509,9 @@ Ifc4x3_rc4::IfcClassification::IfcClassification(boost::optional< std::string > ::Ifc4x3_rc4::IfcClassificationReferenceSelect* Ifc4x3_rc4::IfcClassificationReference::ReferencedSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcClassificationReferenceSelect>(true); } void Ifc4x3_rc4::IfcClassificationReference::setReferencedSource(::Ifc4x3_rc4::IfcClassificationReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcClassificationReference::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcClassificationReference::Sort() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcRelAssociatesClassification::list::ptr Ifc4x3_rc4::IfcClassificationReference::ClassificationRefForObjects() const { return data_->getInverse(IFC4X3_RC4_IfcRelAssociatesClassification_type, 5)->as(); } ::Ifc4x3_rc4::IfcClassificationReference::list::ptr Ifc4x3_rc4::IfcClassificationReference::HasReferences() const { return data_->getInverse(IFC4X3_RC4_IfcClassificationReference_type, 3)->as(); } @@ -14541,7 +14541,7 @@ Ifc4x3_rc4::IfcClothoid::IfcClothoid(::Ifc4x3_rc4::IfcAxis2Placement* v1_Positio // Function implementations for IfcCoil boost::optional< ::Ifc4x3_rc4::IfcCoilTypeEnum::Value > Ifc4x3_rc4::IfcCoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCoil::declaration() const { return *IFC4X3_RC4_IfcCoil_type; } @@ -14585,7 +14585,7 @@ Ifc4x3_rc4::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double // Function implementations for IfcColourSpecification boost::optional< std::string > Ifc4x3_rc4::IfcColourSpecification::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcColourSpecification::declaration() const { return *IFC4X3_RC4_IfcColourSpecification_type; } @@ -14595,7 +14595,7 @@ Ifc4x3_rc4::IfcColourSpecification::IfcColourSpecification(boost::optional< std: // Function implementations for IfcColumn boost::optional< ::Ifc4x3_rc4::IfcColumnTypeEnum::Value > Ifc4x3_rc4::IfcColumn::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcColumnTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcColumnTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcColumnTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcColumn::declaration() const { return *IFC4X3_RC4_IfcColumn_type; } @@ -14623,7 +14623,7 @@ Ifc4x3_rc4::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4x3_rc4:: // Function implementations for IfcCommunicationsAppliance boost::optional< ::Ifc4x3_rc4::IfcCommunicationsApplianceTypeEnum::Value > Ifc4x3_rc4::IfcCommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCommunicationsAppliance::declaration() const { return *IFC4X3_RC4_IfcCommunicationsAppliance_type; } @@ -14655,11 +14655,11 @@ Ifc4x3_rc4::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::o // Function implementations for IfcComplexPropertyTemplate boost::optional< std::string > Ifc4x3_rc4::IfcComplexPropertyTemplate::UsageName() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< ::Ifc4x3_rc4::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4x3_rc4::IfcComplexPropertyTemplate::TemplateType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcComplexPropertyTemplateTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc4::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc4::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc4::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPropertyTemplate >::ptr > Ifc4x3_rc4::IfcComplexPropertyTemplate::HasPropertyTemplates() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc4::IfcPropertyTemplate >(); } -void Ifc4x3_rc4::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcComplexPropertyTemplate::declaration() const { return *IFC4X3_RC4_IfcComplexPropertyTemplate_type; } @@ -14703,7 +14703,7 @@ Ifc4x3_rc4::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4x3_rc4::Ifc aggregate_of< ::Ifc4x3_rc4::IfcProfileDef >::ptr Ifc4x3_rc4::IfcCompositeProfileDef::Profiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc4::IfcProfileDef >(); } void Ifc4x3_rc4::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc4x3_rc4::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcCompositeProfileDef::Label() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCompositeProfileDef::declaration() const { return *IFC4X3_RC4_IfcCompositeProfileDef_type; } @@ -14713,7 +14713,7 @@ Ifc4x3_rc4::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4x3_rc4::IfcProf // Function implementations for IfcCompressor boost::optional< ::Ifc4x3_rc4::IfcCompressorTypeEnum::Value > Ifc4x3_rc4::IfcCompressor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCompressorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCompressorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCompressorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCompressor::declaration() const { return *IFC4X3_RC4_IfcCompressor_type; } @@ -14733,7 +14733,7 @@ Ifc4x3_rc4::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCondenser boost::optional< ::Ifc4x3_rc4::IfcCondenserTypeEnum::Value > Ifc4x3_rc4::IfcCondenser::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCondenserTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCondenserTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCondenserTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCondenser::declaration() const { return *IFC4X3_RC4_IfcCondenser_type; } @@ -14793,11 +14793,11 @@ Ifc4x3_rc4::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEnt // Function implementations for IfcConnectionPointEccentricity boost::optional< double > Ifc4x3_rc4::IfcConnectionPointEccentricity::EccentricityInX() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcConnectionPointEccentricity::EccentricityInY() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcConnectionPointEccentricity::EccentricityInZ() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcConnectionPointEccentricity::declaration() const { return *IFC4X3_RC4_IfcConnectionPointEccentricity_type; } @@ -14845,17 +14845,17 @@ Ifc4x3_rc4::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4x3_rc std::string Ifc4x3_rc4::IfcConstraint::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc4::IfcConstraint::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcConstraint::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc4::IfcConstraintEnum::Value Ifc4x3_rc4::IfcConstraint::ConstraintGrade() const { return ::Ifc4x3_rc4::IfcConstraintEnum::FromString(*data_->getArgument(2)); } void Ifc4x3_rc4::IfcConstraint::setConstraintGrade(::Ifc4x3_rc4::IfcConstraintEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcConstraintEnum::ToString(v)));data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcConstraint::ConstraintSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc4::IfcActorSelect* Ifc4x3_rc4::IfcConstraint::CreatingActor() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc4::IfcActorSelect>(true); } void Ifc4x3_rc4::IfcConstraint::setCreatingActor(::Ifc4x3_rc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcConstraint::CreationTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcConstraint::UserDefinedGrade() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc4::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc4::IfcConstraint::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC4_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc4::IfcResourceConstraintRelationship::list::ptr Ifc4x3_rc4::IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(IFC4X3_RC4_IfcResourceConstraintRelationship_type, 2)->as(); } @@ -14867,7 +14867,7 @@ Ifc4x3_rc4::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< s // Function implementations for IfcConstructionEquipmentResource boost::optional< ::Ifc4x3_rc4::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4x3_rc4::IfcConstructionEquipmentResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcConstructionEquipmentResource::declaration() const { return *IFC4X3_RC4_IfcConstructionEquipmentResource_type; } @@ -14887,7 +14887,7 @@ Ifc4x3_rc4::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResour // Function implementations for IfcConstructionMaterialResource boost::optional< ::Ifc4x3_rc4::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4x3_rc4::IfcConstructionMaterialResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcConstructionMaterialResource::declaration() const { return *IFC4X3_RC4_IfcConstructionMaterialResource_type; } @@ -14907,7 +14907,7 @@ Ifc4x3_rc4::IfcConstructionMaterialResourceType::IfcConstructionMaterialResource // Function implementations for IfcConstructionProductResource boost::optional< ::Ifc4x3_rc4::IfcConstructionProductResourceTypeEnum::Value > Ifc4x3_rc4::IfcConstructionProductResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcConstructionProductResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcConstructionProductResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcConstructionProductResource::declaration() const { return *IFC4X3_RC4_IfcConstructionProductResource_type; } @@ -14929,7 +14929,7 @@ Ifc4x3_rc4::IfcConstructionProductResourceType::IfcConstructionProductResourceTy ::Ifc4x3_rc4::IfcResourceTime* Ifc4x3_rc4::IfcConstructionResource::Usage() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc4::IfcResourceTime>(true); } void Ifc4x3_rc4::IfcConstructionResource::setUsage(::Ifc4x3_rc4::IfcResourceTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAppliedValue >::ptr > Ifc4x3_rc4::IfcConstructionResource::BaseCosts() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc4::IfcAppliedValue >(); } -void Ifc4x3_rc4::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcPhysicalQuantity* Ifc4x3_rc4::IfcConstructionResource::BaseQuantity() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc4::IfcPhysicalQuantity>(true); } void Ifc4x3_rc4::IfcConstructionResource::setBaseQuantity(::Ifc4x3_rc4::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -14941,7 +14941,7 @@ Ifc4x3_rc4::IfcConstructionResource::IfcConstructionResource(std::string v1_Glob // Function implementations for IfcConstructionResourceType boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAppliedValue >::ptr > Ifc4x3_rc4::IfcConstructionResourceType::BaseCosts() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc4::IfcAppliedValue >(); } -void Ifc4x3_rc4::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } ::Ifc4x3_rc4::IfcPhysicalQuantity* Ifc4x3_rc4::IfcConstructionResourceType::BaseQuantity() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc4::IfcPhysicalQuantity>(true); } void Ifc4x3_rc4::IfcConstructionResourceType::setBaseQuantity(::Ifc4x3_rc4::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -14953,13 +14953,13 @@ Ifc4x3_rc4::IfcConstructionResourceType::IfcConstructionResourceType(std::string // Function implementations for IfcContext boost::optional< std::string > Ifc4x3_rc4::IfcContext::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcContext::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcContext::Phase() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcRepresentationContext >::ptr > Ifc4x3_rc4::IfcContext::RepresentationContexts() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc4::IfcRepresentationContext >(); } -void Ifc4x3_rc4::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcUnitAssignment* Ifc4x3_rc4::IfcContext::UnitsInContext() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc4::IfcUnitAssignment>(true); } void Ifc4x3_rc4::IfcContext::setUnitsInContext(::Ifc4x3_rc4::IfcUnitAssignment* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -14984,7 +14984,7 @@ Ifc4x3_rc4::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4x3_rc4::IfcDi // Function implementations for IfcControl boost::optional< std::string > Ifc4x3_rc4::IfcControl::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcRelAssignsToControl::list::ptr Ifc4x3_rc4::IfcControl::Controls() const { return data_->getInverse(IFC4X3_RC4_IfcRelAssignsToControl_type, 6)->as(); } @@ -14995,7 +14995,7 @@ Ifc4x3_rc4::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwn // Function implementations for IfcController boost::optional< ::Ifc4x3_rc4::IfcControllerTypeEnum::Value > Ifc4x3_rc4::IfcController::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcControllerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcControllerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcControllerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcController::declaration() const { return *IFC4X3_RC4_IfcController_type; } @@ -15038,7 +15038,7 @@ Ifc4x3_rc4::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(: // Function implementations for IfcConveyorSegment boost::optional< ::Ifc4x3_rc4::IfcConveyorSegmentTypeEnum::Value > Ifc4x3_rc4::IfcConveyorSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcConveyorSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcConveyorSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcConveyorSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcConveyorSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcConveyorSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcConveyorSegment::declaration() const { return *IFC4X3_RC4_IfcConveyorSegment_type; } @@ -15058,7 +15058,7 @@ Ifc4x3_rc4::IfcConveyorSegmentType::IfcConveyorSegmentType(std::string v1_Global // Function implementations for IfcCooledBeam boost::optional< ::Ifc4x3_rc4::IfcCooledBeamTypeEnum::Value > Ifc4x3_rc4::IfcCooledBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCooledBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCooledBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCooledBeam::declaration() const { return *IFC4X3_RC4_IfcCooledBeam_type; } @@ -15078,7 +15078,7 @@ Ifc4x3_rc4::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcCoolingTower boost::optional< ::Ifc4x3_rc4::IfcCoolingTowerTypeEnum::Value > Ifc4x3_rc4::IfcCoolingTower::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCoolingTowerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCoolingTowerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCoolingTower::declaration() const { return *IFC4X3_RC4_IfcCoolingTower_type; } @@ -15112,11 +15112,11 @@ Ifc4x3_rc4::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4x3_rc4::IfcCoor std::string Ifc4x3_rc4::IfcCoordinateReferenceSystem::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc4::IfcCoordinateReferenceSystem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcCoordinateReferenceSystem::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcCoordinateReferenceSystem::VerticalDatum() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc4::IfcCoordinateOperation::list::ptr Ifc4x3_rc4::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return data_->getInverse(IFC4X3_RC4_IfcCoordinateOperation_type, 0)->as(); } @@ -15129,7 +15129,7 @@ Ifc4x3_rc4::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(std::stri double Ifc4x3_rc4::IfcCosine::CosineTerm() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcCosine::setCosineTerm(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcCosine::ConstantTerm() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcCosine::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcCosine::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCosine::declaration() const { return *IFC4X3_RC4_IfcCosine_type; } @@ -15139,11 +15139,11 @@ Ifc4x3_rc4::IfcCosine::IfcCosine(::Ifc4x3_rc4::IfcAxis2Placement* v1_Position, d // Function implementations for IfcCostItem boost::optional< ::Ifc4x3_rc4::IfcCostItemTypeEnum::Value > Ifc4x3_rc4::IfcCostItem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCostItemTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc4::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCostItemTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCostItemTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcCostValue >::ptr > Ifc4x3_rc4::IfcCostItem::CostValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc4::IfcCostValue >(); } -void Ifc4x3_rc4::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPhysicalQuantity >::ptr > Ifc4x3_rc4::IfcCostItem::CostQuantities() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc4::IfcPhysicalQuantity >(); } -void Ifc4x3_rc4::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCostItem::declaration() const { return *IFC4X3_RC4_IfcCostItem_type; } @@ -15153,13 +15153,13 @@ Ifc4x3_rc4::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcCostSchedule boost::optional< ::Ifc4x3_rc4::IfcCostScheduleTypeEnum::Value > Ifc4x3_rc4::IfcCostSchedule::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCostScheduleTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc4::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCostScheduleTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCostScheduleTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcCostSchedule::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcCostSchedule::SubmittedOn() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcCostSchedule::UpdateDate() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCostSchedule::declaration() const { return *IFC4X3_RC4_IfcCostSchedule_type; } @@ -15177,7 +15177,7 @@ Ifc4x3_rc4::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, b // Function implementations for IfcCourse boost::optional< ::Ifc4x3_rc4::IfcCourseTypeEnum::Value > Ifc4x3_rc4::IfcCourse::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCourseTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCourseTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCourseTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCourseTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCourseTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCourse::declaration() const { return *IFC4X3_RC4_IfcCourse_type; } @@ -15197,7 +15197,7 @@ Ifc4x3_rc4::IfcCourseType::IfcCourseType(std::string v1_GlobalId, ::Ifc4x3_rc4:: // Function implementations for IfcCovering boost::optional< ::Ifc4x3_rc4::IfcCoveringTypeEnum::Value > Ifc4x3_rc4::IfcCovering::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCoveringTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCoveringTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcRelCoversSpaces::list::ptr Ifc4x3_rc4::IfcCovering::CoversSpaces() const { return data_->getInverse(IFC4X3_RC4_IfcRelCoversSpaces_type, 5)->as(); } ::Ifc4x3_rc4::IfcRelCoversBldgElements::list::ptr Ifc4x3_rc4::IfcCovering::CoversElements() const { return data_->getInverse(IFC4X3_RC4_IfcRelCoversBldgElements_type, 5)->as(); } @@ -15219,7 +15219,7 @@ Ifc4x3_rc4::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcCrewResource boost::optional< ::Ifc4x3_rc4::IfcCrewResourceTypeEnum::Value > Ifc4x3_rc4::IfcCrewResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCrewResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCrewResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCrewResource::declaration() const { return *IFC4X3_RC4_IfcCrewResource_type; } @@ -15265,7 +15265,7 @@ void Ifc4x3_rc4::IfcCurrencyRelationship::setRelatedMonetaryUnit(::Ifc4x3_rc4::I double Ifc4x3_rc4::IfcCurrencyRelationship::ExchangeRate() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc4::IfcCurrencyRelationship::setExchangeRate(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcCurrencyRelationship::RateDateTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcLibraryInformation* Ifc4x3_rc4::IfcCurrencyRelationship::RateSource() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcLibraryInformation>(true); } void Ifc4x3_rc4::IfcCurrencyRelationship::setRateSource(::Ifc4x3_rc4::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -15277,7 +15277,7 @@ Ifc4x3_rc4::IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< st // Function implementations for IfcCurtainWall boost::optional< ::Ifc4x3_rc4::IfcCurtainWallTypeEnum::Value > Ifc4x3_rc4::IfcCurtainWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCurtainWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCurtainWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCurtainWall::declaration() const { return *IFC4X3_RC4_IfcCurtainWall_type; } @@ -15355,7 +15355,7 @@ void Ifc4x3_rc4::IfcCurveStyle::setCurveWidth(::Ifc4x3_rc4::IfcSizeSelect* v) { ::Ifc4x3_rc4::IfcColour* Ifc4x3_rc4::IfcCurveStyle::CurveColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcColour>(true); } void Ifc4x3_rc4::IfcCurveStyle::setCurveColour(::Ifc4x3_rc4::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x3_rc4::IfcCurveStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcCurveStyle::declaration() const { return *IFC4X3_RC4_IfcCurveStyle_type; } @@ -15365,7 +15365,7 @@ Ifc4x3_rc4::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, // Function implementations for IfcCurveStyleFont boost::optional< std::string > Ifc4x3_rc4::IfcCurveStyleFont::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } aggregate_of< ::Ifc4x3_rc4::IfcCurveStyleFontPattern >::ptr Ifc4x3_rc4::IfcCurveStyleFont::PatternList() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc4::IfcCurveStyleFontPattern >(); } void Ifc4x3_rc4::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc4x3_rc4::IfcCurveStyleFontPattern >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } @@ -15377,7 +15377,7 @@ Ifc4x3_rc4::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > // Function implementations for IfcCurveStyleFontAndScaling boost::optional< std::string > Ifc4x3_rc4::IfcCurveStyleFontAndScaling::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc4::IfcCurveStyleFontSelect* Ifc4x3_rc4::IfcCurveStyleFontAndScaling::CurveFont() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc4::IfcCurveStyleFontSelect>(true); } void Ifc4x3_rc4::IfcCurveStyleFontAndScaling::setCurveFont(::Ifc4x3_rc4::IfcCurveStyleFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } double Ifc4x3_rc4::IfcCurveStyleFontAndScaling::CurveFontScaling() const { double v = *data_->getArgument(2); return v; } @@ -15413,7 +15413,7 @@ Ifc4x3_rc4::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4x3_rc4::IfcAxis2P // Function implementations for IfcDamper boost::optional< ::Ifc4x3_rc4::IfcDamperTypeEnum::Value > Ifc4x3_rc4::IfcDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDamper::declaration() const { return *IFC4X3_RC4_IfcDamper_type; } @@ -15453,7 +15453,7 @@ void Ifc4x3_rc4::IfcDerivedProfileDef::setParentProfile(::Ifc4x3_rc4::IfcProfile ::Ifc4x3_rc4::IfcCartesianTransformationOperator2D* Ifc4x3_rc4::IfcDerivedProfileDef::Operator() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcCartesianTransformationOperator2D>(true); } void Ifc4x3_rc4::IfcDerivedProfileDef::setOperator(::Ifc4x3_rc4::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDerivedProfileDef::Label() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDerivedProfileDef::declaration() const { return *IFC4X3_RC4_IfcDerivedProfileDef_type; } @@ -15467,7 +15467,7 @@ void Ifc4x3_rc4::IfcDerivedUnit::setElements(aggregate_of< ::Ifc4x3_rc4::IfcDeri ::Ifc4x3_rc4::IfcDerivedUnitEnum::Value Ifc4x3_rc4::IfcDerivedUnit::UnitType() const { return ::Ifc4x3_rc4::IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); } void Ifc4x3_rc4::IfcDerivedUnit::setUnitType(::Ifc4x3_rc4::IfcDerivedUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcDerivedUnitEnum::ToString(v)));data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDerivedUnit::UserDefinedType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDerivedUnit::declaration() const { return *IFC4X3_RC4_IfcDerivedUnit_type; } @@ -15543,7 +15543,7 @@ Ifc4x3_rc4::IfcDirectrixDerivedReferenceSweptAreaSolid::IfcDirectrixDerivedRefer // Function implementations for IfcDiscreteAccessory boost::optional< ::Ifc4x3_rc4::IfcDiscreteAccessoryTypeEnum::Value > Ifc4x3_rc4::IfcDiscreteAccessory::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDiscreteAccessoryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDiscreteAccessoryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDiscreteAccessory::declaration() const { return *IFC4X3_RC4_IfcDiscreteAccessory_type; } @@ -15563,7 +15563,7 @@ Ifc4x3_rc4::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_Gl // Function implementations for IfcDistributionBoard boost::optional< ::Ifc4x3_rc4::IfcDistributionBoardTypeEnum::Value > Ifc4x3_rc4::IfcDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDistributionBoard::declaration() const { return *IFC4X3_RC4_IfcDistributionBoard_type; } @@ -15583,7 +15583,7 @@ Ifc4x3_rc4::IfcDistributionBoardType::IfcDistributionBoardType(std::string v1_Gl // Function implementations for IfcDistributionChamberElement boost::optional< ::Ifc4x3_rc4::IfcDistributionChamberElementTypeEnum::Value > Ifc4x3_rc4::IfcDistributionChamberElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDistributionChamberElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDistributionChamberElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDistributionChamberElement::declaration() const { return *IFC4X3_RC4_IfcDistributionChamberElement_type; } @@ -15662,11 +15662,11 @@ Ifc4x3_rc4::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std:: // Function implementations for IfcDistributionPort boost::optional< ::Ifc4x3_rc4::IfcFlowDirectionEnum::Value > Ifc4x3_rc4::IfcDistributionPort::FlowDirection() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc4::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_rc4::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFlowDirectionEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_rc4::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFlowDirectionEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc4::IfcDistributionPortTypeEnum::Value > Ifc4x3_rc4::IfcDistributionPort::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDistributionPortTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDistributionPortTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDistributionPortTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc4::IfcDistributionSystemEnum::Value > Ifc4x3_rc4::IfcDistributionPort::SystemType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDistributionSystemEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_rc4::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_rc4::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDistributionPort::declaration() const { return *IFC4X3_RC4_IfcDistributionPort_type; } @@ -15676,9 +15676,9 @@ Ifc4x3_rc4::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, :: // Function implementations for IfcDistributionSystem boost::optional< std::string > Ifc4x3_rc4::IfcDistributionSystem::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< ::Ifc4x3_rc4::IfcDistributionSystemEnum::Value > Ifc4x3_rc4::IfcDistributionSystem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDistributionSystemEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc4::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDistributionSystem::declaration() const { return *IFC4X3_RC4_IfcDistributionSystem_type; } @@ -15692,35 +15692,35 @@ void Ifc4x3_rc4::IfcDocumentInformation::setIdentification(std::string v) { {Ifc std::string Ifc4x3_rc4::IfcDocumentInformation::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcDocumentInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::Location() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::Purpose() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::IntendedUse() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::Scope() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::Revision() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcActorSelect* Ifc4x3_rc4::IfcDocumentInformation::DocumentOwner() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc4::IfcActorSelect>(true); } void Ifc4x3_rc4::IfcDocumentInformation::setDocumentOwner(::Ifc4x3_rc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc4::IfcDocumentInformation::Editors() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::CreationTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::LastRevisionTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::ElectronicFormat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::ValidFrom() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformation::ValidUntil() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc4::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< ::Ifc4x3_rc4::IfcDocumentConfidentialityEnum::Value > Ifc4x3_rc4::IfcDocumentInformation::Confidentiality() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); } -void Ifc4x3_rc4::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_rc4::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDocumentConfidentialityEnum::ToString(*v)));data_->setArgument(15,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_rc4::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDocumentConfidentialityEnum::ToString(*v)));}data_->setArgument(15,attr);} } boost::optional< ::Ifc4x3_rc4::IfcDocumentStatusEnum::Value > Ifc4x3_rc4::IfcDocumentInformation::Status() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); } -void Ifc4x3_rc4::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_rc4::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDocumentStatusEnum::ToString(*v)));data_->setArgument(16,attr);} } +void Ifc4x3_rc4::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_rc4::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDocumentStatusEnum::ToString(*v)));}data_->setArgument(16,attr);} } ::Ifc4x3_rc4::IfcRelAssociatesDocument::list::ptr Ifc4x3_rc4::IfcDocumentInformation::DocumentInfoForObjects() const { return data_->getInverse(IFC4X3_RC4_IfcRelAssociatesDocument_type, 5)->as(); } ::Ifc4x3_rc4::IfcDocumentReference::list::ptr Ifc4x3_rc4::IfcDocumentInformation::HasDocumentReferences() const { return data_->getInverse(IFC4X3_RC4_IfcDocumentReference_type, 4)->as(); } @@ -15738,7 +15738,7 @@ void Ifc4x3_rc4::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc4x aggregate_of< ::Ifc4x3_rc4::IfcDocumentInformation >::ptr Ifc4x3_rc4::IfcDocumentInformationRelationship::RelatedDocuments() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc4::IfcDocumentInformation >(); } void Ifc4x3_rc4::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc4x3_rc4::IfcDocumentInformation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDocumentInformationRelationship::RelationshipType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDocumentInformationRelationship::declaration() const { return *IFC4X3_RC4_IfcDocumentInformationRelationship_type; } @@ -15748,7 +15748,7 @@ Ifc4x3_rc4::IfcDocumentInformationRelationship::IfcDocumentInformationRelationsh // Function implementations for IfcDocumentReference boost::optional< std::string > Ifc4x3_rc4::IfcDocumentReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc4::IfcDocumentInformation* Ifc4x3_rc4::IfcDocumentReference::ReferencedDocument() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc4::IfcDocumentInformation>(true); } void Ifc4x3_rc4::IfcDocumentReference::setReferencedDocument(::Ifc4x3_rc4::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -15761,15 +15761,15 @@ Ifc4x3_rc4::IfcDocumentReference::IfcDocumentReference(boost::optional< std::str // Function implementations for IfcDoor boost::optional< double > Ifc4x3_rc4::IfcDoor::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoor::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc4::IfcDoorTypeEnum::Value > Ifc4x3_rc4::IfcDoor::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDoorTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDoorTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDoorTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc4::IfcDoorTypeOperationEnum::Value > Ifc4x3_rc4::IfcDoor::OperationType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc4::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_rc4::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDoorTypeOperationEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_rc4::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDoorTypeOperationEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDoor::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDoor::declaration() const { return *IFC4X3_RC4_IfcDoor_type; } @@ -15779,31 +15779,31 @@ Ifc4x3_rc4::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHist // Function implementations for IfcDoorLiningProperties boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::ThresholdDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::ThresholdThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::TransomThickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::TransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::LiningOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::ThresholdOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::CasingThickness() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::CasingDepth() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } ::Ifc4x3_rc4::IfcShapeAspect* Ifc4x3_rc4::IfcDoorLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc4x3_rc4::IfcShapeAspect>(true); } void Ifc4x3_rc4::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc4x3_rc4::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc4::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc4::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDoorLiningProperties::declaration() const { return *IFC4X3_RC4_IfcDoorLiningProperties_type; } @@ -15813,11 +15813,11 @@ Ifc4x3_rc4::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_Glob // Function implementations for IfcDoorPanelProperties boost::optional< double > Ifc4x3_rc4::IfcDoorPanelProperties::PanelDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc4::IfcDoorPanelOperationEnum::Value Ifc4x3_rc4::IfcDoorPanelProperties::PanelOperation() const { return ::Ifc4x3_rc4::IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc4::IfcDoorPanelProperties::setPanelOperation(::Ifc4x3_rc4::IfcDoorPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcDoorPanelOperationEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcDoorPanelProperties::PanelWidth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc4::IfcDoorPanelPositionEnum::Value Ifc4x3_rc4::IfcDoorPanelProperties::PanelPosition() const { return ::Ifc4x3_rc4::IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc4::IfcDoorPanelProperties::setPanelPosition(::Ifc4x3_rc4::IfcDoorPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcDoorPanelPositionEnum::ToString(v)));data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcShapeAspect* Ifc4x3_rc4::IfcDoorPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc4::IfcShapeAspect>(true); } @@ -15859,9 +15859,9 @@ void Ifc4x3_rc4::IfcDoorType::setPredefinedType(::Ifc4x3_rc4::IfcDoorTypeEnum::V ::Ifc4x3_rc4::IfcDoorTypeOperationEnum::Value Ifc4x3_rc4::IfcDoorType::OperationType() const { return ::Ifc4x3_rc4::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc4::IfcDoorType::setOperationType(::Ifc4x3_rc4::IfcDoorTypeOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcDoorTypeOperationEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x3_rc4::IfcDoorType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcDoorType::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDoorType::declaration() const { return *IFC4X3_RC4_IfcDoorType_type; } @@ -15887,7 +15887,7 @@ Ifc4x3_rc4::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(s // Function implementations for IfcDuctFitting boost::optional< ::Ifc4x3_rc4::IfcDuctFittingTypeEnum::Value > Ifc4x3_rc4::IfcDuctFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDuctFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDuctFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDuctFitting::declaration() const { return *IFC4X3_RC4_IfcDuctFitting_type; } @@ -15907,7 +15907,7 @@ Ifc4x3_rc4::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcDuctSegment boost::optional< ::Ifc4x3_rc4::IfcDuctSegmentTypeEnum::Value > Ifc4x3_rc4::IfcDuctSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDuctSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDuctSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDuctSegment::declaration() const { return *IFC4X3_RC4_IfcDuctSegment_type; } @@ -15927,7 +15927,7 @@ Ifc4x3_rc4::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::If // Function implementations for IfcDuctSilencer boost::optional< ::Ifc4x3_rc4::IfcDuctSilencerTypeEnum::Value > Ifc4x3_rc4::IfcDuctSilencer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDuctSilencerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDuctSilencerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcDuctSilencer::declaration() const { return *IFC4X3_RC4_IfcDuctSilencer_type; } @@ -15947,7 +15947,7 @@ Ifc4x3_rc4::IfcDuctSilencerType::IfcDuctSilencerType(std::string v1_GlobalId, :: // Function implementations for IfcEarthworksCut boost::optional< ::Ifc4x3_rc4::IfcEarthworksCutTypeEnum::Value > Ifc4x3_rc4::IfcEarthworksCut::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcEarthworksCutTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEarthworksCutTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEarthworksCutTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEarthworksCutTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEarthworksCutTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcEarthworksCut::declaration() const { return *IFC4X3_RC4_IfcEarthworksCut_type; } @@ -15965,7 +15965,7 @@ Ifc4x3_rc4::IfcEarthworksElement::IfcEarthworksElement(std::string v1_GlobalId, // Function implementations for IfcEarthworksFill boost::optional< ::Ifc4x3_rc4::IfcEarthworksFillTypeEnum::Value > Ifc4x3_rc4::IfcEarthworksFill::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcEarthworksFillTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEarthworksFillTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEarthworksFillTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEarthworksFillTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEarthworksFillTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcEarthworksFill::declaration() const { return *IFC4X3_RC4_IfcEarthworksFill_type; } @@ -16009,7 +16009,7 @@ Ifc4x3_rc4::IfcEdgeLoop::IfcEdgeLoop(aggregate_of< ::Ifc4x3_rc4::IfcOrientedEdge // Function implementations for IfcElectricAppliance boost::optional< ::Ifc4x3_rc4::IfcElectricApplianceTypeEnum::Value > Ifc4x3_rc4::IfcElectricAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcElectricAppliance::declaration() const { return *IFC4X3_RC4_IfcElectricAppliance_type; } @@ -16029,7 +16029,7 @@ Ifc4x3_rc4::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_Gl // Function implementations for IfcElectricDistributionBoard boost::optional< ::Ifc4x3_rc4::IfcElectricDistributionBoardTypeEnum::Value > Ifc4x3_rc4::IfcElectricDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcElectricDistributionBoard::declaration() const { return *IFC4X3_RC4_IfcElectricDistributionBoard_type; } @@ -16049,7 +16049,7 @@ Ifc4x3_rc4::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(s // Function implementations for IfcElectricFlowStorageDevice boost::optional< ::Ifc4x3_rc4::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4x3_rc4::IfcElectricFlowStorageDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcElectricFlowStorageDevice::declaration() const { return *IFC4X3_RC4_IfcElectricFlowStorageDevice_type; } @@ -16069,7 +16069,7 @@ Ifc4x3_rc4::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(s // Function implementations for IfcElectricFlowTreatmentDevice boost::optional< ::Ifc4x3_rc4::IfcElectricFlowTreatmentDeviceTypeEnum::Value > Ifc4x3_rc4::IfcElectricFlowTreatmentDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcElectricFlowTreatmentDevice::declaration() const { return *IFC4X3_RC4_IfcElectricFlowTreatmentDevice_type; } @@ -16089,7 +16089,7 @@ Ifc4x3_rc4::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceTy // Function implementations for IfcElectricGenerator boost::optional< ::Ifc4x3_rc4::IfcElectricGeneratorTypeEnum::Value > Ifc4x3_rc4::IfcElectricGenerator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricGeneratorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricGeneratorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcElectricGenerator::declaration() const { return *IFC4X3_RC4_IfcElectricGenerator_type; } @@ -16109,7 +16109,7 @@ Ifc4x3_rc4::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_Gl // Function implementations for IfcElectricMotor boost::optional< ::Ifc4x3_rc4::IfcElectricMotorTypeEnum::Value > Ifc4x3_rc4::IfcElectricMotor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricMotorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricMotorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcElectricMotor::declaration() const { return *IFC4X3_RC4_IfcElectricMotor_type; } @@ -16129,7 +16129,7 @@ Ifc4x3_rc4::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, // Function implementations for IfcElectricTimeControl boost::optional< ::Ifc4x3_rc4::IfcElectricTimeControlTypeEnum::Value > Ifc4x3_rc4::IfcElectricTimeControl::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricTimeControlTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElectricTimeControlTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcElectricTimeControl::declaration() const { return *IFC4X3_RC4_IfcElectricTimeControl_type; } @@ -16149,7 +16149,7 @@ Ifc4x3_rc4::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v // Function implementations for IfcElement boost::optional< std::string > Ifc4x3_rc4::IfcElement::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcRelFillsElement::list::ptr Ifc4x3_rc4::IfcElement::FillsVoids() const { return data_->getInverse(IFC4X3_RC4_IfcRelFillsElement_type, 5)->as(); } ::Ifc4x3_rc4::IfcRelConnectsElements::list::ptr Ifc4x3_rc4::IfcElement::ConnectedTo() const { return data_->getInverse(IFC4X3_RC4_IfcRelConnectsElements_type, 5)->as(); } @@ -16171,9 +16171,9 @@ Ifc4x3_rc4::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwn // Function implementations for IfcElementAssembly boost::optional< ::Ifc4x3_rc4::IfcAssemblyPlaceEnum::Value > Ifc4x3_rc4::IfcElementAssembly::AssemblyPlace() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_rc4::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAssemblyPlaceEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_rc4::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcAssemblyPlaceEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc4::IfcElementAssemblyTypeEnum::Value > Ifc4x3_rc4::IfcElementAssembly::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElementAssemblyTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElementAssemblyTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcElementAssembly::declaration() const { return *IFC4X3_RC4_IfcElementAssembly_type; } @@ -16209,7 +16209,7 @@ Ifc4x3_rc4::IfcElementComponentType::IfcElementComponentType(std::string v1_Glob // Function implementations for IfcElementQuantity boost::optional< std::string > Ifc4x3_rc4::IfcElementQuantity::MethodOfMeasurement() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x3_rc4::IfcPhysicalQuantity >::ptr Ifc4x3_rc4::IfcElementQuantity::Quantities() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc4::IfcPhysicalQuantity >(); } void Ifc4x3_rc4::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc4x3_rc4::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -16221,7 +16221,7 @@ Ifc4x3_rc4::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::If // Function implementations for IfcElementType boost::optional< std::string > Ifc4x3_rc4::IfcElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcElementType::declaration() const { return *IFC4X3_RC4_IfcElementType_type; } @@ -16281,7 +16281,7 @@ Ifc4x3_rc4::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::st // Function implementations for IfcEngine boost::optional< ::Ifc4x3_rc4::IfcEngineTypeEnum::Value > Ifc4x3_rc4::IfcEngine::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcEngineTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEngineTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEngineTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcEngine::declaration() const { return *IFC4X3_RC4_IfcEngine_type; } @@ -16301,7 +16301,7 @@ Ifc4x3_rc4::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4x3_rc4:: // Function implementations for IfcEvaporativeCooler boost::optional< ::Ifc4x3_rc4::IfcEvaporativeCoolerTypeEnum::Value > Ifc4x3_rc4::IfcEvaporativeCooler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEvaporativeCoolerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEvaporativeCoolerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcEvaporativeCooler::declaration() const { return *IFC4X3_RC4_IfcEvaporativeCooler_type; } @@ -16321,7 +16321,7 @@ Ifc4x3_rc4::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_Gl // Function implementations for IfcEvaporator boost::optional< ::Ifc4x3_rc4::IfcEvaporatorTypeEnum::Value > Ifc4x3_rc4::IfcEvaporator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEvaporatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEvaporatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcEvaporator::declaration() const { return *IFC4X3_RC4_IfcEvaporator_type; } @@ -16341,11 +16341,11 @@ Ifc4x3_rc4::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcEvent boost::optional< ::Ifc4x3_rc4::IfcEventTypeEnum::Value > Ifc4x3_rc4::IfcEvent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcEventTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc4::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEventTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEventTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc4::IfcEventTriggerTypeEnum::Value > Ifc4x3_rc4::IfcEvent::EventTriggerType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_rc4::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEventTriggerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_rc4::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcEventTriggerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcEvent::UserDefinedEventTriggerType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x3_rc4::IfcEventTime* Ifc4x3_rc4::IfcEvent::EventOccurenceTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc4::IfcEventTime>(true); } void Ifc4x3_rc4::IfcEvent::setEventOccurenceTime(::Ifc4x3_rc4::IfcEventTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} } @@ -16357,13 +16357,13 @@ Ifc4x3_rc4::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHi // Function implementations for IfcEventTime boost::optional< std::string > Ifc4x3_rc4::IfcEventTime::ActualDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcEventTime::EarlyDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcEventTime::LateDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcEventTime::ScheduleDate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcEventTime::declaration() const { return *IFC4X3_RC4_IfcEventTime_type; } @@ -16377,7 +16377,7 @@ void Ifc4x3_rc4::IfcEventType::setPredefinedType(::Ifc4x3_rc4::IfcEventTypeEnum: ::Ifc4x3_rc4::IfcEventTriggerTypeEnum::Value Ifc4x3_rc4::IfcEventType::EventTriggerType() const { return ::Ifc4x3_rc4::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc4::IfcEventType::setEventTriggerType(::Ifc4x3_rc4::IfcEventTriggerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcEventTriggerTypeEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcEventType::UserDefinedEventTriggerType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcEventType::declaration() const { return *IFC4X3_RC4_IfcEventType_type; } @@ -16387,9 +16387,9 @@ Ifc4x3_rc4::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4x3_rc4::If // Function implementations for IfcExtendedProperties boost::optional< std::string > Ifc4x3_rc4::IfcExtendedProperties::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcExtendedProperties::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc4::IfcProperty >::ptr Ifc4x3_rc4::IfcExtendedProperties::Properties() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc4::IfcProperty >(); } void Ifc4x3_rc4::IfcExtendedProperties::setProperties(aggregate_of< ::Ifc4x3_rc4::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -16409,11 +16409,11 @@ Ifc4x3_rc4::IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseE // Function implementations for IfcExternalReference boost::optional< std::string > Ifc4x3_rc4::IfcExternalReference::Location() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcExternalReference::Identification() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcExternalReference::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc4::IfcExternalReference::ExternalReferenceForResources() const { return data_->getInverse(IFC4X3_RC4_IfcExternalReferenceRelationship_type, 2)->as(); } @@ -16436,7 +16436,7 @@ Ifc4x3_rc4::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(b // Function implementations for IfcExternalSpatialElement boost::optional< ::Ifc4x3_rc4::IfcExternalSpatialElementTypeEnum::Value > Ifc4x3_rc4::IfcExternalSpatialElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcExternalSpatialElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcExternalSpatialElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcExternalSpatialElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc4::IfcExternalSpatialElement::BoundedBy() const { return data_->getInverse(IFC4X3_RC4_IfcRelSpaceBoundary_type, 4)->as(); } @@ -16592,17 +16592,17 @@ Ifc4x3_rc4::IfcFacilityPart::IfcFacilityPart(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcFailureConnectionCondition boost::optional< double > Ifc4x3_rc4::IfcFailureConnectionCondition::TensionFailureX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcFailureConnectionCondition::TensionFailureY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcFailureConnectionCondition::TensionFailureZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcFailureConnectionCondition::CompressionFailureX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc4::IfcFailureConnectionCondition::CompressionFailureY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcFailureConnectionCondition::CompressionFailureZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFailureConnectionCondition::declaration() const { return *IFC4X3_RC4_IfcFailureConnectionCondition_type; } @@ -16612,7 +16612,7 @@ Ifc4x3_rc4::IfcFailureConnectionCondition::IfcFailureConnectionCondition(boost:: // Function implementations for IfcFan boost::optional< ::Ifc4x3_rc4::IfcFanTypeEnum::Value > Ifc4x3_rc4::IfcFan::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcFanTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFanTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFanTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFan::declaration() const { return *IFC4X3_RC4_IfcFan_type; } @@ -16632,7 +16632,7 @@ Ifc4x3_rc4::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwn // Function implementations for IfcFastener boost::optional< ::Ifc4x3_rc4::IfcFastenerTypeEnum::Value > Ifc4x3_rc4::IfcFastener::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcFastenerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFastenerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFastenerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFastener::declaration() const { return *IFC4X3_RC4_IfcFastener_type; } @@ -16680,7 +16680,7 @@ Ifc4x3_rc4::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::stri aggregate_of_instance::ptr Ifc4x3_rc4::IfcFillAreaStyle::FillStyles() const { aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcFillAreaStyle::setFillStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc4::IfcFillAreaStyle::ModelOrDraughting() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcFillAreaStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcFillAreaStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFillAreaStyle::declaration() const { return *IFC4X3_RC4_IfcFillAreaStyle_type; } @@ -16722,7 +16722,7 @@ Ifc4x3_rc4::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(aggregate_of< ::Ifc4x3_ // Function implementations for IfcFilter boost::optional< ::Ifc4x3_rc4::IfcFilterTypeEnum::Value > Ifc4x3_rc4::IfcFilter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcFilterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFilterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFilterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFilter::declaration() const { return *IFC4X3_RC4_IfcFilter_type; } @@ -16742,7 +16742,7 @@ Ifc4x3_rc4::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4x3_rc4:: // Function implementations for IfcFireSuppressionTerminal boost::optional< ::Ifc4x3_rc4::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4x3_rc4::IfcFireSuppressionTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFireSuppressionTerminal::declaration() const { return *IFC4X3_RC4_IfcFireSuppressionTerminal_type; } @@ -16804,7 +16804,7 @@ Ifc4x3_rc4::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcFlowInstrument boost::optional< ::Ifc4x3_rc4::IfcFlowInstrumentTypeEnum::Value > Ifc4x3_rc4::IfcFlowInstrument::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFlowInstrumentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFlowInstrumentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFlowInstrument::declaration() const { return *IFC4X3_RC4_IfcFlowInstrument_type; } @@ -16824,7 +16824,7 @@ Ifc4x3_rc4::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId // Function implementations for IfcFlowMeter boost::optional< ::Ifc4x3_rc4::IfcFlowMeterTypeEnum::Value > Ifc4x3_rc4::IfcFlowMeter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFlowMeterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFlowMeterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFlowMeter::declaration() const { return *IFC4X3_RC4_IfcFlowMeter_type; } @@ -16924,7 +16924,7 @@ Ifc4x3_rc4::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v // Function implementations for IfcFooting boost::optional< ::Ifc4x3_rc4::IfcFootingTypeEnum::Value > Ifc4x3_rc4::IfcFooting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcFootingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFootingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFootingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFooting::declaration() const { return *IFC4X3_RC4_IfcFooting_type; } @@ -16960,7 +16960,7 @@ Ifc4x3_rc4::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_Gl // Function implementations for IfcFurniture boost::optional< ::Ifc4x3_rc4::IfcFurnitureTypeEnum::Value > Ifc4x3_rc4::IfcFurniture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcFurnitureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFurniture::declaration() const { return *IFC4X3_RC4_IfcFurniture_type; } @@ -16972,7 +16972,7 @@ Ifc4x3_rc4::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4x3_rc4::If ::Ifc4x3_rc4::IfcAssemblyPlaceEnum::Value Ifc4x3_rc4::IfcFurnitureType::AssemblyPlace() const { return ::Ifc4x3_rc4::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc4::IfcFurnitureType::setAssemblyPlace(::Ifc4x3_rc4::IfcAssemblyPlaceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcAssemblyPlaceEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc4::IfcFurnitureTypeEnum::Value > Ifc4x3_rc4::IfcFurnitureType::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcFurnitureTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcFurnitureType::declaration() const { return *IFC4X3_RC4_IfcFurnitureType_type; } @@ -16982,7 +16982,7 @@ Ifc4x3_rc4::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4x3 // Function implementations for IfcGeographicElement boost::optional< ::Ifc4x3_rc4::IfcGeographicElementTypeEnum::Value > Ifc4x3_rc4::IfcGeographicElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcGeographicElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcGeographicElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcGeographicElement::declaration() const { return *IFC4X3_RC4_IfcGeographicElement_type; } @@ -17012,7 +17012,7 @@ Ifc4x3_rc4::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of_instance::pt int Ifc4x3_rc4::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { int v = *data_->getArgument(2); return v; } void Ifc4x3_rc4::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcGeometricRepresentationContext::Precision() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc4::IfcAxis2Placement* Ifc4x3_rc4::IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc4::IfcAxis2Placement>(true); } void Ifc4x3_rc4::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc4x3_rc4::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } ::Ifc4x3_rc4::IfcDirection* Ifc4x3_rc4::IfcGeometricRepresentationContext::TrueNorth() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc4::IfcDirection>(true); } @@ -17038,11 +17038,11 @@ Ifc4x3_rc4::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : I ::Ifc4x3_rc4::IfcGeometricRepresentationContext* Ifc4x3_rc4::IfcGeometricRepresentationSubContext::ParentContext() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcGeometricRepresentationContext>(true); } void Ifc4x3_rc4::IfcGeometricRepresentationSubContext::setParentContext(::Ifc4x3_rc4::IfcGeometricRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcGeometricRepresentationSubContext::TargetScale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcGeometricProjectionEnum::Value Ifc4x3_rc4::IfcGeometricRepresentationSubContext::TargetView() const { return ::Ifc4x3_rc4::IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); } void Ifc4x3_rc4::IfcGeometricRepresentationSubContext::setTargetView(::Ifc4x3_rc4::IfcGeometricProjectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcGeometricProjectionEnum::ToString(v)));data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcGeometricRepresentationSubContext::declaration() const { return *IFC4X3_RC4_IfcGeometricRepresentationSubContext_type; } @@ -17118,9 +17118,9 @@ void Ifc4x3_rc4::IfcGrid::setUAxes(aggregate_of< ::Ifc4x3_rc4::IfcGridAxis >::pt aggregate_of< ::Ifc4x3_rc4::IfcGridAxis >::ptr Ifc4x3_rc4::IfcGrid::VAxes() const { aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc4::IfcGridAxis >(); } void Ifc4x3_rc4::IfcGrid::setVAxes(aggregate_of< ::Ifc4x3_rc4::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcGridAxis >::ptr > Ifc4x3_rc4::IfcGrid::WAxes() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc4::IfcGridAxis >(); } -void Ifc4x3_rc4::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc4::IfcGridTypeEnum::Value > Ifc4x3_rc4::IfcGrid::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcGridTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcGridTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcGridTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcGrid::declaration() const { return *IFC4X3_RC4_IfcGrid_type; } @@ -17130,7 +17130,7 @@ Ifc4x3_rc4::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHist // Function implementations for IfcGridAxis boost::optional< std::string > Ifc4x3_rc4::IfcGridAxis::AxisTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc4::IfcCurve* Ifc4x3_rc4::IfcGridAxis::AxisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc4::IfcCurve>(true); } void Ifc4x3_rc4::IfcGridAxis::setAxisCurve(::Ifc4x3_rc4::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } bool Ifc4x3_rc4::IfcGridAxis::SameSense() const { bool v = *data_->getArgument(2); return v; } @@ -17181,7 +17181,7 @@ Ifc4x3_rc4::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4x3_rc4::IfcSurface* v1_Ba // Function implementations for IfcHeatExchanger boost::optional< ::Ifc4x3_rc4::IfcHeatExchangerTypeEnum::Value > Ifc4x3_rc4::IfcHeatExchanger::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcHeatExchangerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcHeatExchangerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcHeatExchanger::declaration() const { return *IFC4X3_RC4_IfcHeatExchanger_type; } @@ -17201,7 +17201,7 @@ Ifc4x3_rc4::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, // Function implementations for IfcHumidifier boost::optional< ::Ifc4x3_rc4::IfcHumidifierTypeEnum::Value > Ifc4x3_rc4::IfcHumidifier::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcHumidifierTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcHumidifierTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcHumidifierTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcHumidifier::declaration() const { return *IFC4X3_RC4_IfcHumidifier_type; } @@ -17229,11 +17229,11 @@ void Ifc4x3_rc4::IfcIShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc4::IfcIShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcIShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcIShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc4::IfcIShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcIShapeProfileDef::declaration() const { return *IFC4X3_RC4_IfcIShapeProfileDef_type; } @@ -17275,7 +17275,7 @@ Ifc4x3_rc4::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(std::st ::Ifc4x3_rc4::IfcTessellatedFaceSet* Ifc4x3_rc4::IfcIndexedColourMap::MappedTo() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc4::IfcTessellatedFaceSet>(true); } void Ifc4x3_rc4::IfcIndexedColourMap::setMappedTo(::Ifc4x3_rc4::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc4::IfcIndexedColourMap::Opacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc4::IfcColourRgbList* Ifc4x3_rc4::IfcIndexedColourMap::Colours() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc4::IfcColourRgbList>(true); } void Ifc4x3_rc4::IfcIndexedColourMap::setColours(::Ifc4x3_rc4::IfcColourRgbList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::vector< int > /*[1:?]*/ Ifc4x3_rc4::IfcIndexedColourMap::ColourIndex() const { std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } @@ -17291,9 +17291,9 @@ Ifc4x3_rc4::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4x3_rc4::IfcTessellate ::Ifc4x3_rc4::IfcCartesianPointList* Ifc4x3_rc4::IfcIndexedPolyCurve::Points() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc4::IfcCartesianPointList>(true); } void Ifc4x3_rc4::IfcIndexedPolyCurve::setPoints(::Ifc4x3_rc4::IfcCartesianPointList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc4::IfcIndexedPolyCurve::Segments() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc4::IfcIndexedPolyCurve::SelfIntersect() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcIndexedPolyCurve::declaration() const { return *IFC4X3_RC4_IfcIndexedPolyCurve_type; } @@ -17336,7 +17336,7 @@ Ifc4x3_rc4::IfcIndexedTextureMap::IfcIndexedTextureMap(aggregate_of< ::Ifc4x3_rc // Function implementations for IfcIndexedTriangleTextureMap boost::optional< std::vector< std::vector< int > > > Ifc4x3_rc4::IfcIndexedTriangleTextureMap::TexCoordIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcIndexedTriangleTextureMap::declaration() const { return *IFC4X3_RC4_IfcIndexedTriangleTextureMap_type; } @@ -17346,7 +17346,7 @@ Ifc4x3_rc4::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(aggregate // Function implementations for IfcInterceptor boost::optional< ::Ifc4x3_rc4::IfcInterceptorTypeEnum::Value > Ifc4x3_rc4::IfcInterceptor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcInterceptorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcInterceptorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcInterceptorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcInterceptor::declaration() const { return *IFC4X3_RC4_IfcInterceptor_type; } @@ -17374,13 +17374,13 @@ Ifc4x3_rc4::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4x3_rc4::IfcCurve* v // Function implementations for IfcInventory boost::optional< ::Ifc4x3_rc4::IfcInventoryTypeEnum::Value > Ifc4x3_rc4::IfcInventory::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc4::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcInventoryTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcInventoryTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcActorSelect* Ifc4x3_rc4::IfcInventory::Jurisdiction() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcActorSelect>(true); } void Ifc4x3_rc4::IfcInventory::setJurisdiction(::Ifc4x3_rc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPerson >::ptr > Ifc4x3_rc4::IfcInventory::ResponsiblePersons() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc4::IfcPerson >(); } -void Ifc4x3_rc4::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcInventory::LastUpdateDate() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcCostValue* Ifc4x3_rc4::IfcInventory::CurrentValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc4::IfcCostValue>(true); } void Ifc4x3_rc4::IfcInventory::setCurrentValue(::Ifc4x3_rc4::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x3_rc4::IfcCostValue* Ifc4x3_rc4::IfcInventory::OriginalValue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc4::IfcCostValue>(true); } @@ -17416,7 +17416,7 @@ Ifc4x3_rc4::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string // Function implementations for IfcJunctionBox boost::optional< ::Ifc4x3_rc4::IfcJunctionBoxTypeEnum::Value > Ifc4x3_rc4::IfcJunctionBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcJunctionBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcJunctionBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcJunctionBox::declaration() const { return *IFC4X3_RC4_IfcJunctionBox_type; } @@ -17458,15 +17458,15 @@ Ifc4x3_rc4::IfcKerbType::IfcKerbType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO double Ifc4x3_rc4::IfcLShapeProfileDef::Depth() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcLShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcLShapeProfileDef::Width() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } double Ifc4x3_rc4::IfcLShapeProfileDef::Thickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x3_rc4::IfcLShapeProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcLShapeProfileDef::FilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcLShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcLShapeProfileDef::LegSlope() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcLShapeProfileDef::declaration() const { return *IFC4X3_RC4_IfcLShapeProfileDef_type; } @@ -17476,7 +17476,7 @@ Ifc4x3_rc4::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4x3_rc4::IfcProfileTyp // Function implementations for IfcLaborResource boost::optional< ::Ifc4x3_rc4::IfcLaborResourceTypeEnum::Value > Ifc4x3_rc4::IfcLaborResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcLaborResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcLaborResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcLaborResource::declaration() const { return *IFC4X3_RC4_IfcLaborResource_type; } @@ -17508,7 +17508,7 @@ Ifc4x3_rc4::IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost // Function implementations for IfcLamp boost::optional< ::Ifc4x3_rc4::IfcLampTypeEnum::Value > Ifc4x3_rc4::IfcLamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcLampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcLampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcLampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcLamp::declaration() const { return *IFC4X3_RC4_IfcLamp_type; } @@ -17530,15 +17530,15 @@ Ifc4x3_rc4::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO std::string Ifc4x3_rc4::IfcLibraryInformation::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc4::IfcLibraryInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcLibraryInformation::Version() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc4::IfcActorSelect* Ifc4x3_rc4::IfcLibraryInformation::Publisher() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc4::IfcActorSelect>(true); } void Ifc4x3_rc4::IfcLibraryInformation::setPublisher(::Ifc4x3_rc4::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcLibraryInformation::VersionDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcLibraryInformation::Location() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcLibraryInformation::Description() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcRelAssociatesLibrary::list::ptr Ifc4x3_rc4::IfcLibraryInformation::LibraryInfoForObjects() const { return data_->getInverse(IFC4X3_RC4_IfcRelAssociatesLibrary_type, 5)->as(); } ::Ifc4x3_rc4::IfcLibraryReference::list::ptr Ifc4x3_rc4::IfcLibraryInformation::HasLibraryReferences() const { return data_->getInverse(IFC4X3_RC4_IfcLibraryReference_type, 5)->as(); } @@ -17550,9 +17550,9 @@ Ifc4x3_rc4::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, bo // Function implementations for IfcLibraryReference boost::optional< std::string > Ifc4x3_rc4::IfcLibraryReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcLibraryReference::Language() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc4::IfcLibraryInformation* Ifc4x3_rc4::IfcLibraryReference::ReferencedLibrary() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc4::IfcLibraryInformation>(true); } void Ifc4x3_rc4::IfcLibraryReference::setReferencedLibrary(::Ifc4x3_rc4::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -17579,7 +17579,7 @@ Ifc4x3_rc4::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPla // Function implementations for IfcLightFixture boost::optional< ::Ifc4x3_rc4::IfcLightFixtureTypeEnum::Value > Ifc4x3_rc4::IfcLightFixture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcLightFixtureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcLightFixtureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcLightFixture::declaration() const { return *IFC4X3_RC4_IfcLightFixture_type; } @@ -17611,13 +17611,13 @@ Ifc4x3_rc4::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4x // Function implementations for IfcLightSource boost::optional< std::string > Ifc4x3_rc4::IfcLightSource::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } ::Ifc4x3_rc4::IfcColourRgb* Ifc4x3_rc4::IfcLightSource::LightColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc4::IfcColourRgb>(true); } void Ifc4x3_rc4::IfcLightSource::setLightColour(::Ifc4x3_rc4::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcLightSource::AmbientIntensity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcLightSource::Intensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcLightSource::declaration() const { return *IFC4X3_RC4_IfcLightSource_type; } @@ -17685,7 +17685,7 @@ Ifc4x3_rc4::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< ::Ifc4x3_rc4::IfcDirection* Ifc4x3_rc4::IfcLightSourceSpot::Orientation() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc4::IfcDirection>(true); } void Ifc4x3_rc4::IfcLightSourceSpot::setOrientation(::Ifc4x3_rc4::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcLightSourceSpot::ConcentrationExponent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } double Ifc4x3_rc4::IfcLightSourceSpot::SpreadAngle() const { double v = *data_->getArgument(11); return v; } void Ifc4x3_rc4::IfcLightSourceSpot::setSpreadAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } double Ifc4x3_rc4::IfcLightSourceSpot::BeamWidthAngle() const { double v = *data_->getArgument(12); return v; } @@ -17739,7 +17739,7 @@ Ifc4x3_rc4::IfcLinearPositioningElement::IfcLinearPositioningElement(std::string // Function implementations for IfcLiquidTerminal boost::optional< ::Ifc4x3_rc4::IfcLiquidTerminalTypeEnum::Value > Ifc4x3_rc4::IfcLiquidTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcLiquidTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcLiquidTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcLiquidTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcLiquidTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcLiquidTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcLiquidTerminal::declaration() const { return *IFC4X3_RC4_IfcLiquidTerminal_type; } @@ -17793,15 +17793,15 @@ void Ifc4x3_rc4::IfcMapConversion::setNorthings(double v) { {IfcWrite::IfcWriteA double Ifc4x3_rc4::IfcMapConversion::OrthogonalHeight() const { double v = *data_->getArgument(4); return v; } void Ifc4x3_rc4::IfcMapConversion::setOrthogonalHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMapConversion::XAxisAbscissa() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMapConversion::XAxisOrdinate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMapConversion::Scale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMapConversion::ScaleY() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcMapConversion::setScaleY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcMapConversion::setScaleY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMapConversion::ScaleZ() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcMapConversion::setScaleZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcMapConversion::setScaleZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMapConversion::declaration() const { return *IFC4X3_RC4_IfcMapConversion_type; } @@ -17823,7 +17823,7 @@ Ifc4x3_rc4::IfcMappedItem::IfcMappedItem(::Ifc4x3_rc4::IfcRepresentationMap* v1_ // Function implementations for IfcMarineFacility boost::optional< ::Ifc4x3_rc4::IfcMarineFacilityTypeEnum::Value > Ifc4x3_rc4::IfcMarineFacility::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcMarineFacilityTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcMarineFacility::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMarineFacilityTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMarineFacilityTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcMarineFacility::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMarineFacilityTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMarineFacilityTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMarineFacility::declaration() const { return *IFC4X3_RC4_IfcMarineFacility_type; } @@ -17835,9 +17835,9 @@ Ifc4x3_rc4::IfcMarineFacility::IfcMarineFacility(std::string v1_GlobalId, ::Ifc4 std::string Ifc4x3_rc4::IfcMaterial::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc4::IfcMaterial::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterial::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterial::Category() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcMaterialDefinitionRepresentation::list::ptr Ifc4x3_rc4::IfcMaterial::HasRepresentation() const { return data_->getInverse(IFC4X3_RC4_IfcMaterialDefinitionRepresentation_type, 3)->as(); } ::Ifc4x3_rc4::IfcMaterialRelationship::list::ptr Ifc4x3_rc4::IfcMaterial::IsRelatedWith() const { return data_->getInverse(IFC4X3_RC4_IfcMaterialRelationship_type, 3)->as(); } @@ -17862,15 +17862,15 @@ Ifc4x3_rc4::IfcMaterialClassificationRelationship::IfcMaterialClassificationRela // Function implementations for IfcMaterialConstituent boost::optional< std::string > Ifc4x3_rc4::IfcMaterialConstituent::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialConstituent::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc4::IfcMaterial* Ifc4x3_rc4::IfcMaterialConstituent::Material() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc4::IfcMaterial>(true); } void Ifc4x3_rc4::IfcMaterialConstituent::setMaterial(::Ifc4x3_rc4::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMaterialConstituent::Fraction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialConstituent::Category() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc4::IfcMaterialConstituentSet::list::ptr Ifc4x3_rc4::IfcMaterialConstituent::ToMaterialConstituentSet() const { return data_->getInverse(IFC4X3_RC4_IfcMaterialConstituentSet_type, 2)->as(); } @@ -17881,11 +17881,11 @@ Ifc4x3_rc4::IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std: // Function implementations for IfcMaterialConstituentSet boost::optional< std::string > Ifc4x3_rc4::IfcMaterialConstituentSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialConstituentSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcMaterialConstituent >::ptr > Ifc4x3_rc4::IfcMaterialConstituentSet::MaterialConstituents() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc4::IfcMaterialConstituent >(); } -void Ifc4x3_rc4::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMaterialConstituentSet::declaration() const { return *IFC4X3_RC4_IfcMaterialConstituentSet_type; } @@ -17920,15 +17920,15 @@ void Ifc4x3_rc4::IfcMaterialLayer::setMaterial(::Ifc4x3_rc4::IfcMaterial* v) { { double Ifc4x3_rc4::IfcMaterialLayer::LayerThickness() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcMaterialLayer::setLayerThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< boost::logic::tribool > Ifc4x3_rc4::IfcMaterialLayer::IsVentilated() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } boost::logic::tribool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialLayer::Name() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialLayer::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialLayer::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x3_rc4::IfcMaterialLayer::Priority() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc4::IfcMaterialLayerSet::list::ptr Ifc4x3_rc4::IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(IFC4X3_RC4_IfcMaterialLayerSet_type, 0)->as(); } @@ -17941,9 +17941,9 @@ Ifc4x3_rc4::IfcMaterialLayer::IfcMaterialLayer(::Ifc4x3_rc4::IfcMaterial* v1_Mat aggregate_of< ::Ifc4x3_rc4::IfcMaterialLayer >::ptr Ifc4x3_rc4::IfcMaterialLayerSet::MaterialLayers() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc4::IfcMaterialLayer >(); } void Ifc4x3_rc4::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc4x3_rc4::IfcMaterialLayer >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialLayerSet::LayerSetName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialLayerSet::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMaterialLayerSet::declaration() const { return *IFC4X3_RC4_IfcMaterialLayerSet_type; } @@ -17961,7 +17961,7 @@ void Ifc4x3_rc4::IfcMaterialLayerSetUsage::setDirectionSense(::Ifc4x3_rc4::IfcDi double Ifc4x3_rc4::IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMaterialLayerSetUsage::declaration() const { return *IFC4X3_RC4_IfcMaterialLayerSetUsage_type; } @@ -17993,17 +17993,17 @@ Ifc4x3_rc4::IfcMaterialList::IfcMaterialList(aggregate_of< ::Ifc4x3_rc4::IfcMate // Function implementations for IfcMaterialProfile boost::optional< std::string > Ifc4x3_rc4::IfcMaterialProfile::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialProfile::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc4::IfcMaterial* Ifc4x3_rc4::IfcMaterialProfile::Material() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc4::IfcMaterial>(true); } void Ifc4x3_rc4::IfcMaterialProfile::setMaterial(::Ifc4x3_rc4::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcProfileDef* Ifc4x3_rc4::IfcMaterialProfile::Profile() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcProfileDef>(true); } void Ifc4x3_rc4::IfcMaterialProfile::setProfile(::Ifc4x3_rc4::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc4::IfcMaterialProfile::Priority() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialProfile::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcMaterialProfileSet::list::ptr Ifc4x3_rc4::IfcMaterialProfile::ToMaterialProfileSet() const { return data_->getInverse(IFC4X3_RC4_IfcMaterialProfileSet_type, 2)->as(); } @@ -18014,9 +18014,9 @@ Ifc4x3_rc4::IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string // Function implementations for IfcMaterialProfileSet boost::optional< std::string > Ifc4x3_rc4::IfcMaterialProfileSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialProfileSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc4::IfcMaterialProfile >::ptr Ifc4x3_rc4::IfcMaterialProfileSet::MaterialProfiles() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc4::IfcMaterialProfile >(); } void Ifc4x3_rc4::IfcMaterialProfileSet::setMaterialProfiles(aggregate_of< ::Ifc4x3_rc4::IfcMaterialProfile >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcCompositeProfileDef* Ifc4x3_rc4::IfcMaterialProfileSet::CompositeProfile() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcCompositeProfileDef>(true); } @@ -18032,9 +18032,9 @@ Ifc4x3_rc4::IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::s ::Ifc4x3_rc4::IfcMaterialProfileSet* Ifc4x3_rc4::IfcMaterialProfileSetUsage::ForProfileSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc4::IfcMaterialProfileSet>(true); } void Ifc4x3_rc4::IfcMaterialProfileSetUsage::setForProfileSet(::Ifc4x3_rc4::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< int > Ifc4x3_rc4::IfcMaterialProfileSetUsage::CardinalPoint() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMaterialProfileSetUsage::declaration() const { return *IFC4X3_RC4_IfcMaterialProfileSetUsage_type; } @@ -18046,7 +18046,7 @@ Ifc4x3_rc4::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4x3_rc4: ::Ifc4x3_rc4::IfcMaterialProfileSet* Ifc4x3_rc4::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcMaterialProfileSet>(true); } void Ifc4x3_rc4::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(::Ifc4x3_rc4::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc4::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMaterialProfileSetUsageTapering::declaration() const { return *IFC4X3_RC4_IfcMaterialProfileSetUsageTapering_type; } @@ -18080,7 +18080,7 @@ void Ifc4x3_rc4::IfcMaterialRelationship::setRelatingMaterial(::Ifc4x3_rc4::IfcM aggregate_of< ::Ifc4x3_rc4::IfcMaterial >::ptr Ifc4x3_rc4::IfcMaterialRelationship::RelatedMaterials() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc4::IfcMaterial >(); } void Ifc4x3_rc4::IfcMaterialRelationship::setRelatedMaterials(aggregate_of< ::Ifc4x3_rc4::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMaterialRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMaterialRelationship::declaration() const { return *IFC4X3_RC4_IfcMaterialRelationship_type; } @@ -18111,11 +18111,11 @@ Ifc4x3_rc4::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4x3_rc4::IfcValue* v1_Va // Function implementations for IfcMechanicalFastener boost::optional< double > Ifc4x3_rc4::IfcMechanicalFastener::NominalDiameter() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMechanicalFastener::NominalLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc4::IfcMechanicalFastenerTypeEnum::Value > Ifc4x3_rc4::IfcMechanicalFastener::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMechanicalFastenerTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMechanicalFastenerTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMechanicalFastener::declaration() const { return *IFC4X3_RC4_IfcMechanicalFastener_type; } @@ -18127,9 +18127,9 @@ Ifc4x3_rc4::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId ::Ifc4x3_rc4::IfcMechanicalFastenerTypeEnum::Value Ifc4x3_rc4::IfcMechanicalFastenerType::PredefinedType() const { return ::Ifc4x3_rc4::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc4::IfcMechanicalFastenerType::setPredefinedType(::Ifc4x3_rc4::IfcMechanicalFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcMechanicalFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMechanicalFastenerType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcMechanicalFastenerType::NominalLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMechanicalFastenerType::declaration() const { return *IFC4X3_RC4_IfcMechanicalFastenerType_type; } @@ -18139,7 +18139,7 @@ Ifc4x3_rc4::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_ // Function implementations for IfcMedicalDevice boost::optional< ::Ifc4x3_rc4::IfcMedicalDeviceTypeEnum::Value > Ifc4x3_rc4::IfcMedicalDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMedicalDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMedicalDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMedicalDevice::declaration() const { return *IFC4X3_RC4_IfcMedicalDevice_type; } @@ -18159,7 +18159,7 @@ Ifc4x3_rc4::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, // Function implementations for IfcMember boost::optional< ::Ifc4x3_rc4::IfcMemberTypeEnum::Value > Ifc4x3_rc4::IfcMember::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcMemberTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMemberTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMemberTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMember::declaration() const { return *IFC4X3_RC4_IfcMember_type; } @@ -18189,7 +18189,7 @@ Ifc4x3_rc4::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4x3_rc4:: ::Ifc4x3_rc4::IfcBenchmarkEnum::Value Ifc4x3_rc4::IfcMetric::Benchmark() const { return ::Ifc4x3_rc4::IfcBenchmarkEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc4::IfcMetric::setBenchmark(::Ifc4x3_rc4::IfcBenchmarkEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcBenchmarkEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcMetric::ValueSource() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcMetricValueSelect* Ifc4x3_rc4::IfcMetric::DataValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc4::IfcMetricValueSelect>(true); } void Ifc4x3_rc4::IfcMetric::setDataValue(::Ifc4x3_rc4::IfcMetricValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } ::Ifc4x3_rc4::IfcReference* Ifc4x3_rc4::IfcMetric::ReferencePath() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc4::IfcReference>(true); } @@ -18211,7 +18211,7 @@ Ifc4x3_rc4::IfcMirroredProfileDef::IfcMirroredProfileDef(::Ifc4x3_rc4::IfcProfil // Function implementations for IfcMobileTelecommunicationsAppliance boost::optional< ::Ifc4x3_rc4::IfcMobileTelecommunicationsApplianceTypeEnum::Value > Ifc4x3_rc4::IfcMobileTelecommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMobileTelecommunicationsAppliance::declaration() const { return *IFC4X3_RC4_IfcMobileTelecommunicationsAppliance_type; } @@ -18241,7 +18241,7 @@ Ifc4x3_rc4::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil: // Function implementations for IfcMooringDevice boost::optional< ::Ifc4x3_rc4::IfcMooringDeviceTypeEnum::Value > Ifc4x3_rc4::IfcMooringDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcMooringDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMooringDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMooringDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMooringDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMooringDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMooringDevice::declaration() const { return *IFC4X3_RC4_IfcMooringDevice_type; } @@ -18261,7 +18261,7 @@ Ifc4x3_rc4::IfcMooringDeviceType::IfcMooringDeviceType(std::string v1_GlobalId, // Function implementations for IfcMotorConnection boost::optional< ::Ifc4x3_rc4::IfcMotorConnectionTypeEnum::Value > Ifc4x3_rc4::IfcMotorConnection::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMotorConnectionTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcMotorConnectionTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcMotorConnection::declaration() const { return *IFC4X3_RC4_IfcMotorConnection_type; } @@ -18293,7 +18293,7 @@ Ifc4x3_rc4::IfcNamedUnit::IfcNamedUnit(::Ifc4x3_rc4::IfcDimensionalExponents* v1 // Function implementations for IfcNavigationElement boost::optional< ::Ifc4x3_rc4::IfcNavigationElementTypeEnum::Value > Ifc4x3_rc4::IfcNavigationElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcNavigationElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcNavigationElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcNavigationElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcNavigationElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcNavigationElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcNavigationElement::declaration() const { return *IFC4X3_RC4_IfcNavigationElement_type; } @@ -18313,7 +18313,7 @@ Ifc4x3_rc4::IfcNavigationElementType::IfcNavigationElementType(std::string v1_Gl // Function implementations for IfcObject boost::optional< std::string > Ifc4x3_rc4::IfcObject::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc4::IfcRelDefinesByObject::list::ptr Ifc4x3_rc4::IfcObject::IsDeclaredBy() const { return data_->getInverse(IFC4X3_RC4_IfcRelDefinesByObject_type, 4)->as(); } ::Ifc4x3_rc4::IfcRelDefinesByObject::list::ptr Ifc4x3_rc4::IfcObject::Declares() const { return data_->getInverse(IFC4X3_RC4_IfcRelDefinesByObject_type, 5)->as(); } @@ -18353,13 +18353,13 @@ Ifc4x3_rc4::IfcObjectPlacement::IfcObjectPlacement(::Ifc4x3_rc4::IfcObjectPlacem // Function implementations for IfcObjective boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcConstraint >::ptr > Ifc4x3_rc4::IfcObjective::BenchmarkValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc4::IfcConstraint >(); } -void Ifc4x3_rc4::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc4::IfcLogicalOperatorEnum::Value > Ifc4x3_rc4::IfcObjective::LogicalAggregator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcLogicalOperatorEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_rc4::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcLogicalOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_rc4::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcLogicalOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcObjectiveEnum::Value Ifc4x3_rc4::IfcObjective::ObjectiveQualifier() const { return ::Ifc4x3_rc4::IfcObjectiveEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc4::IfcObjective::setObjectiveQualifier(::Ifc4x3_rc4::IfcObjectiveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcObjectiveEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcObjective::UserDefinedQualifier() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcObjective::declaration() const { return *IFC4X3_RC4_IfcObjective_type; } @@ -18369,7 +18369,7 @@ Ifc4x3_rc4::IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std // Function implementations for IfcOccupant boost::optional< ::Ifc4x3_rc4::IfcOccupantTypeEnum::Value > Ifc4x3_rc4::IfcOccupant::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcOccupantTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc4::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcOccupantTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcOccupantTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcOccupant::declaration() const { return *IFC4X3_RC4_IfcOccupant_type; } @@ -18417,7 +18417,7 @@ Ifc4x3_rc4::IfcOffsetCurve3D::IfcOffsetCurve3D(::Ifc4x3_rc4::IfcCurve* v1_BasisC aggregate_of< ::Ifc4x3_rc4::IfcPointByDistanceExpression >::ptr Ifc4x3_rc4::IfcOffsetCurveByDistances::OffsetValues() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc4::IfcPointByDistanceExpression >(); } void Ifc4x3_rc4::IfcOffsetCurveByDistances::setOffsetValues(aggregate_of< ::Ifc4x3_rc4::IfcPointByDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcOffsetCurveByDistances::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcOffsetCurveByDistances::declaration() const { return *IFC4X3_RC4_IfcOffsetCurveByDistances_type; } @@ -18433,7 +18433,7 @@ void Ifc4x3_rc4::IfcOpenCrossProfileDef::setWidths(std::vector< double > /*[1:?] std::vector< double > /*[1:?]*/ Ifc4x3_rc4::IfcOpenCrossProfileDef::Slopes() const { std::vector< double > /*[1:?]*/ v = *data_->getArgument(4); return v; } void Ifc4x3_rc4::IfcOpenCrossProfileDef::setSlopes(std::vector< double > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[2:?]*/ > Ifc4x3_rc4::IfcOpenCrossProfileDef::Tags() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[2:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcOpenCrossProfileDef::declaration() const { return *IFC4X3_RC4_IfcOpenCrossProfileDef_type; } @@ -18451,7 +18451,7 @@ Ifc4x3_rc4::IfcOpenShell::IfcOpenShell(aggregate_of< ::Ifc4x3_rc4::IfcFace >::pt // Function implementations for IfcOpeningElement boost::optional< ::Ifc4x3_rc4::IfcOpeningElementTypeEnum::Value > Ifc4x3_rc4::IfcOpeningElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcOpeningElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcOpeningElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcOpeningElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcRelFillsElement::list::ptr Ifc4x3_rc4::IfcOpeningElement::HasFillings() const { return data_->getInverse(IFC4X3_RC4_IfcRelFillsElement_type, 4)->as(); } @@ -18470,15 +18470,15 @@ Ifc4x3_rc4::IfcOpeningStandardCase::IfcOpeningStandardCase(std::string v1_Global // Function implementations for IfcOrganization boost::optional< std::string > Ifc4x3_rc4::IfcOrganization::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } std::string Ifc4x3_rc4::IfcOrganization::Name() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcOrganization::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcOrganization::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcActorRole >::ptr > Ifc4x3_rc4::IfcOrganization::Roles() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc4::IfcActorRole >(); } -void Ifc4x3_rc4::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAddress >::ptr > Ifc4x3_rc4::IfcOrganization::Addresses() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc4::IfcAddress >(); } -void Ifc4x3_rc4::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(4,attr);} } ::Ifc4x3_rc4::IfcOrganizationRelationship::list::ptr Ifc4x3_rc4::IfcOrganization::IsRelatedBy() const { return data_->getInverse(IFC4X3_RC4_IfcOrganizationRelationship_type, 3)->as(); } ::Ifc4x3_rc4::IfcOrganizationRelationship::list::ptr Ifc4x3_rc4::IfcOrganization::Relates() const { return data_->getInverse(IFC4X3_RC4_IfcOrganizationRelationship_type, 2)->as(); } @@ -18523,7 +18523,7 @@ Ifc4x3_rc4::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(aggregate_of< ::Ifc4x3_ // Function implementations for IfcOutlet boost::optional< ::Ifc4x3_rc4::IfcOutletTypeEnum::Value > Ifc4x3_rc4::IfcOutlet::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcOutletTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcOutletTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcOutletTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcOutlet::declaration() const { return *IFC4X3_RC4_IfcOutlet_type; } @@ -18547,11 +18547,11 @@ void Ifc4x3_rc4::IfcOwnerHistory::setOwningUser(::Ifc4x3_rc4::IfcPersonAndOrgani ::Ifc4x3_rc4::IfcApplication* Ifc4x3_rc4::IfcOwnerHistory::OwningApplication() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc4::IfcApplication>(true); } void Ifc4x3_rc4::IfcOwnerHistory::setOwningApplication(::Ifc4x3_rc4::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x3_rc4::IfcStateEnum::Value > Ifc4x3_rc4::IfcOwnerHistory::State() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcStateEnum::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc4::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_rc4::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcStateEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_rc4::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcStateEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< ::Ifc4x3_rc4::IfcChangeActionEnum::Value > Ifc4x3_rc4::IfcOwnerHistory::ChangeAction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcChangeActionEnum::FromString(*data_->getArgument(3)); } -void Ifc4x3_rc4::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_rc4::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcChangeActionEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_rc4::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcChangeActionEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc4::IfcOwnerHistory::LastModifiedDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc4::IfcPersonAndOrganization* Ifc4x3_rc4::IfcOwnerHistory::LastModifyingUser() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc4::IfcPersonAndOrganization>(true); } void Ifc4x3_rc4::IfcOwnerHistory::setLastModifyingUser(::Ifc4x3_rc4::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcApplication* Ifc4x3_rc4::IfcOwnerHistory::LastModifyingApplication() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcApplication>(true); } @@ -18587,7 +18587,7 @@ Ifc4x3_rc4::IfcPath::IfcPath(aggregate_of< ::Ifc4x3_rc4::IfcOrientedEdge >::ptr // Function implementations for IfcPavement boost::optional< ::Ifc4x3_rc4::IfcPavementTypeEnum::Value > Ifc4x3_rc4::IfcPavement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcPavementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcPavement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPavementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPavementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcPavement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPavementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPavementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPavement::declaration() const { return *IFC4X3_RC4_IfcPavement_type; } @@ -18621,7 +18621,7 @@ Ifc4x3_rc4::IfcPcurve::IfcPcurve(::Ifc4x3_rc4::IfcSurface* v1_BasisSurface, ::If std::string Ifc4x3_rc4::IfcPerformanceHistory::LifeCyclePhase() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcPerformanceHistory::setLifeCyclePhase(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc4::IfcPerformanceHistoryTypeEnum::Value > Ifc4x3_rc4::IfcPerformanceHistory::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcPerformanceHistoryTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc4::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPerformanceHistoryTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPerformanceHistoryTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPerformanceHistory::declaration() const { return *IFC4X3_RC4_IfcPerformanceHistory_type; } @@ -18635,9 +18635,9 @@ void Ifc4x3_rc4::IfcPermeableCoveringProperties::setOperationType(::Ifc4x3_rc4:: ::Ifc4x3_rc4::IfcWindowPanelPositionEnum::Value Ifc4x3_rc4::IfcPermeableCoveringProperties::PanelPosition() const { return ::Ifc4x3_rc4::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc4::IfcPermeableCoveringProperties::setPanelPosition(::Ifc4x3_rc4::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcPermeableCoveringProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcPermeableCoveringProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcShapeAspect* Ifc4x3_rc4::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc4::IfcShapeAspect>(true); } void Ifc4x3_rc4::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc4x3_rc4::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -18649,11 +18649,11 @@ Ifc4x3_rc4::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std:: // Function implementations for IfcPermit boost::optional< ::Ifc4x3_rc4::IfcPermitTypeEnum::Value > Ifc4x3_rc4::IfcPermit::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcPermitTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc4::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPermitTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPermitTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPermit::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPermit::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPermit::declaration() const { return *IFC4X3_RC4_IfcPermit_type; } @@ -18663,21 +18663,21 @@ Ifc4x3_rc4::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwner // Function implementations for IfcPerson boost::optional< std::string > Ifc4x3_rc4::IfcPerson::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPerson::FamilyName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPerson::GivenName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcPerson::MiddleNames() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcPerson::PrefixTitles() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcPerson::SuffixTitles() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcActorRole >::ptr > Ifc4x3_rc4::IfcPerson::Roles() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc4::IfcActorRole >(); } -void Ifc4x3_rc4::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAddress >::ptr > Ifc4x3_rc4::IfcPerson::Addresses() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc4::IfcAddress >(); } -void Ifc4x3_rc4::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcPersonAndOrganization::list::ptr Ifc4x3_rc4::IfcPerson::EngagedIn() const { return data_->getInverse(IFC4X3_RC4_IfcPersonAndOrganization_type, 0)->as(); } @@ -18692,7 +18692,7 @@ void Ifc4x3_rc4::IfcPersonAndOrganization::setThePerson(::Ifc4x3_rc4::IfcPerson* ::Ifc4x3_rc4::IfcOrganization* Ifc4x3_rc4::IfcPersonAndOrganization::TheOrganization() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc4::IfcOrganization>(true); } void Ifc4x3_rc4::IfcPersonAndOrganization::setTheOrganization(::Ifc4x3_rc4::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcActorRole >::ptr > Ifc4x3_rc4::IfcPersonAndOrganization::Roles() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc4::IfcActorRole >(); } -void Ifc4x3_rc4::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPersonAndOrganization::declaration() const { return *IFC4X3_RC4_IfcPersonAndOrganization_type; } @@ -18706,9 +18706,9 @@ void Ifc4x3_rc4::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::If std::string Ifc4x3_rc4::IfcPhysicalComplexQuantity::Discrimination() const { std::string v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPhysicalComplexQuantity::Quality() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPhysicalComplexQuantity::Usage() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPhysicalComplexQuantity::declaration() const { return *IFC4X3_RC4_IfcPhysicalComplexQuantity_type; } @@ -18720,7 +18720,7 @@ Ifc4x3_rc4::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v std::string Ifc4x3_rc4::IfcPhysicalQuantity::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc4::IfcPhysicalQuantity::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPhysicalQuantity::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc4::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc4::IfcPhysicalQuantity::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC4_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc4::IfcPhysicalComplexQuantity::list::ptr Ifc4x3_rc4::IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(IFC4X3_RC4_IfcPhysicalComplexQuantity_type, 2)->as(); } @@ -18742,9 +18742,9 @@ Ifc4x3_rc4::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_ // Function implementations for IfcPile boost::optional< ::Ifc4x3_rc4::IfcPileTypeEnum::Value > Ifc4x3_rc4::IfcPile::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcPileTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPileTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPileTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } boost::optional< ::Ifc4x3_rc4::IfcPileConstructionEnum::Value > Ifc4x3_rc4::IfcPile::ConstructionType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcPileConstructionEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_rc4::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPileConstructionEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_rc4::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPileConstructionEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPile::declaration() const { return *IFC4X3_RC4_IfcPile_type; } @@ -18764,7 +18764,7 @@ Ifc4x3_rc4::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcPipeFitting boost::optional< ::Ifc4x3_rc4::IfcPipeFittingTypeEnum::Value > Ifc4x3_rc4::IfcPipeFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPipeFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPipeFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPipeFitting::declaration() const { return *IFC4X3_RC4_IfcPipeFitting_type; } @@ -18784,7 +18784,7 @@ Ifc4x3_rc4::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::If // Function implementations for IfcPipeSegment boost::optional< ::Ifc4x3_rc4::IfcPipeSegmentTypeEnum::Value > Ifc4x3_rc4::IfcPipeSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPipeSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPipeSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPipeSegment::declaration() const { return *IFC4X3_RC4_IfcPipeSegment_type; } @@ -18868,7 +18868,7 @@ Ifc4x3_rc4::IfcPlant::IfcPlant(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHi // Function implementations for IfcPlate boost::optional< ::Ifc4x3_rc4::IfcPlateTypeEnum::Value > Ifc4x3_rc4::IfcPlate::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcPlateTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPlateTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPlateTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPlate::declaration() const { return *IFC4X3_RC4_IfcPlate_type; } @@ -18906,11 +18906,11 @@ Ifc4x3_rc4::IfcPoint::IfcPoint() : IfcGeometricRepresentationItem((IfcEntityInst ::Ifc4x3_rc4::IfcCurveMeasureSelect* Ifc4x3_rc4::IfcPointByDistanceExpression::DistanceAlong() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc4::IfcCurveMeasureSelect>(true); } void Ifc4x3_rc4::IfcPointByDistanceExpression::setDistanceAlong(::Ifc4x3_rc4::IfcCurveMeasureSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc4::IfcPointByDistanceExpression::OffsetLateral() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcPointByDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcPointByDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcPointByDistanceExpression::OffsetVertical() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcPointByDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcPointByDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcPointByDistanceExpression::OffsetLongitudinal() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcPointByDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcPointByDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc4::IfcCurve* Ifc4x3_rc4::IfcPointByDistanceExpression::BasisCurve() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc4::IfcCurve>(true); } void Ifc4x3_rc4::IfcPointByDistanceExpression::setBasisCurve(::Ifc4x3_rc4::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -18970,11 +18970,11 @@ Ifc4x3_rc4::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4x3_ // Function implementations for IfcPolygonalFaceSet boost::optional< bool > Ifc4x3_rc4::IfcPolygonalFaceSet::Closed() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc4::IfcIndexedPolygonalFace >::ptr Ifc4x3_rc4::IfcPolygonalFaceSet::Faces() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc4::IfcIndexedPolygonalFace >(); } void Ifc4x3_rc4::IfcPolygonalFaceSet::setFaces(aggregate_of< ::Ifc4x3_rc4::IfcIndexedPolygonalFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc4::IfcPolygonalFaceSet::PnIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPolygonalFaceSet::declaration() const { return *IFC4X3_RC4_IfcPolygonalFaceSet_type; } @@ -18996,11 +18996,11 @@ Ifc4x3_rc4::IfcPolyline::IfcPolyline(aggregate_of< ::Ifc4x3_rc4::IfcCartesianPoi ::Ifc4x3_rc4::IfcPlacement* Ifc4x3_rc4::IfcPolynomialCurve::Position() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc4::IfcPlacement>(true); } void Ifc4x3_rc4::IfcPolynomialCurve::setPosition(::Ifc4x3_rc4::IfcPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_rc4::IfcPolynomialCurve::CoefficientsX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< double > /*[2:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcPolynomialCurve::setCoefficientsX(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcPolynomialCurve::setCoefficientsX(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_rc4::IfcPolynomialCurve::CoefficientsY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[2:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcPolynomialCurve::setCoefficientsY(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcPolynomialCurve::setCoefficientsY(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< double > /*[2:?]*/ > Ifc4x3_rc4::IfcPolynomialCurve::CoefficientsZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< double > /*[2:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcPolynomialCurve::setCoefficientsZ(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcPolynomialCurve::setCoefficientsZ(boost::optional< std::vector< double > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPolynomialCurve::declaration() const { return *IFC4X3_RC4_IfcPolynomialCurve_type; } @@ -19031,19 +19031,19 @@ Ifc4x3_rc4::IfcPositioningElement::IfcPositioningElement(std::string v1_GlobalId // Function implementations for IfcPostalAddress boost::optional< std::string > Ifc4x3_rc4::IfcPostalAddress::InternalLocation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcPostalAddress::AddressLines() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPostalAddress::PostalBox() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPostalAddress::Town() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPostalAddress::Region() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPostalAddress::PostalCode() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPostalAddress::Country() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPostalAddress::declaration() const { return *IFC4X3_RC4_IfcPostalAddress_type; } @@ -19113,11 +19113,11 @@ Ifc4x3_rc4::IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity( std::string Ifc4x3_rc4::IfcPresentationLayerAssignment::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc4::IfcPresentationLayerAssignment::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPresentationLayerAssignment::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of_instance::ptr Ifc4x3_rc4::IfcPresentationLayerAssignment::AssignedItems() const { aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } void Ifc4x3_rc4::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPresentationLayerAssignment::Identifier() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPresentationLayerAssignment::declaration() const { return *IFC4X3_RC4_IfcPresentationLayerAssignment_type; } @@ -19143,7 +19143,7 @@ Ifc4x3_rc4::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::st // Function implementations for IfcPresentationStyle boost::optional< std::string > Ifc4x3_rc4::IfcPresentationStyle::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPresentationStyle::declaration() const { return *IFC4X3_RC4_IfcPresentationStyle_type; } @@ -19153,7 +19153,7 @@ Ifc4x3_rc4::IfcPresentationStyle::IfcPresentationStyle(boost::optional< std::str // Function implementations for IfcProcedure boost::optional< ::Ifc4x3_rc4::IfcProcedureTypeEnum::Value > Ifc4x3_rc4::IfcProcedure::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcProcedureTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc4::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProcedureTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProcedureTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcProcedure::declaration() const { return *IFC4X3_RC4_IfcProcedure_type; } @@ -19173,9 +19173,9 @@ Ifc4x3_rc4::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4x3 // Function implementations for IfcProcess boost::optional< std::string > Ifc4x3_rc4::IfcProcess::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcProcess::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc4::IfcRelSequence::list::ptr Ifc4x3_rc4::IfcProcess::IsPredecessorTo() const { return data_->getInverse(IFC4X3_RC4_IfcRelSequence_type, 4)->as(); } ::Ifc4x3_rc4::IfcRelSequence::list::ptr Ifc4x3_rc4::IfcProcess::IsSuccessorFrom() const { return data_->getInverse(IFC4X3_RC4_IfcRelSequence_type, 5)->as(); } @@ -19213,9 +19213,9 @@ Ifc4x3_rc4::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional // Function implementations for IfcProductRepresentation boost::optional< std::string > Ifc4x3_rc4::IfcProductRepresentation::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcProductRepresentation::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } aggregate_of< ::Ifc4x3_rc4::IfcRepresentation >::ptr Ifc4x3_rc4::IfcProductRepresentation::Representations() const { aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc4::IfcRepresentation >(); } void Ifc4x3_rc4::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc4x3_rc4::IfcRepresentation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} } @@ -19229,7 +19229,7 @@ Ifc4x3_rc4::IfcProductRepresentation::IfcProductRepresentation(boost::optional< ::Ifc4x3_rc4::IfcProfileTypeEnum::Value Ifc4x3_rc4::IfcProfileDef::ProfileType() const { return ::Ifc4x3_rc4::IfcProfileTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc4::IfcProfileDef::setProfileType(::Ifc4x3_rc4::IfcProfileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcProfileTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcProfileDef::ProfileName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc4::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc4::IfcProfileDef::HasExternalReference() const { return data_->getInverse(IFC4X3_RC4_IfcExternalReferenceRelationship_type, 3)->as(); } ::Ifc4x3_rc4::IfcProfileProperties::list::ptr Ifc4x3_rc4::IfcProfileDef::HasProperties() const { return data_->getInverse(IFC4X3_RC4_IfcProfileProperties_type, 3)->as(); } @@ -19267,11 +19267,11 @@ Ifc4x3_rc4::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcProjectOrder boost::optional< ::Ifc4x3_rc4::IfcProjectOrderTypeEnum::Value > Ifc4x3_rc4::IfcProjectOrder::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); } -void Ifc4x3_rc4::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProjectOrderTypeEnum::ToString(*v)));data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProjectOrderTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcProjectOrder::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcProjectOrder::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcProjectOrder::declaration() const { return *IFC4X3_RC4_IfcProjectOrder_type; } @@ -19281,9 +19281,9 @@ Ifc4x3_rc4::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcProjectedCRS boost::optional< std::string > Ifc4x3_rc4::IfcProjectedCRS::MapProjection() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcProjectedCRS::MapZone() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcNamedUnit* Ifc4x3_rc4::IfcProjectedCRS::MapUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcNamedUnit>(true); } void Ifc4x3_rc4::IfcProjectedCRS::setMapUnit(::Ifc4x3_rc4::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -19295,7 +19295,7 @@ Ifc4x3_rc4::IfcProjectedCRS::IfcProjectedCRS(std::string v1_Name, boost::optiona // Function implementations for IfcProjectionElement boost::optional< ::Ifc4x3_rc4::IfcProjectionElementTypeEnum::Value > Ifc4x3_rc4::IfcProjectionElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcProjectionElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProjectionElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProjectionElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcProjectionElement::declaration() const { return *IFC4X3_RC4_IfcProjectionElement_type; } @@ -19307,7 +19307,7 @@ Ifc4x3_rc4::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, std::string Ifc4x3_rc4::IfcProperty::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc4::IfcProperty::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcProperty::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc4::IfcPropertySet::list::ptr Ifc4x3_rc4::IfcProperty::PartOfPset() const { return data_->getInverse(IFC4X3_RC4_IfcPropertySet_type, 4)->as(); } ::Ifc4x3_rc4::IfcPropertyDependencyRelationship::list::ptr Ifc4x3_rc4::IfcProperty::PropertyForDependance() const { return data_->getInverse(IFC4X3_RC4_IfcPropertyDependencyRelationship_type, 2)->as(); } @@ -19362,7 +19362,7 @@ void Ifc4x3_rc4::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc4x ::Ifc4x3_rc4::IfcProperty* Ifc4x3_rc4::IfcPropertyDependencyRelationship::DependantProperty() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcProperty>(true); } void Ifc4x3_rc4::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc4x3_rc4::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPropertyDependencyRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPropertyDependencyRelationship::declaration() const { return *IFC4X3_RC4_IfcPropertyDependencyRelationship_type; } @@ -19372,7 +19372,7 @@ Ifc4x3_rc4::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship // Function implementations for IfcPropertyEnumeratedValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc4::IfcPropertyEnumeratedValue::EnumerationValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcPropertyEnumeration* Ifc4x3_rc4::IfcPropertyEnumeratedValue::EnumerationReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcPropertyEnumeration>(true); } void Ifc4x3_rc4::IfcPropertyEnumeratedValue::setEnumerationReference(::Ifc4x3_rc4::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19398,7 +19398,7 @@ Ifc4x3_rc4::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, // Function implementations for IfcPropertyListValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc4::IfcPropertyListValue::ListValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcUnit* Ifc4x3_rc4::IfcPropertyListValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcUnit>(true); } void Ifc4x3_rc4::IfcPropertyListValue::setUnit(::Ifc4x3_rc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19410,7 +19410,7 @@ Ifc4x3_rc4::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boos // Function implementations for IfcPropertyReferenceValue boost::optional< std::string > Ifc4x3_rc4::IfcPropertyReferenceValue::UsageName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcObjectReferenceSelect* Ifc4x3_rc4::IfcPropertyReferenceValue::PropertyReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcObjectReferenceSelect>(true); } void Ifc4x3_rc4::IfcPropertyReferenceValue::setPropertyReference(::Ifc4x3_rc4::IfcObjectReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } @@ -19443,9 +19443,9 @@ Ifc4x3_rc4::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_Gl // Function implementations for IfcPropertySetTemplate boost::optional< ::Ifc4x3_rc4::IfcPropertySetTemplateTypeEnum::Value > Ifc4x3_rc4::IfcPropertySetTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcPropertySetTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x3_rc4::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc4::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPropertySetTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc4::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPropertySetTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPropertySetTemplate::ApplicableEntity() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } aggregate_of< ::Ifc4x3_rc4::IfcPropertyTemplate >::ptr Ifc4x3_rc4::IfcPropertySetTemplate::HasPropertyTemplates() const { aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc4::IfcPropertyTemplate >(); } void Ifc4x3_rc4::IfcPropertySetTemplate::setHasPropertyTemplates(aggregate_of< ::Ifc4x3_rc4::IfcPropertyTemplate >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(6,attr);} } @@ -19470,17 +19470,17 @@ Ifc4x3_rc4::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, // Function implementations for IfcPropertyTableValue boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc4::IfcPropertyTableValue::DefiningValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc4::IfcPropertyTableValue::DefinedValues() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcPropertyTableValue::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc4::IfcUnit* Ifc4x3_rc4::IfcPropertyTableValue::DefiningUnit() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc4::IfcUnit>(true); } void Ifc4x3_rc4::IfcPropertyTableValue::setDefiningUnit(::Ifc4x3_rc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcUnit* Ifc4x3_rc4::IfcPropertyTableValue::DefinedUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcUnit>(true); } void Ifc4x3_rc4::IfcPropertyTableValue::setDefinedUnit(::Ifc4x3_rc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc4::IfcCurveInterpolationEnum::Value > Ifc4x3_rc4::IfcPropertyTableValue::CurveInterpolation() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcCurveInterpolationEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc4::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_rc4::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCurveInterpolationEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_rc4::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcCurveInterpolationEnum::ToString(*v)));}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPropertyTableValue::declaration() const { return *IFC4X3_RC4_IfcPropertyTableValue_type; } @@ -19508,7 +19508,7 @@ Ifc4x3_rc4::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::st // Function implementations for IfcProtectiveDevice boost::optional< ::Ifc4x3_rc4::IfcProtectiveDeviceTypeEnum::Value > Ifc4x3_rc4::IfcProtectiveDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProtectiveDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProtectiveDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcProtectiveDevice::declaration() const { return *IFC4X3_RC4_IfcProtectiveDevice_type; } @@ -19518,7 +19518,7 @@ Ifc4x3_rc4::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, :: // Function implementations for IfcProtectiveDeviceTrippingUnit boost::optional< ::Ifc4x3_rc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4x3_rc4::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcProtectiveDeviceTrippingUnit::declaration() const { return *IFC4X3_RC4_IfcProtectiveDeviceTrippingUnit_type; } @@ -19550,7 +19550,7 @@ Ifc4x3_rc4::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_Glob ::Ifc4x3_rc4::IfcObjectTypeEnum::Value Ifc4x3_rc4::IfcProxy::ProxyType() const { return ::Ifc4x3_rc4::IfcObjectTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc4::IfcProxy::setProxyType(::Ifc4x3_rc4::IfcObjectTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcObjectTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcProxy::Tag() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcProxy::declaration() const { return *IFC4X3_RC4_IfcProxy_type; } @@ -19560,7 +19560,7 @@ Ifc4x3_rc4::IfcProxy::IfcProxy(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHi // Function implementations for IfcPump boost::optional< ::Ifc4x3_rc4::IfcPumpTypeEnum::Value > Ifc4x3_rc4::IfcPump::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcPumpTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPumpTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcPumpTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcPump::declaration() const { return *IFC4X3_RC4_IfcPump_type; } @@ -19582,7 +19582,7 @@ Ifc4x3_rc4::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO double Ifc4x3_rc4::IfcQuantityArea::AreaValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcQuantityArea::setAreaValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcQuantityArea::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcQuantityArea::declaration() const { return *IFC4X3_RC4_IfcQuantityArea_type; } @@ -19594,7 +19594,7 @@ Ifc4x3_rc4::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optiona double Ifc4x3_rc4::IfcQuantityCount::CountValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcQuantityCount::setCountValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcQuantityCount::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcQuantityCount::declaration() const { return *IFC4X3_RC4_IfcQuantityCount_type; } @@ -19606,7 +19606,7 @@ Ifc4x3_rc4::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optio double Ifc4x3_rc4::IfcQuantityLength::LengthValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcQuantityLength::setLengthValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcQuantityLength::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcQuantityLength::declaration() const { return *IFC4X3_RC4_IfcQuantityLength_type; } @@ -19626,7 +19626,7 @@ Ifc4x3_rc4::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4x3_rc4 double Ifc4x3_rc4::IfcQuantityTime::TimeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcQuantityTime::setTimeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcQuantityTime::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcQuantityTime::declaration() const { return *IFC4X3_RC4_IfcQuantityTime_type; } @@ -19638,7 +19638,7 @@ Ifc4x3_rc4::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optiona double Ifc4x3_rc4::IfcQuantityVolume::VolumeValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcQuantityVolume::setVolumeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcQuantityVolume::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcQuantityVolume::declaration() const { return *IFC4X3_RC4_IfcQuantityVolume_type; } @@ -19650,7 +19650,7 @@ Ifc4x3_rc4::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::opt double Ifc4x3_rc4::IfcQuantityWeight::WeightValue() const { double v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcQuantityWeight::setWeightValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcQuantityWeight::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcQuantityWeight::declaration() const { return *IFC4X3_RC4_IfcQuantityWeight_type; } @@ -19660,7 +19660,7 @@ Ifc4x3_rc4::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::opt // Function implementations for IfcRail boost::optional< ::Ifc4x3_rc4::IfcRailTypeEnum::Value > Ifc4x3_rc4::IfcRail::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcRailTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRailTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRailTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRailTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRailTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRail::declaration() const { return *IFC4X3_RC4_IfcRail_type; } @@ -19680,7 +19680,7 @@ Ifc4x3_rc4::IfcRailType::IfcRailType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcRailing boost::optional< ::Ifc4x3_rc4::IfcRailingTypeEnum::Value > Ifc4x3_rc4::IfcRailing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcRailingTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRailingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRailingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRailing::declaration() const { return *IFC4X3_RC4_IfcRailing_type; } @@ -19700,7 +19700,7 @@ Ifc4x3_rc4::IfcRailingType::IfcRailingType(std::string v1_GlobalId, ::Ifc4x3_rc4 // Function implementations for IfcRailway boost::optional< ::Ifc4x3_rc4::IfcRailwayTypeEnum::Value > Ifc4x3_rc4::IfcRailway::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcRailwayTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcRailway::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRailwayTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRailwayTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcRailway::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRailwayTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRailwayTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRailway::declaration() const { return *IFC4X3_RC4_IfcRailway_type; } @@ -19710,7 +19710,7 @@ Ifc4x3_rc4::IfcRailway::IfcRailway(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwn // Function implementations for IfcRamp boost::optional< ::Ifc4x3_rc4::IfcRampTypeEnum::Value > Ifc4x3_rc4::IfcRamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcRampTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRamp::declaration() const { return *IFC4X3_RC4_IfcRamp_type; } @@ -19720,7 +19720,7 @@ Ifc4x3_rc4::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHist // Function implementations for IfcRampFlight boost::optional< ::Ifc4x3_rc4::IfcRampFlightTypeEnum::Value > Ifc4x3_rc4::IfcRampFlight::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcRampFlightTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRampFlightTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRampFlightTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRampFlight::declaration() const { return *IFC4X3_RC4_IfcRampFlight_type; } @@ -19772,9 +19772,9 @@ Ifc4x3_rc4::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKno double Ifc4x3_rc4::IfcRectangleHollowProfileDef::WallThickness() const { double v = *data_->getArgument(5); return v; } void Ifc4x3_rc4::IfcRectangleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRectangleHollowProfileDef::declaration() const { return *IFC4X3_RC4_IfcRectangleHollowProfileDef_type; } @@ -19834,19 +19834,19 @@ Ifc4x3_rc4::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4x3_ ::Ifc4x3_rc4::IfcRecurrenceTypeEnum::Value Ifc4x3_rc4::IfcRecurrencePattern::RecurrenceType() const { return ::Ifc4x3_rc4::IfcRecurrenceTypeEnum::FromString(*data_->getArgument(0)); } void Ifc4x3_rc4::IfcRecurrencePattern::setRecurrenceType(::Ifc4x3_rc4::IfcRecurrenceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcRecurrenceTypeEnum::ToString(v)));data_->setArgument(0,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc4::IfcRecurrencePattern::DayComponent() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc4::IfcRecurrencePattern::WeekdayComponent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc4::IfcRecurrencePattern::MonthComponent() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< int > Ifc4x3_rc4::IfcRecurrencePattern::Position() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< int > Ifc4x3_rc4::IfcRecurrencePattern::Interval() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } int v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< int > Ifc4x3_rc4::IfcRecurrencePattern::Occurrences() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcTimePeriod >::ptr > Ifc4x3_rc4::IfcRecurrencePattern::TimePeriods() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc4::IfcTimePeriod >(); } -void Ifc4x3_rc4::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRecurrencePattern::declaration() const { return *IFC4X3_RC4_IfcRecurrencePattern_type; } @@ -19856,13 +19856,13 @@ Ifc4x3_rc4::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4x3_rc4::IfcRecurren // Function implementations for IfcReference boost::optional< std::string > Ifc4x3_rc4::IfcReference::TypeIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcReference::AttributeIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcReference::InstanceName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc4::IfcReference::ListPositions() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } ::Ifc4x3_rc4::IfcReference* Ifc4x3_rc4::IfcReference::InnerReference() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc4::IfcReference>(true); } void Ifc4x3_rc4::IfcReference::setInnerReference(::Ifc4x3_rc4::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } @@ -19874,9 +19874,9 @@ Ifc4x3_rc4::IfcReference::IfcReference(boost::optional< std::string > v1_TypeIde // Function implementations for IfcReferent boost::optional< ::Ifc4x3_rc4::IfcReferentTypeEnum::Value > Ifc4x3_rc4::IfcReferent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcReferentTypeEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc4::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReferentTypeEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReferentTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReferent::RestartDistance() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcReferent::declaration() const { return *IFC4X3_RC4_IfcReferent_type; } @@ -19898,7 +19898,7 @@ Ifc4x3_rc4::IfcRegularTimeSeries::IfcRegularTimeSeries(std::string v1_Name, boos // Function implementations for IfcReinforcedSoil boost::optional< ::Ifc4x3_rc4::IfcReinforcedSoilTypeEnum::Value > Ifc4x3_rc4::IfcReinforcedSoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcReinforcedSoilTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcReinforcedSoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcedSoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcReinforcedSoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcedSoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcReinforcedSoil::declaration() const { return *IFC4X3_RC4_IfcReinforcedSoil_type; } @@ -19912,13 +19912,13 @@ void Ifc4x3_rc4::IfcReinforcementBarProperties::setTotalCrossSectionArea(double std::string Ifc4x3_rc4::IfcReinforcementBarProperties::SteelGrade() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcReinforcementBarProperties::setSteelGrade(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc4::IfcReinforcementBarProperties::BarSurface() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc4::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcementBarProperties::EffectiveDepth() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcementBarProperties::NominalBarDiameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcementBarProperties::BarCount() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcReinforcementBarProperties::declaration() const { return *IFC4X3_RC4_IfcReinforcementBarProperties_type; } @@ -19928,7 +19928,7 @@ Ifc4x3_rc4::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double // Function implementations for IfcReinforcementDefinitionProperties boost::optional< std::string > Ifc4x3_rc4::IfcReinforcementDefinitionProperties::DefinitionType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } aggregate_of< ::Ifc4x3_rc4::IfcSectionReinforcementProperties >::ptr Ifc4x3_rc4::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc4::IfcSectionReinforcementProperties >(); } void Ifc4x3_rc4::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc4x3_rc4::IfcSectionReinforcementProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} } @@ -19940,15 +19940,15 @@ Ifc4x3_rc4::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProp // Function implementations for IfcReinforcingBar boost::optional< double > Ifc4x3_rc4::IfcReinforcingBar::NominalDiameter() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingBar::CrossSectionArea() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingBar::BarLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarTypeEnum::Value > Ifc4x3_rc4::IfcReinforcingBar::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc4::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcingBarTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcingBarTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc4::IfcReinforcingBar::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc4::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcReinforcingBar::declaration() const { return *IFC4X3_RC4_IfcReinforcingBar_type; } @@ -19960,17 +19960,17 @@ Ifc4x3_rc4::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4 ::Ifc4x3_rc4::IfcReinforcingBarTypeEnum::Value Ifc4x3_rc4::IfcReinforcingBarType::PredefinedType() const { return ::Ifc4x3_rc4::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc4::IfcReinforcingBarType::setPredefinedType(::Ifc4x3_rc4::IfcReinforcingBarTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcReinforcingBarTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingBarType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingBarType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingBarType::BarLength() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc4::IfcReinforcingBarType::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc4::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcReinforcingBarType::BendingShapeCode() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc4::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc4::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc4::IfcReinforcingBarType::BendingParameters() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(15); return v; } -void Ifc4x3_rc4::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc4::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcReinforcingBarType::declaration() const { return *IFC4X3_RC4_IfcReinforcingBarType_type; } @@ -19980,7 +19980,7 @@ Ifc4x3_rc4::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId // Function implementations for IfcReinforcingElement boost::optional< std::string > Ifc4x3_rc4::IfcReinforcingElement::SteelGrade() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcReinforcingElement::declaration() const { return *IFC4X3_RC4_IfcReinforcingElement_type; } @@ -19998,23 +19998,23 @@ Ifc4x3_rc4::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_ // Function implementations for IfcReinforcingMesh boost::optional< double > Ifc4x3_rc4::IfcReinforcingMesh::MeshLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMesh::MeshWidth() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc4::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc4::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc4::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc4::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc4::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMesh::TransverseBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc4::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc4::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< ::Ifc4x3_rc4::IfcReinforcingMeshTypeEnum::Value > Ifc4x3_rc4::IfcReinforcingMesh::PredefinedType() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(17)); } -void Ifc4x3_rc4::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcingMeshTypeEnum::ToString(*v)));data_->setArgument(17,attr);} } +void Ifc4x3_rc4::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcReinforcingMeshTypeEnum::ToString(*v)));}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcReinforcingMesh::declaration() const { return *IFC4X3_RC4_IfcReinforcingMesh_type; } @@ -20026,25 +20026,25 @@ Ifc4x3_rc4::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::If ::Ifc4x3_rc4::IfcReinforcingMeshTypeEnum::Value Ifc4x3_rc4::IfcReinforcingMeshType::PredefinedType() const { return ::Ifc4x3_rc4::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc4::IfcReinforcingMeshType::setPredefinedType(::Ifc4x3_rc4::IfcReinforcingMeshTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcReinforcingMeshTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMeshType::MeshLength() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMeshType::MeshWidth() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc4::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc4::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc4::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc4::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc4::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc4::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc4::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x3_rc4::IfcReinforcingMeshType::TransverseBarSpacing() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x3_rc4::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc4::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcReinforcingMeshType::BendingShapeCode() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x3_rc4::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x3_rc4::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc4::IfcReinforcingMeshType::BendingParameters() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(19); return v; } -void Ifc4x3_rc4::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x3_rc4::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcReinforcingMeshType::declaration() const { return *IFC4X3_RC4_IfcReinforcingMeshType_type; } @@ -20080,7 +20080,7 @@ Ifc4x3_rc4::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4x3 aggregate_of< ::Ifc4x3_rc4::IfcObjectDefinition >::ptr Ifc4x3_rc4::IfcRelAssigns::RelatedObjects() const { aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc4::IfcObjectDefinition >(); } void Ifc4x3_rc4::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc4x3_rc4::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} } boost::optional< ::Ifc4x3_rc4::IfcObjectTypeEnum::Value > Ifc4x3_rc4::IfcRelAssigns::RelatedObjectsType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcObjectTypeEnum::FromString(*data_->getArgument(5)); } -void Ifc4x3_rc4::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x3_rc4::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcObjectTypeEnum::ToString(*v)));data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x3_rc4::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcObjectTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRelAssigns::declaration() const { return *IFC4X3_RC4_IfcRelAssigns_type; } @@ -20194,7 +20194,7 @@ Ifc4x3_rc4::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std:: // Function implementations for IfcRelAssociatesConstraint boost::optional< std::string > Ifc4x3_rc4::IfcRelAssociatesConstraint::Intent() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcConstraint* Ifc4x3_rc4::IfcRelAssociatesConstraint::RelatingConstraint() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcConstraint>(true); } void Ifc4x3_rc4::IfcRelAssociatesConstraint::setRelatingConstraint(::Ifc4x3_rc4::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -20330,7 +20330,7 @@ void Ifc4x3_rc4::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc4x3_rc ::Ifc4x3_rc4::IfcStructuralConnectionCondition* Ifc4x3_rc4::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc4::IfcStructuralConnectionCondition>(true); } void Ifc4x3_rc4::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc4x3_rc4::IfcStructuralConnectionCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcRelConnectsStructuralMember::SupportedLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcAxis2Placement3D* Ifc4x3_rc4::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc4::IfcAxis2Placement3D>(true); } void Ifc4x3_rc4::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc4x3_rc4::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -20354,7 +20354,7 @@ Ifc4x3_rc4::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std:: aggregate_of< ::Ifc4x3_rc4::IfcElement >::ptr Ifc4x3_rc4::IfcRelConnectsWithRealizingElements::RealizingElements() const { aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc4::IfcElement >(); } void Ifc4x3_rc4::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc4x3_rc4::IfcElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRelConnectsWithRealizingElements::declaration() const { return *IFC4X3_RC4_IfcRelConnectsWithRealizingElements_type; } @@ -20508,7 +20508,7 @@ void Ifc4x3_rc4::IfcRelInterferesElements::setInterferenceGeometry(::Ifc4x3_rc4: ::Ifc4x3_rc4::IfcSpatialZone* Ifc4x3_rc4::IfcRelInterferesElements::InterferenceSpace() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc4::IfcSpatialZone>(true); } void Ifc4x3_rc4::IfcRelInterferesElements::setInterferenceSpace(::Ifc4x3_rc4::IfcSpatialZone* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcRelInterferesElements::InterferenceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::logic::tribool Ifc4x3_rc4::IfcRelInterferesElements::ImpliedOrder() const { boost::logic::tribool v = *data_->getArgument(9); return v; } void Ifc4x3_rc4::IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -20574,9 +20574,9 @@ void Ifc4x3_rc4::IfcRelSequence::setRelatedProcess(::Ifc4x3_rc4::IfcProcess* v) ::Ifc4x3_rc4::IfcLagTime* Ifc4x3_rc4::IfcRelSequence::TimeLag() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcLagTime>(true); } void Ifc4x3_rc4::IfcRelSequence::setTimeLag(::Ifc4x3_rc4::IfcLagTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< ::Ifc4x3_rc4::IfcSequenceEnum::Value > Ifc4x3_rc4::IfcRelSequence::SequenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSequenceEnum::FromString(*data_->getArgument(7)); } -void Ifc4x3_rc4::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_rc4::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSequenceEnum::ToString(*v)));data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_rc4::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSequenceEnum::ToString(*v)));}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcRelSequence::UserDefinedSequenceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRelSequence::declaration() const { return *IFC4X3_RC4_IfcRelSequence_type; } @@ -20670,9 +20670,9 @@ Ifc4x3_rc4::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCu ::Ifc4x3_rc4::IfcRepresentationContext* Ifc4x3_rc4::IfcRepresentation::ContextOfItems() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc4::IfcRepresentationContext>(true); } void Ifc4x3_rc4::IfcRepresentation::setContextOfItems(::Ifc4x3_rc4::IfcRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcRepresentation::RepresentationIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcRepresentation::RepresentationType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } aggregate_of< ::Ifc4x3_rc4::IfcRepresentationItem >::ptr Ifc4x3_rc4::IfcRepresentation::Items() const { aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc4::IfcRepresentationItem >(); } void Ifc4x3_rc4::IfcRepresentation::setItems(aggregate_of< ::Ifc4x3_rc4::IfcRepresentationItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} } @@ -20687,9 +20687,9 @@ Ifc4x3_rc4::IfcRepresentation::IfcRepresentation(::Ifc4x3_rc4::IfcRepresentation // Function implementations for IfcRepresentationContext boost::optional< std::string > Ifc4x3_rc4::IfcRepresentationContext::ContextIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcRepresentationContext::ContextType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } ::Ifc4x3_rc4::IfcRepresentation::list::ptr Ifc4x3_rc4::IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(IFC4X3_RC4_IfcRepresentation_type, 0)->as(); } @@ -20724,9 +20724,9 @@ Ifc4x3_rc4::IfcRepresentationMap::IfcRepresentationMap(::Ifc4x3_rc4::IfcAxis2Pla // Function implementations for IfcResource boost::optional< std::string > Ifc4x3_rc4::IfcResource::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResource::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc4::IfcRelAssignsToResource::list::ptr Ifc4x3_rc4::IfcResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC4_IfcRelAssignsToResource_type, 6)->as(); } @@ -20761,9 +20761,9 @@ Ifc4x3_rc4::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship // Function implementations for IfcResourceLevelRelationship boost::optional< std::string > Ifc4x3_rc4::IfcResourceLevelRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResourceLevelRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcResourceLevelRelationship::declaration() const { return *IFC4X3_RC4_IfcResourceLevelRelationship_type; } @@ -20773,35 +20773,35 @@ Ifc4x3_rc4::IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::op // Function implementations for IfcResourceTime boost::optional< std::string > Ifc4x3_rc4::IfcResourceTime::ScheduleWork() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcResourceTime::ScheduleUsage() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResourceTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResourceTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResourceTime::ScheduleContour() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResourceTime::LevelingDelay() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< bool > Ifc4x3_rc4::IfcResourceTime::IsOverAllocated() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResourceTime::StatusTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResourceTime::ActualWork() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc4::IfcResourceTime::ActualUsage() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResourceTime::ActualStart() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; } -void Ifc4x3_rc4::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResourceTime::ActualFinish() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc4::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcResourceTime::RemainingWork() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x3_rc4::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc4::IfcResourceTime::RemainingUsage() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc4::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< double > Ifc4x3_rc4::IfcResourceTime::Completion() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; } -void Ifc4x3_rc4::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc4::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcResourceTime::declaration() const { return *IFC4X3_RC4_IfcResourceTime_type; } @@ -20857,7 +20857,7 @@ Ifc4x3_rc4::IfcRightCircularCylinder::IfcRightCircularCylinder(::Ifc4x3_rc4::Ifc // Function implementations for IfcRoad boost::optional< ::Ifc4x3_rc4::IfcRoadTypeEnum::Value > Ifc4x3_rc4::IfcRoad::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcRoadTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcRoad::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRoadTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRoadTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcRoad::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRoadTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRoadTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRoad::declaration() const { return *IFC4X3_RC4_IfcRoad_type; } @@ -20867,7 +20867,7 @@ Ifc4x3_rc4::IfcRoad::IfcRoad(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHist // Function implementations for IfcRoof boost::optional< ::Ifc4x3_rc4::IfcRoofTypeEnum::Value > Ifc4x3_rc4::IfcRoof::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcRoofTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRoofTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcRoofTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRoof::declaration() const { return *IFC4X3_RC4_IfcRoof_type; } @@ -20891,9 +20891,9 @@ void Ifc4x3_rc4::IfcRoot::setGlobalId(std::string v) { {IfcWrite::IfcWriteArgume ::Ifc4x3_rc4::IfcOwnerHistory* Ifc4x3_rc4::IfcRoot::OwnerHistory() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc4::IfcOwnerHistory>(true); } void Ifc4x3_rc4::IfcRoot::setOwnerHistory(::Ifc4x3_rc4::IfcOwnerHistory* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcRoot::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcRoot::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcRoot::declaration() const { return *IFC4X3_RC4_IfcRoot_type; } @@ -20913,7 +20913,7 @@ Ifc4x3_rc4::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4x // Function implementations for IfcSIUnit boost::optional< ::Ifc4x3_rc4::IfcSIPrefix::Value > Ifc4x3_rc4::IfcSIUnit::Prefix() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSIPrefix::FromString(*data_->getArgument(2)); } -void Ifc4x3_rc4::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_rc4::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSIPrefix::ToString(*v)));data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_rc4::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSIPrefix::ToString(*v)));}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcSIUnitName::Value Ifc4x3_rc4::IfcSIUnit::Name() const { return ::Ifc4x3_rc4::IfcSIUnitName::FromString(*data_->getArgument(3)); } void Ifc4x3_rc4::IfcSIUnit::setName(::Ifc4x3_rc4::IfcSIUnitName::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcSIUnitName::ToString(v)));data_->setArgument(3,attr);} } @@ -20925,7 +20925,7 @@ Ifc4x3_rc4::IfcSIUnit::IfcSIUnit(::Ifc4x3_rc4::IfcUnitEnum::Value v2_UnitType, b // Function implementations for IfcSanitaryTerminal boost::optional< ::Ifc4x3_rc4::IfcSanitaryTerminalTypeEnum::Value > Ifc4x3_rc4::IfcSanitaryTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSanitaryTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSanitaryTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSanitaryTerminal::declaration() const { return *IFC4X3_RC4_IfcSanitaryTerminal_type; } @@ -20945,11 +20945,11 @@ Ifc4x3_rc4::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_Glob // Function implementations for IfcSchedulingTime boost::optional< std::string > Ifc4x3_rc4::IfcSchedulingTime::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< ::Ifc4x3_rc4::IfcDataOriginEnum::Value > Ifc4x3_rc4::IfcSchedulingTime::DataOrigin() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcDataOriginEnum::FromString(*data_->getArgument(1)); } -void Ifc4x3_rc4::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_rc4::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDataOriginEnum::ToString(*v)));data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_rc4::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcDataOriginEnum::ToString(*v)));}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcSchedulingTime::UserDefinedDataOrigin() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSchedulingTime::declaration() const { return *IFC4X3_RC4_IfcSchedulingTime_type; } @@ -20969,9 +20969,9 @@ Ifc4x3_rc4::IfcSeamCurve::IfcSeamCurve(::Ifc4x3_rc4::IfcCurve* v1_Curve3D, aggre double Ifc4x3_rc4::IfcSecondOrderPolynomialSpiral::QuadraticTerm() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcSecondOrderPolynomialSpiral::setQuadraticTerm(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSecondOrderPolynomialSpiral::LinearTerm() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcSecondOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcSecondOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSecondOrderPolynomialSpiral::ConstantTerm() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcSecondOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcSecondOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSecondOrderPolynomialSpiral::declaration() const { return *IFC4X3_RC4_IfcSecondOrderPolynomialSpiral_type; } @@ -20999,7 +20999,7 @@ void Ifc4x3_rc4::IfcSectionReinforcementProperties::setLongitudinalStartPosition double Ifc4x3_rc4::IfcSectionReinforcementProperties::LongitudinalEndPosition() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSectionReinforcementProperties::TransversePosition() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcReinforcingBarRoleEnum::Value Ifc4x3_rc4::IfcSectionReinforcementProperties::ReinforcementRole() const { return ::Ifc4x3_rc4::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); } void Ifc4x3_rc4::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc4x3_rc4::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(3,attr);} } ::Ifc4x3_rc4::IfcSectionProperties* Ifc4x3_rc4::IfcSectionReinforcementProperties::SectionDefinition() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc4::IfcSectionProperties>(true); } @@ -21092,7 +21092,7 @@ Ifc4x3_rc4::IfcSegmentedReferenceCurve::IfcSegmentedReferenceCurve(aggregate_of< // Function implementations for IfcSensor boost::optional< ::Ifc4x3_rc4::IfcSensorTypeEnum::Value > Ifc4x3_rc4::IfcSensor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSensorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSensorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSensorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSensor::declaration() const { return *IFC4X3_RC4_IfcSensor_type; } @@ -21114,19 +21114,19 @@ Ifc4x3_rc4::IfcSensorType::IfcSensorType(std::string v1_GlobalId, ::Ifc4x3_rc4:: double Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::SepticTerm() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setSepticTerm(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::SexticTerm() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setSexticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setSexticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::QuinticTerm() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setQuinticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setQuinticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::QuarticTerm() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setQuarticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setQuarticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::CubicTerm() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setCubicTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setCubicTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::QuadraticTerm() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setQuadraticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setQuadraticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::LinearTerm() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::ConstantTerm() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::declaration() const { return *IFC4X3_RC4_IfcSeventhOrderPolynomialSpiral_type; } @@ -21136,7 +21136,7 @@ Ifc4x3_rc4::IfcSeventhOrderPolynomialSpiral::IfcSeventhOrderPolynomialSpiral(::I // Function implementations for IfcShadingDevice boost::optional< ::Ifc4x3_rc4::IfcShadingDeviceTypeEnum::Value > Ifc4x3_rc4::IfcShadingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcShadingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcShadingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcShadingDevice::declaration() const { return *IFC4X3_RC4_IfcShadingDevice_type; } @@ -21158,9 +21158,9 @@ Ifc4x3_rc4::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, aggregate_of< ::Ifc4x3_rc4::IfcShapeModel >::ptr Ifc4x3_rc4::IfcShapeAspect::ShapeRepresentations() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc4::IfcShapeModel >(); } void Ifc4x3_rc4::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc4x3_rc4::IfcShapeModel >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcShapeAspect::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcShapeAspect::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::logic::tribool Ifc4x3_rc4::IfcShapeAspect::ProductDefinitional() const { boost::logic::tribool v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc4::IfcProductRepresentationSelect* Ifc4x3_rc4::IfcShapeAspect::PartOfProductDefinitionShape() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc4::IfcProductRepresentationSelect>(true); } @@ -21202,7 +21202,7 @@ Ifc4x3_rc4::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(aggregate_of_in // Function implementations for IfcSign boost::optional< ::Ifc4x3_rc4::IfcSignTypeEnum::Value > Ifc4x3_rc4::IfcSign::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSignTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSignTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSignTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSignTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSignTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSign::declaration() const { return *IFC4X3_RC4_IfcSign_type; } @@ -21222,7 +21222,7 @@ Ifc4x3_rc4::IfcSignType::IfcSignType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcSignal boost::optional< ::Ifc4x3_rc4::IfcSignalTypeEnum::Value > Ifc4x3_rc4::IfcSignal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSignalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSignalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSignalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSignalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSignalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSignal::declaration() const { return *IFC4X3_RC4_IfcSignal_type; } @@ -21250,11 +21250,11 @@ Ifc4x3_rc4::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::opt // Function implementations for IfcSimplePropertyTemplate boost::optional< ::Ifc4x3_rc4::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4x3_rc4::IfcSimplePropertyTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSimplePropertyTemplateTypeEnum::FromString(*data_->getArgument(4)); } -void Ifc4x3_rc4::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc4::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc4::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc4::IfcPropertyEnumeration* Ifc4x3_rc4::IfcSimplePropertyTemplate::Enumerators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc4::IfcPropertyEnumeration>(true); } void Ifc4x3_rc4::IfcSimplePropertyTemplate::setEnumerators(::Ifc4x3_rc4::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcUnit* Ifc4x3_rc4::IfcSimplePropertyTemplate::PrimaryUnit() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc4::IfcUnit>(true); } @@ -21262,9 +21262,9 @@ void Ifc4x3_rc4::IfcSimplePropertyTemplate::setPrimaryUnit(::Ifc4x3_rc4::IfcUnit ::Ifc4x3_rc4::IfcUnit* Ifc4x3_rc4::IfcSimplePropertyTemplate::SecondaryUnit() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc4::IfcUnit>(true); } void Ifc4x3_rc4::IfcSimplePropertyTemplate::setSecondaryUnit(::Ifc4x3_rc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcSimplePropertyTemplate::Expression() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc4::IfcStateEnum::Value > Ifc4x3_rc4::IfcSimplePropertyTemplate::AccessState() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcStateEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc4::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_rc4::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcStateEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_rc4::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcStateEnum::ToString(*v)));}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSimplePropertyTemplate::declaration() const { return *IFC4X3_RC4_IfcSimplePropertyTemplate_type; } @@ -21276,9 +21276,9 @@ Ifc4x3_rc4::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_ double Ifc4x3_rc4::IfcSine::SineTerm() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcSine::setSineTerm(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSine::LinearTerm() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcSine::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcSine::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSine::ConstantTerm() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcSine::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcSine::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSine::declaration() const { return *IFC4X3_RC4_IfcSine_type; } @@ -21288,13 +21288,13 @@ Ifc4x3_rc4::IfcSine::IfcSine(::Ifc4x3_rc4::IfcAxis2Placement* v1_Position, doubl // Function implementations for IfcSite boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc4::IfcSite::RefLatitude() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc4::IfcSite::RefLongitude() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSite::RefElevation() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcSite::LandTitleNumber() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } ::Ifc4x3_rc4::IfcPostalAddress* Ifc4x3_rc4::IfcSite::SiteAddress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc4::IfcPostalAddress>(true); } void Ifc4x3_rc4::IfcSite::setSiteAddress(::Ifc4x3_rc4::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} } @@ -21306,7 +21306,7 @@ Ifc4x3_rc4::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHist // Function implementations for IfcSlab boost::optional< ::Ifc4x3_rc4::IfcSlabTypeEnum::Value > Ifc4x3_rc4::IfcSlab::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSlabTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSlabTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSlabTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSlab::declaration() const { return *IFC4X3_RC4_IfcSlab_type; } @@ -21342,11 +21342,11 @@ Ifc4x3_rc4::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcSlippageConnectionCondition boost::optional< double > Ifc4x3_rc4::IfcSlippageConnectionCondition::SlippageX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSlippageConnectionCondition::SlippageY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSlippageConnectionCondition::SlippageZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSlippageConnectionCondition::declaration() const { return *IFC4X3_RC4_IfcSlippageConnectionCondition_type; } @@ -21356,7 +21356,7 @@ Ifc4x3_rc4::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost // Function implementations for IfcSolarDevice boost::optional< ::Ifc4x3_rc4::IfcSolarDeviceTypeEnum::Value > Ifc4x3_rc4::IfcSolarDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSolarDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSolarDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSolarDevice::declaration() const { return *IFC4X3_RC4_IfcSolarDevice_type; } @@ -21392,9 +21392,9 @@ Ifc4x3_rc4::IfcSolidStratum::IfcSolidStratum(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcSpace boost::optional< ::Ifc4x3_rc4::IfcSpaceTypeEnum::Value > Ifc4x3_rc4::IfcSpace::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSpaceTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSpaceTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSpace::ElevationWithFlooring() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc4::IfcRelCoversSpaces::list::ptr Ifc4x3_rc4::IfcSpace::HasCoverings() const { return data_->getInverse(IFC4X3_RC4_IfcRelCoversSpaces_type, 4)->as(); } ::Ifc4x3_rc4::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc4::IfcSpace::BoundedBy() const { return data_->getInverse(IFC4X3_RC4_IfcRelSpaceBoundary_type, 4)->as(); } @@ -21406,7 +21406,7 @@ Ifc4x3_rc4::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHi // Function implementations for IfcSpaceHeater boost::optional< ::Ifc4x3_rc4::IfcSpaceHeaterTypeEnum::Value > Ifc4x3_rc4::IfcSpaceHeater::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSpaceHeaterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSpaceHeaterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSpaceHeater::declaration() const { return *IFC4X3_RC4_IfcSpaceHeater_type; } @@ -21428,7 +21428,7 @@ Ifc4x3_rc4::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::If ::Ifc4x3_rc4::IfcSpaceTypeEnum::Value Ifc4x3_rc4::IfcSpaceType::PredefinedType() const { return ::Ifc4x3_rc4::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc4::IfcSpaceType::setPredefinedType(::Ifc4x3_rc4::IfcSpaceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcSpaceTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcSpaceType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSpaceType::declaration() const { return *IFC4X3_RC4_IfcSpaceType_type; } @@ -21438,7 +21438,7 @@ Ifc4x3_rc4::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4x3_rc4::If // Function implementations for IfcSpatialElement boost::optional< std::string > Ifc4x3_rc4::IfcSpatialElement::LongName() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc4::IfcSpatialElement::ContainsElements() const { return data_->getInverse(IFC4X3_RC4_IfcRelContainedInSpatialStructure_type, 5)->as(); } ::Ifc4x3_rc4::IfcRelServicesBuildings::list::ptr Ifc4x3_rc4::IfcSpatialElement::ServicedBySystems() const { return data_->getInverse(IFC4X3_RC4_IfcRelServicesBuildings_type, 5)->as(); } @@ -21451,7 +21451,7 @@ Ifc4x3_rc4::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcSpatialElementType boost::optional< std::string > Ifc4x3_rc4::IfcSpatialElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSpatialElementType::declaration() const { return *IFC4X3_RC4_IfcSpatialElementType_type; } @@ -21461,7 +21461,7 @@ Ifc4x3_rc4::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId // Function implementations for IfcSpatialStructureElement boost::optional< ::Ifc4x3_rc4::IfcElementCompositionEnum::Value > Ifc4x3_rc4::IfcSpatialStructureElement::CompositionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_rc4::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElementCompositionEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_rc4::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcElementCompositionEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSpatialStructureElement::declaration() const { return *IFC4X3_RC4_IfcSpatialStructureElement_type; } @@ -21479,7 +21479,7 @@ Ifc4x3_rc4::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std:: // Function implementations for IfcSpatialZone boost::optional< ::Ifc4x3_rc4::IfcSpatialZoneTypeEnum::Value > Ifc4x3_rc4::IfcSpatialZone::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSpatialZoneTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSpatialZoneTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSpatialZone::declaration() const { return *IFC4X3_RC4_IfcSpatialZone_type; } @@ -21491,7 +21491,7 @@ Ifc4x3_rc4::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4x3_rc4 ::Ifc4x3_rc4::IfcSpatialZoneTypeEnum::Value Ifc4x3_rc4::IfcSpatialZoneType::PredefinedType() const { return ::Ifc4x3_rc4::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc4::IfcSpatialZoneType::setPredefinedType(::Ifc4x3_rc4::IfcSpatialZoneTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcSpatialZoneTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcSpatialZoneType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSpatialZoneType::declaration() const { return *IFC4X3_RC4_IfcSpatialZoneType_type; } @@ -21531,7 +21531,7 @@ Ifc4x3_rc4::IfcSpiral::IfcSpiral(::Ifc4x3_rc4::IfcAxis2Placement* v1_Position) : // Function implementations for IfcStackTerminal boost::optional< ::Ifc4x3_rc4::IfcStackTerminalTypeEnum::Value > Ifc4x3_rc4::IfcStackTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcStackTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcStackTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStackTerminal::declaration() const { return *IFC4X3_RC4_IfcStackTerminal_type; } @@ -21551,7 +21551,7 @@ Ifc4x3_rc4::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, // Function implementations for IfcStair boost::optional< ::Ifc4x3_rc4::IfcStairTypeEnum::Value > Ifc4x3_rc4::IfcStair::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcStairTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcStairTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcStairTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStair::declaration() const { return *IFC4X3_RC4_IfcStair_type; } @@ -21561,15 +21561,15 @@ Ifc4x3_rc4::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHi // Function implementations for IfcStairFlight boost::optional< int > Ifc4x3_rc4::IfcStairFlight::NumberOfRisers() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } int v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< int > Ifc4x3_rc4::IfcStairFlight::NumberOfTreads() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStairFlight::RiserHeight() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStairFlight::TreadLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc4::IfcStairFlightTypeEnum::Value > Ifc4x3_rc4::IfcStairFlight::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcStairFlightTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc4::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcStairFlightTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcStairFlightTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStairFlight::declaration() const { return *IFC4X3_RC4_IfcStairFlight_type; } @@ -21599,7 +21599,7 @@ Ifc4x3_rc4::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4x3_rc4::If // Function implementations for IfcStructuralAction boost::optional< bool > Ifc4x3_rc4::IfcStructuralAction::DestabilizingLoad() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralAction::declaration() const { return *IFC4X3_RC4_IfcStructuralAction_type; } @@ -21626,9 +21626,9 @@ void Ifc4x3_rc4::IfcStructuralAnalysisModel::setPredefinedType(::Ifc4x3_rc4::Ifc ::Ifc4x3_rc4::IfcAxis2Placement3D* Ifc4x3_rc4::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcAxis2Placement3D>(true); } void Ifc4x3_rc4::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc4x3_rc4::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcStructuralLoadGroup >::ptr > Ifc4x3_rc4::IfcStructuralAnalysisModel::LoadedBy() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc4::IfcStructuralLoadGroup >(); } -void Ifc4x3_rc4::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcStructuralResultGroup >::ptr > Ifc4x3_rc4::IfcStructuralAnalysisModel::HasResults() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc4::IfcStructuralResultGroup >(); } -void Ifc4x3_rc4::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcObjectPlacement* Ifc4x3_rc4::IfcStructuralAnalysisModel::SharedPlacement() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc4::IfcObjectPlacement>(true); } void Ifc4x3_rc4::IfcStructuralAnalysisModel::setSharedPlacement(::Ifc4x3_rc4::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } @@ -21651,7 +21651,7 @@ Ifc4x3_rc4::IfcStructuralConnection::IfcStructuralConnection(std::string v1_Glob // Function implementations for IfcStructuralConnectionCondition boost::optional< std::string > Ifc4x3_rc4::IfcStructuralConnectionCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralConnectionCondition::declaration() const { return *IFC4X3_RC4_IfcStructuralConnectionCondition_type; } @@ -21661,7 +21661,7 @@ Ifc4x3_rc4::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(b // Function implementations for IfcStructuralCurveAction boost::optional< ::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc4::IfcStructuralCurveAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x3_rc4::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_rc4::IfcStructuralCurveAction::PredefinedType() const { return ::Ifc4x3_rc4::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x3_rc4::IfcStructuralCurveAction::setPredefinedType(::Ifc4x3_rc4::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -21730,7 +21730,7 @@ Ifc4x3_rc4::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_ // Function implementations for IfcStructuralLoad boost::optional< std::string > Ifc4x3_rc4::IfcStructuralLoad::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralLoad::declaration() const { return *IFC4X3_RC4_IfcStructuralLoad_type; } @@ -21740,7 +21740,7 @@ Ifc4x3_rc4::IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > // Function implementations for IfcStructuralLoadCase boost::optional< std::vector< double > /*[3:3]*/ > Ifc4x3_rc4::IfcStructuralLoadCase::SelfWeightCoefficients() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< double > /*[3:3]*/ v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralLoadCase::declaration() const { return *IFC4X3_RC4_IfcStructuralLoadCase_type; } @@ -21752,7 +21752,7 @@ Ifc4x3_rc4::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId aggregate_of< ::Ifc4x3_rc4::IfcStructuralLoadOrResult >::ptr Ifc4x3_rc4::IfcStructuralLoadConfiguration::Values() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc4::IfcStructuralLoadOrResult >(); } void Ifc4x3_rc4::IfcStructuralLoadConfiguration::setValues(aggregate_of< ::Ifc4x3_rc4::IfcStructuralLoadOrResult >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::vector< std::vector< double > > > Ifc4x3_rc4::IfcStructuralLoadConfiguration::Locations() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralLoadConfiguration::declaration() const { return *IFC4X3_RC4_IfcStructuralLoadConfiguration_type; } @@ -21768,9 +21768,9 @@ void Ifc4x3_rc4::IfcStructuralLoadGroup::setActionType(::Ifc4x3_rc4::IfcActionTy ::Ifc4x3_rc4::IfcActionSourceTypeEnum::Value Ifc4x3_rc4::IfcStructuralLoadGroup::ActionSource() const { return ::Ifc4x3_rc4::IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc4::IfcStructuralLoadGroup::setActionSource(::Ifc4x3_rc4::IfcActionSourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcActionSourceTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadGroup::Coefficient() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcStructuralLoadGroup::Purpose() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } ::Ifc4x3_rc4::IfcStructuralResultGroup::list::ptr Ifc4x3_rc4::IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(IFC4X3_RC4_IfcStructuralResultGroup_type, 6)->as(); } ::Ifc4x3_rc4::IfcStructuralAnalysisModel::list::ptr Ifc4x3_rc4::IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(IFC4X3_RC4_IfcStructuralAnalysisModel_type, 7)->as(); } @@ -21782,17 +21782,17 @@ Ifc4x3_rc4::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_Global // Function implementations for IfcStructuralLoadLinearForce boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadLinearForce::LinearForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadLinearForce::LinearForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadLinearForce::LinearForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadLinearForce::LinearMomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadLinearForce::LinearMomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralLoadLinearForce::declaration() const { return *IFC4X3_RC4_IfcStructuralLoadLinearForce_type; } @@ -21810,11 +21810,11 @@ Ifc4x3_rc4::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional // Function implementations for IfcStructuralLoadPlanarForce boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralLoadPlanarForce::declaration() const { return *IFC4X3_RC4_IfcStructuralLoadPlanarForce_type; } @@ -21824,17 +21824,17 @@ Ifc4x3_rc4::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::op // Function implementations for IfcStructuralLoadSingleDisplacement boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::declaration() const { return *IFC4X3_RC4_IfcStructuralLoadSingleDisplacement_type; } @@ -21844,7 +21844,7 @@ Ifc4x3_rc4::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplace // Function implementations for IfcStructuralLoadSingleDisplacementDistortion boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IFC4X3_RC4_IfcStructuralLoadSingleDisplacementDistortion_type; } @@ -21854,17 +21854,17 @@ Ifc4x3_rc4::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSing // Function implementations for IfcStructuralLoadSingleForce boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleForce::ForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleForce::ForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleForce::ForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleForce::MomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleForce::MomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleForce::MomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralLoadSingleForce::declaration() const { return *IFC4X3_RC4_IfcStructuralLoadSingleForce_type; } @@ -21874,7 +21874,7 @@ Ifc4x3_rc4::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::op // Function implementations for IfcStructuralLoadSingleForceWarping boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralLoadSingleForceWarping::declaration() const { return *IFC4X3_RC4_IfcStructuralLoadSingleForceWarping_type; } @@ -21892,11 +21892,11 @@ Ifc4x3_rc4::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< st // Function implementations for IfcStructuralLoadTemperature boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadTemperature::DeltaTConstant() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadTemperature::DeltaTY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralLoadTemperature::DeltaTZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralLoadTemperature::declaration() const { return *IFC4X3_RC4_IfcStructuralLoadTemperature_type; } @@ -21972,7 +21972,7 @@ Ifc4x3_rc4::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_Gl // Function implementations for IfcStructuralSurfaceAction boost::optional< ::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc4::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} } ::Ifc4x3_rc4::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_rc4::IfcStructuralSurfaceAction::PredefinedType() const { return ::Ifc4x3_rc4::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(11)); } void Ifc4x3_rc4::IfcStructuralSurfaceAction::setPredefinedType(::Ifc4x3_rc4::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} } @@ -21994,7 +21994,7 @@ Ifc4x3_rc4::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std:: ::Ifc4x3_rc4::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4x3_rc4::IfcStructuralSurfaceMember::PredefinedType() const { return ::Ifc4x3_rc4::IfcStructuralSurfaceMemberTypeEnum::FromString(*data_->getArgument(7)); } void Ifc4x3_rc4::IfcStructuralSurfaceMember::setPredefinedType(::Ifc4x3_rc4::IfcStructuralSurfaceMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcStructuralSurfaceMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcStructuralSurfaceMember::Thickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStructuralSurfaceMember::declaration() const { return *IFC4X3_RC4_IfcStructuralSurfaceMember_type; } @@ -22034,7 +22034,7 @@ void Ifc4x3_rc4::IfcStyledItem::setItem(::Ifc4x3_rc4::IfcRepresentationItem* v) aggregate_of< ::Ifc4x3_rc4::IfcPresentationStyle >::ptr Ifc4x3_rc4::IfcStyledItem::Styles() const { aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc4::IfcPresentationStyle >(); } void Ifc4x3_rc4::IfcStyledItem::setStyles(aggregate_of< ::Ifc4x3_rc4::IfcPresentationStyle >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcStyledItem::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcStyledItem::declaration() const { return *IFC4X3_RC4_IfcStyledItem_type; } @@ -22052,7 +22052,7 @@ Ifc4x3_rc4::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4x3_rc4::IfcRe // Function implementations for IfcSubContractResource boost::optional< ::Ifc4x3_rc4::IfcSubContractResourceTypeEnum::Value > Ifc4x3_rc4::IfcSubContractResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSubContractResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSubContractResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSubContractResource::declaration() const { return *IFC4X3_RC4_IfcSubContractResource_type; } @@ -22114,7 +22114,7 @@ Ifc4x3_rc4::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4x // Function implementations for IfcSurfaceFeature boost::optional< ::Ifc4x3_rc4::IfcSurfaceFeatureTypeEnum::Value > Ifc4x3_rc4::IfcSurfaceFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSurfaceFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSurfaceFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSurfaceFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcRelAdheresToElement::list::ptr Ifc4x3_rc4::IfcSurfaceFeature::AdheresToElement() const { return data_->getInverse(IFC4X3_RC4_IfcRelAdheresToElement_type, 5)->as(); } @@ -22147,11 +22147,11 @@ Ifc4x3_rc4::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4x3_rc4::IfcProf // Function implementations for IfcSurfaceReinforcementArea boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc4::IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc4::IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSurfaceReinforcementArea::declaration() const { return *IFC4X3_RC4_IfcSurfaceReinforcementArea_type; } @@ -22189,9 +22189,9 @@ Ifc4x3_rc4::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4x3_rc4::IfcCo // Function implementations for IfcSurfaceStyleRefraction boost::optional< double > Ifc4x3_rc4::IfcSurfaceStyleRefraction::RefractionIndex() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSurfaceStyleRefraction::DispersionFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSurfaceStyleRefraction::declaration() const { return *IFC4X3_RC4_IfcSurfaceStyleRefraction_type; } @@ -22225,7 +22225,7 @@ Ifc4x3_rc4::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4x3_rc4::Ifc ::Ifc4x3_rc4::IfcColourRgb* Ifc4x3_rc4::IfcSurfaceStyleShading::SurfaceColour() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc4::IfcColourRgb>(true); } void Ifc4x3_rc4::IfcSurfaceStyleShading::setSurfaceColour(::Ifc4x3_rc4::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSurfaceStyleShading::Transparency() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSurfaceStyleShading::declaration() const { return *IFC4X3_RC4_IfcSurfaceStyleShading_type; } @@ -22249,11 +22249,11 @@ void Ifc4x3_rc4::IfcSurfaceTexture::setRepeatS(bool v) { {IfcWrite::IfcWriteArgu bool Ifc4x3_rc4::IfcSurfaceTexture::RepeatT() const { bool v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcSurfaceTexture::setRepeatT(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcSurfaceTexture::Mode() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcCartesianTransformationOperator2D* Ifc4x3_rc4::IfcSurfaceTexture::TextureTransform() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcCartesianTransformationOperator2D>(true); } void Ifc4x3_rc4::IfcSurfaceTexture::setTextureTransform(::Ifc4x3_rc4::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcSurfaceTexture::Parameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc4::IfcTextureCoordinate::list::ptr Ifc4x3_rc4::IfcSurfaceTexture::IsMappedBy() const { return data_->getInverse(IFC4X3_RC4_IfcTextureCoordinate_type, 0)->as(); } ::Ifc4x3_rc4::IfcSurfaceStyleWithTextures::list::ptr Ifc4x3_rc4::IfcSurfaceTexture::UsedInStyles() const { return data_->getInverse(IFC4X3_RC4_IfcSurfaceStyleWithTextures_type, 0)->as(); } @@ -22281,11 +22281,11 @@ void Ifc4x3_rc4::IfcSweptDiskSolid::setDirectrix(::Ifc4x3_rc4::IfcCurve* v) { {I double Ifc4x3_rc4::IfcSweptDiskSolid::Radius() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcSweptDiskSolid::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSweptDiskSolid::InnerRadius() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSweptDiskSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcSweptDiskSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSweptDiskSolid::declaration() const { return *IFC4X3_RC4_IfcSweptDiskSolid_type; } @@ -22295,7 +22295,7 @@ Ifc4x3_rc4::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4x3_rc4::IfcCurve* v1_Dire // Function implementations for IfcSweptDiskSolidPolygonal boost::optional< double > Ifc4x3_rc4::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSweptDiskSolidPolygonal::declaration() const { return *IFC4X3_RC4_IfcSweptDiskSolidPolygonal_type; } @@ -22317,7 +22317,7 @@ Ifc4x3_rc4::IfcSweptSurface::IfcSweptSurface(::Ifc4x3_rc4::IfcProfileDef* v1_Swe // Function implementations for IfcSwitchingDevice boost::optional< ::Ifc4x3_rc4::IfcSwitchingDeviceTypeEnum::Value > Ifc4x3_rc4::IfcSwitchingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSwitchingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSwitchingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSwitchingDevice::declaration() const { return *IFC4X3_RC4_IfcSwitchingDevice_type; } @@ -22347,7 +22347,7 @@ Ifc4x3_rc4::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwner // Function implementations for IfcSystemFurnitureElement boost::optional< ::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc4::IfcSystemFurnitureElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSystemFurnitureElement::declaration() const { return *IFC4X3_RC4_IfcSystemFurnitureElement_type; } @@ -22357,7 +22357,7 @@ Ifc4x3_rc4::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_ // Function implementations for IfcSystemFurnitureElementType boost::optional< ::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc4::IfcSystemFurnitureElementType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcSystemFurnitureElementType::declaration() const { return *IFC4X3_RC4_IfcSystemFurnitureElementType_type; } @@ -22375,15 +22375,15 @@ void Ifc4x3_rc4::IfcTShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc4::IfcTShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcTShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTShapeProfileDef::WebEdgeRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTShapeProfileDef::WebSlope() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTShapeProfileDef::declaration() const { return *IFC4X3_RC4_IfcTShapeProfileDef_type; } @@ -22393,11 +22393,11 @@ Ifc4x3_rc4::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4x3_rc4::IfcProfileTyp // Function implementations for IfcTable boost::optional< std::string > Ifc4x3_rc4::IfcTable::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcTableRow >::ptr > Ifc4x3_rc4::IfcTable::Rows() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc4::IfcTableRow >(); } -void Ifc4x3_rc4::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcTableColumn >::ptr > Ifc4x3_rc4::IfcTable::Columns() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc4::IfcTableColumn >(); } -void Ifc4x3_rc4::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTable::declaration() const { return *IFC4X3_RC4_IfcTable_type; } @@ -22407,11 +22407,11 @@ Ifc4x3_rc4::IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::op // Function implementations for IfcTableColumn boost::optional< std::string > Ifc4x3_rc4::IfcTableColumn::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTableColumn::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTableColumn::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcUnit* Ifc4x3_rc4::IfcTableColumn::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcUnit>(true); } void Ifc4x3_rc4::IfcTableColumn::setUnit(::Ifc4x3_rc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc4::IfcReference* Ifc4x3_rc4::IfcTableColumn::ReferencePath() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc4::IfcReference>(true); } @@ -22425,9 +22425,9 @@ Ifc4x3_rc4::IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Ide // Function implementations for IfcTableRow boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc4::IfcTableRow::RowCells() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(0); return v; } -void Ifc4x3_rc4::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} } +void Ifc4x3_rc4::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} } boost::optional< bool > Ifc4x3_rc4::IfcTableRow::IsHeading() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTableRow::declaration() const { return *IFC4X3_RC4_IfcTableRow_type; } @@ -22437,7 +22437,7 @@ Ifc4x3_rc4::IfcTableRow::IfcTableRow(boost::optional< aggregate_of_instance::ptr // Function implementations for IfcTank boost::optional< ::Ifc4x3_rc4::IfcTankTypeEnum::Value > Ifc4x3_rc4::IfcTank::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcTankTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTankTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTankTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTank::declaration() const { return *IFC4X3_RC4_IfcTank_type; } @@ -22457,17 +22457,17 @@ Ifc4x3_rc4::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcTask boost::optional< std::string > Ifc4x3_rc4::IfcTask::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTask::WorkMethod() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } bool Ifc4x3_rc4::IfcTask::IsMilestone() const { bool v = *data_->getArgument(9); return v; } void Ifc4x3_rc4::IfcTask::setIsMilestone(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} } boost::optional< int > Ifc4x3_rc4::IfcTask::Priority() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } int v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } ::Ifc4x3_rc4::IfcTaskTime* Ifc4x3_rc4::IfcTask::TaskTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc4::IfcTaskTime>(true); } void Ifc4x3_rc4::IfcTask::setTaskTime(::Ifc4x3_rc4::IfcTaskTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< ::Ifc4x3_rc4::IfcTaskTypeEnum::Value > Ifc4x3_rc4::IfcTask::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcTaskTypeEnum::FromString(*data_->getArgument(12)); } -void Ifc4x3_rc4::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTaskTypeEnum::ToString(*v)));data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTaskTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTask::declaration() const { return *IFC4X3_RC4_IfcTask_type; } @@ -22477,39 +22477,39 @@ Ifc4x3_rc4::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwnerHist // Function implementations for IfcTaskTime boost::optional< ::Ifc4x3_rc4::IfcTaskDurationEnum::Value > Ifc4x3_rc4::IfcTaskTime::DurationType() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcTaskDurationEnum::FromString(*data_->getArgument(3)); } -void Ifc4x3_rc4::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_rc4::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTaskDurationEnum::ToString(*v)));data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_rc4::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTaskDurationEnum::ToString(*v)));}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::ScheduleDuration() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::EarlyStart() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::EarlyFinish() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::LateStart() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::LateFinish() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::FreeFloat() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::TotalFloat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< bool > Ifc4x3_rc4::IfcTaskTime::IsCritical() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } bool v = *data_->getArgument(13); return v; } -void Ifc4x3_rc4::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::StatusTime() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; } -void Ifc4x3_rc4::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::ActualDuration() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; } -void Ifc4x3_rc4::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::ActualStart() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } std::string v = *data_->getArgument(16); return v; } -void Ifc4x3_rc4::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::ActualFinish() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } std::string v = *data_->getArgument(17); return v; } -void Ifc4x3_rc4::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskTime::RemainingTime() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; } -void Ifc4x3_rc4::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTaskTime::Completion() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } double v = *data_->getArgument(19); return v; } -void Ifc4x3_rc4::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} } +void Ifc4x3_rc4::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTaskTime::declaration() const { return *IFC4X3_RC4_IfcTaskTime_type; } @@ -22531,7 +22531,7 @@ Ifc4x3_rc4::IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::str ::Ifc4x3_rc4::IfcTaskTypeEnum::Value Ifc4x3_rc4::IfcTaskType::PredefinedType() const { return ::Ifc4x3_rc4::IfcTaskTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc4::IfcTaskType::setPredefinedType(::Ifc4x3_rc4::IfcTaskTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcTaskTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTaskType::WorkMethod() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTaskType::declaration() const { return *IFC4X3_RC4_IfcTaskType_type; } @@ -22541,17 +22541,17 @@ Ifc4x3_rc4::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcTelecomAddress boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcTelecomAddress::TelephoneNumbers() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcTelecomAddress::FacsimileNumbers() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTelecomAddress::PagerNumber() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcTelecomAddress::ElectronicMailAddresses() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTelecomAddress::WWWHomePageURL() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc4::IfcTelecomAddress::MessagingIDs() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTelecomAddress::declaration() const { return *IFC4X3_RC4_IfcTelecomAddress_type; } @@ -22561,21 +22561,21 @@ Ifc4x3_rc4::IfcTelecomAddress::IfcTelecomAddress(boost::optional< ::Ifc4x3_rc4:: // Function implementations for IfcTendon boost::optional< ::Ifc4x3_rc4::IfcTendonTypeEnum::Value > Ifc4x3_rc4::IfcTendon::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTendonTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTendonTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTendon::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTendon::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTendon::TensionForce() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTendon::PreStress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc4::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTendon::FrictionCoefficient() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc4::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc4::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTendon::AnchorageSlip() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc4::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc4::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTendon::MinCurvatureRadius() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; } -void Ifc4x3_rc4::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} } +void Ifc4x3_rc4::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTendon::declaration() const { return *IFC4X3_RC4_IfcTendon_type; } @@ -22585,7 +22585,7 @@ Ifc4x3_rc4::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwner // Function implementations for IfcTendonAnchor boost::optional< ::Ifc4x3_rc4::IfcTendonAnchorTypeEnum::Value > Ifc4x3_rc4::IfcTendonAnchor::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTendonAnchorTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTendonAnchorTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTendonAnchor::declaration() const { return *IFC4X3_RC4_IfcTendonAnchor_type; } @@ -22627,11 +22627,11 @@ Ifc4x3_rc4::IfcTendonConduitType::IfcTendonConduitType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcTendonTypeEnum::Value Ifc4x3_rc4::IfcTendonType::PredefinedType() const { return ::Ifc4x3_rc4::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); } void Ifc4x3_rc4::IfcTendonType::setPredefinedType(::Ifc4x3_rc4::IfcTendonTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcTendonTypeEnum::ToString(v)));data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTendonType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTendonType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< double > Ifc4x3_rc4::IfcTendonType::SheathDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTendonType::declaration() const { return *IFC4X3_RC4_IfcTendonType_type; } @@ -22693,7 +22693,7 @@ void Ifc4x3_rc4::IfcTextStyle::setTextStyle(::Ifc4x3_rc4::IfcTextStyleTextModel* ::Ifc4x3_rc4::IfcTextFontSelect* Ifc4x3_rc4::IfcTextStyle::TextFontStyle() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcTextFontSelect>(true); } void Ifc4x3_rc4::IfcTextStyle::setTextFontStyle(::Ifc4x3_rc4::IfcTextFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< bool > Ifc4x3_rc4::IfcTextStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTextStyle::declaration() const { return *IFC4X3_RC4_IfcTextStyle_type; } @@ -22705,11 +22705,11 @@ Ifc4x3_rc4::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, : std::vector< std::string > /*[1:?]*/ Ifc4x3_rc4::IfcTextStyleFontModel::FontFamily() const { std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTextStyleFontModel::FontStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTextStyleFontModel::FontVariant() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTextStyleFontModel::FontWeight() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } ::Ifc4x3_rc4::IfcSizeSelect* Ifc4x3_rc4::IfcTextStyleFontModel::FontSize() const { return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc4::IfcSizeSelect>(true); } void Ifc4x3_rc4::IfcTextStyleFontModel::setFontSize(::Ifc4x3_rc4::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} } @@ -22735,15 +22735,15 @@ Ifc4x3_rc4::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4x3_rc4: ::Ifc4x3_rc4::IfcSizeSelect* Ifc4x3_rc4::IfcTextStyleTextModel::TextIndent() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc4::IfcSizeSelect>(true); } void Ifc4x3_rc4::IfcTextStyleTextModel::setTextIndent(::Ifc4x3_rc4::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTextStyleTextModel::TextAlign() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTextStyleTextModel::TextDecoration() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } ::Ifc4x3_rc4::IfcSizeSelect* Ifc4x3_rc4::IfcTextStyleTextModel::LetterSpacing() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcSizeSelect>(true); } void Ifc4x3_rc4::IfcTextStyleTextModel::setLetterSpacing(::Ifc4x3_rc4::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } ::Ifc4x3_rc4::IfcSizeSelect* Ifc4x3_rc4::IfcTextStyleTextModel::WordSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc4::IfcSizeSelect>(true); } void Ifc4x3_rc4::IfcTextStyleTextModel::setWordSpacing(::Ifc4x3_rc4::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTextStyleTextModel::TextTransform() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcSizeSelect* Ifc4x3_rc4::IfcTextStyleTextModel::LineHeight() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc4::IfcSizeSelect>(true); } void Ifc4x3_rc4::IfcTextStyleTextModel::setLineHeight(::Ifc4x3_rc4::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } @@ -22767,7 +22767,7 @@ Ifc4x3_rc4::IfcTextureCoordinate::IfcTextureCoordinate(aggregate_of< ::Ifc4x3_rc std::string Ifc4x3_rc4::IfcTextureCoordinateGenerator::Mode() const { std::string v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcTextureCoordinateGenerator::setMode(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< std::vector< double > /*[1:?]*/ > Ifc4x3_rc4::IfcTextureCoordinateGenerator::Parameter() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[1:?]*/ v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTextureCoordinateGenerator::declaration() const { return *IFC4X3_RC4_IfcTextureCoordinateGenerator_type; } @@ -22811,11 +22811,11 @@ Ifc4x3_rc4::IfcTextureVertexList::IfcTextureVertexList(std::vector< std::vector< double Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::CubicTerm() const { double v = *data_->getArgument(1); return v; } void Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::setCubicTerm(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} } boost::optional< double > Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::QuadraticTerm() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::setQuadraticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::setQuadraticTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } boost::optional< double > Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::LinearTerm() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; } -void Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} } +void Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::setLinearTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} } boost::optional< double > Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::ConstantTerm() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::setConstantTerm(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcThirdOrderPolynomialSpiral::declaration() const { return *IFC4X3_RC4_IfcThirdOrderPolynomialSpiral_type; } @@ -22839,7 +22839,7 @@ Ifc4x3_rc4::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v std::string Ifc4x3_rc4::IfcTimeSeries::Name() const { std::string v = *data_->getArgument(0); return v; } void Ifc4x3_rc4::IfcTimeSeries::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTimeSeries::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } std::string Ifc4x3_rc4::IfcTimeSeries::StartTime() const { std::string v = *data_->getArgument(2); return v; } void Ifc4x3_rc4::IfcTimeSeries::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} } std::string Ifc4x3_rc4::IfcTimeSeries::EndTime() const { std::string v = *data_->getArgument(3); return v; } @@ -22849,7 +22849,7 @@ void Ifc4x3_rc4::IfcTimeSeries::setTimeSeriesDataType(::Ifc4x3_rc4::IfcTimeSerie ::Ifc4x3_rc4::IfcDataOriginEnum::Value Ifc4x3_rc4::IfcTimeSeries::DataOrigin() const { return ::Ifc4x3_rc4::IfcDataOriginEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc4::IfcTimeSeries::setDataOrigin(::Ifc4x3_rc4::IfcDataOriginEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcDataOriginEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTimeSeries::UserDefinedDataOrigin() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } ::Ifc4x3_rc4::IfcUnit* Ifc4x3_rc4::IfcTimeSeries::Unit() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc4::IfcUnit>(true); } void Ifc4x3_rc4::IfcTimeSeries::setUnit(::Ifc4x3_rc4::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} } @@ -22900,7 +22900,7 @@ Ifc4x3_rc4::IfcToroidalSurface::IfcToroidalSurface(::Ifc4x3_rc4::IfcAxis2Placeme // Function implementations for IfcTrackElement boost::optional< ::Ifc4x3_rc4::IfcTrackElementTypeEnum::Value > Ifc4x3_rc4::IfcTrackElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcTrackElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTrackElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTrackElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTrackElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTrackElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTrackElement::declaration() const { return *IFC4X3_RC4_IfcTrackElement_type; } @@ -22920,7 +22920,7 @@ Ifc4x3_rc4::IfcTrackElementType::IfcTrackElementType(std::string v1_GlobalId, :: // Function implementations for IfcTransformer boost::optional< ::Ifc4x3_rc4::IfcTransformerTypeEnum::Value > Ifc4x3_rc4::IfcTransformer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcTransformerTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTransformerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTransformerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTransformer::declaration() const { return *IFC4X3_RC4_IfcTransformer_type; } @@ -22976,13 +22976,13 @@ Ifc4x3_rc4::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4x3_rc4::IfcProf // Function implementations for IfcTriangulatedFaceSet boost::optional< std::vector< std::vector< double > > > Ifc4x3_rc4::IfcTriangulatedFaceSet::Normals() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(1); return v; } -void Ifc4x3_rc4::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} } +void Ifc4x3_rc4::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} } boost::optional< bool > Ifc4x3_rc4::IfcTriangulatedFaceSet::Closed() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; } -void Ifc4x3_rc4::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} } +void Ifc4x3_rc4::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} } std::vector< std::vector< int > > Ifc4x3_rc4::IfcTriangulatedFaceSet::CoordIndex() const { std::vector< std::vector< int > > v = *data_->getArgument(3); return v; } void Ifc4x3_rc4::IfcTriangulatedFaceSet::setCoordIndex(std::vector< std::vector< int > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc4::IfcTriangulatedFaceSet::PnIndex() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTriangulatedFaceSet::declaration() const { return *IFC4X3_RC4_IfcTriangulatedFaceSet_type; } @@ -23020,7 +23020,7 @@ Ifc4x3_rc4::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4x3_rc4::IfcCurve* v1_BasisCur // Function implementations for IfcTubeBundle boost::optional< ::Ifc4x3_rc4::IfcTubeBundleTypeEnum::Value > Ifc4x3_rc4::IfcTubeBundle::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTubeBundleTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcTubeBundleTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcTubeBundle::declaration() const { return *IFC4X3_RC4_IfcTubeBundle_type; } @@ -23040,9 +23040,9 @@ Ifc4x3_rc4::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcTypeObject boost::optional< std::string > Ifc4x3_rc4::IfcTypeObject::ApplicableOccurrence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPropertySetDefinition >::ptr > Ifc4x3_rc4::IfcTypeObject::HasPropertySets() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc4::IfcPropertySetDefinition >(); } -void Ifc4x3_rc4::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(5,attr);} } ::Ifc4x3_rc4::IfcRelDefinesByType::list::ptr Ifc4x3_rc4::IfcTypeObject::Types() const { return data_->getInverse(IFC4X3_RC4_IfcRelDefinesByType_type, 5)->as(); } @@ -23053,11 +23053,11 @@ Ifc4x3_rc4::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4x3_rc4:: // Function implementations for IfcTypeProcess boost::optional< std::string > Ifc4x3_rc4::IfcTypeProcess::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTypeProcess::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTypeProcess::ProcessType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcRelAssignsToProcess::list::ptr Ifc4x3_rc4::IfcTypeProcess::OperatesOn() const { return data_->getInverse(IFC4X3_RC4_IfcRelAssignsToProcess_type, 6)->as(); } @@ -23068,9 +23068,9 @@ Ifc4x3_rc4::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4x3_rc4 // Function implementations for IfcTypeProduct boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcRepresentationMap >::ptr > Ifc4x3_rc4::IfcTypeProduct::RepresentationMaps() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc4::IfcRepresentationMap >(); } -void Ifc4x3_rc4::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTypeProduct::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcRelAssignsToProduct::list::ptr Ifc4x3_rc4::IfcTypeProduct::ReferencedBy() const { return data_->getInverse(IFC4X3_RC4_IfcRelAssignsToProduct_type, 6)->as(); } @@ -23081,11 +23081,11 @@ Ifc4x3_rc4::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4x3_rc4 // Function implementations for IfcTypeResource boost::optional< std::string > Ifc4x3_rc4::IfcTypeResource::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTypeResource::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcTypeResource::ResourceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } ::Ifc4x3_rc4::IfcRelAssignsToResource::list::ptr Ifc4x3_rc4::IfcTypeResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC4_IfcRelAssignsToResource_type, 6)->as(); } @@ -23104,11 +23104,11 @@ void Ifc4x3_rc4::IfcUShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc4::IfcUShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcUShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcUShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcUShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc4::IfcUShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcUShapeProfileDef::declaration() const { return *IFC4X3_RC4_IfcUShapeProfileDef_type; } @@ -23128,7 +23128,7 @@ Ifc4x3_rc4::IfcUnitAssignment::IfcUnitAssignment(aggregate_of_instance::ptr v1_U // Function implementations for IfcUnitaryControlElement boost::optional< ::Ifc4x3_rc4::IfcUnitaryControlElementTypeEnum::Value > Ifc4x3_rc4::IfcUnitaryControlElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcUnitaryControlElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcUnitaryControlElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcUnitaryControlElement::declaration() const { return *IFC4X3_RC4_IfcUnitaryControlElement_type; } @@ -23148,7 +23148,7 @@ Ifc4x3_rc4::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::stri // Function implementations for IfcUnitaryEquipment boost::optional< ::Ifc4x3_rc4::IfcUnitaryEquipmentTypeEnum::Value > Ifc4x3_rc4::IfcUnitaryEquipment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcUnitaryEquipmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcUnitaryEquipmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcUnitaryEquipment::declaration() const { return *IFC4X3_RC4_IfcUnitaryEquipment_type; } @@ -23168,7 +23168,7 @@ Ifc4x3_rc4::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_Glob // Function implementations for IfcValve boost::optional< ::Ifc4x3_rc4::IfcValveTypeEnum::Value > Ifc4x3_rc4::IfcValve::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcValveTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcValveTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcValveTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcValve::declaration() const { return *IFC4X3_RC4_IfcValve_type; } @@ -23228,7 +23228,7 @@ Ifc4x3_rc4::IfcVertexPoint::IfcVertexPoint(::Ifc4x3_rc4::IfcPoint* v1_VertexGeom // Function implementations for IfcVibrationDamper boost::optional< ::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc4::IfcVibrationDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcVibrationDamper::declaration() const { return *IFC4X3_RC4_IfcVibrationDamper_type; } @@ -23238,7 +23238,7 @@ Ifc4x3_rc4::IfcVibrationDamper::IfcVibrationDamper(std::string v1_GlobalId, ::If // Function implementations for IfcVibrationDamperType boost::optional< ::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc4::IfcVibrationDamperType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(9)); } -void Ifc4x3_rc4::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcVibrationDamperType::declaration() const { return *IFC4X3_RC4_IfcVibrationDamperType_type; } @@ -23248,7 +23248,7 @@ Ifc4x3_rc4::IfcVibrationDamperType::IfcVibrationDamperType(std::string v1_Global // Function implementations for IfcVibrationIsolator boost::optional< ::Ifc4x3_rc4::IfcVibrationIsolatorTypeEnum::Value > Ifc4x3_rc4::IfcVibrationIsolator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcVibrationIsolatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcVibrationIsolatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcVibrationIsolator::declaration() const { return *IFC4X3_RC4_IfcVibrationIsolator_type; } @@ -23296,7 +23296,7 @@ Ifc4x3_rc4::IfcVoidStratum::IfcVoidStratum(std::string v1_GlobalId, ::Ifc4x3_rc4 // Function implementations for IfcVoidingFeature boost::optional< ::Ifc4x3_rc4::IfcVoidingFeatureTypeEnum::Value > Ifc4x3_rc4::IfcVoidingFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcVoidingFeatureTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcVoidingFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcVoidingFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcVoidingFeature::declaration() const { return *IFC4X3_RC4_IfcVoidingFeature_type; } @@ -23306,7 +23306,7 @@ Ifc4x3_rc4::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4 // Function implementations for IfcWall boost::optional< ::Ifc4x3_rc4::IfcWallTypeEnum::Value > Ifc4x3_rc4::IfcWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcWallTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcWall::declaration() const { return *IFC4X3_RC4_IfcWall_type; } @@ -23342,7 +23342,7 @@ Ifc4x3_rc4::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcWasteTerminal boost::optional< ::Ifc4x3_rc4::IfcWasteTerminalTypeEnum::Value > Ifc4x3_rc4::IfcWasteTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWasteTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWasteTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcWasteTerminal::declaration() const { return *IFC4X3_RC4_IfcWasteTerminal_type; } @@ -23370,15 +23370,15 @@ Ifc4x3_rc4::IfcWaterStratum::IfcWaterStratum(std::string v1_GlobalId, ::Ifc4x3_r // Function implementations for IfcWindow boost::optional< double > Ifc4x3_rc4::IfcWindow::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindow::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< ::Ifc4x3_rc4::IfcWindowTypeEnum::Value > Ifc4x3_rc4::IfcWindow::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcWindowTypeEnum::FromString(*data_->getArgument(10)); } -void Ifc4x3_rc4::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWindowTypeEnum::ToString(*v)));data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWindowTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} } boost::optional< ::Ifc4x3_rc4::IfcWindowTypePartitioningEnum::Value > Ifc4x3_rc4::IfcWindow::PartitioningType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(11)); } -void Ifc4x3_rc4::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_rc4::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWindowTypePartitioningEnum::ToString(*v)));data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_rc4::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWindowTypePartitioningEnum::ToString(*v)));}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcWindow::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcWindow::declaration() const { return *IFC4X3_RC4_IfcWindow_type; } @@ -23388,29 +23388,29 @@ Ifc4x3_rc4::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcOwner // Function implementations for IfcWindowLiningProperties boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::TransomThickness() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::MullionThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::FirstTransomOffset() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::SecondTransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::FirstMullionOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::SecondMullionOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } ::Ifc4x3_rc4::IfcShapeAspect* Ifc4x3_rc4::IfcWindowLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc4x3_rc4::IfcShapeAspect>(true); } void Ifc4x3_rc4::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc4x3_rc4::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::LiningOffset() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; } -void Ifc4x3_rc4::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} } +void Ifc4x3_rc4::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcWindowLiningProperties::declaration() const { return *IFC4X3_RC4_IfcWindowLiningProperties_type; } @@ -23424,9 +23424,9 @@ void Ifc4x3_rc4::IfcWindowPanelProperties::setOperationType(::Ifc4x3_rc4::IfcWin ::Ifc4x3_rc4::IfcWindowPanelPositionEnum::Value Ifc4x3_rc4::IfcWindowPanelProperties::PanelPosition() const { return ::Ifc4x3_rc4::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); } void Ifc4x3_rc4::IfcWindowPanelProperties::setPanelPosition(::Ifc4x3_rc4::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowPanelProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; } -void Ifc4x3_rc4::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcWindowPanelProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } ::Ifc4x3_rc4::IfcShapeAspect* Ifc4x3_rc4::IfcWindowPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc4::IfcShapeAspect>(true); } void Ifc4x3_rc4::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc4x3_rc4::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} } @@ -23466,9 +23466,9 @@ void Ifc4x3_rc4::IfcWindowType::setPredefinedType(::Ifc4x3_rc4::IfcWindowTypeEnu ::Ifc4x3_rc4::IfcWindowTypePartitioningEnum::Value Ifc4x3_rc4::IfcWindowType::PartitioningType() const { return ::Ifc4x3_rc4::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(10)); } void Ifc4x3_rc4::IfcWindowType::setPartitioningType(::Ifc4x3_rc4::IfcWindowTypePartitioningEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc4::IfcWindowTypePartitioningEnum::ToString(v)));data_->setArgument(10,attr);} } boost::optional< bool > Ifc4x3_rc4::IfcWindowType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; } -void Ifc4x3_rc4::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} } +void Ifc4x3_rc4::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcWindowType::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcWindowType::declaration() const { return *IFC4X3_RC4_IfcWindowType_type; } @@ -23478,11 +23478,11 @@ Ifc4x3_rc4::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4x3_rc4:: // Function implementations for IfcWorkCalendar boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcWorkTime >::ptr > Ifc4x3_rc4::IfcWorkCalendar::WorkingTimes() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc4::IfcWorkTime >(); } -void Ifc4x3_rc4::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} } +void Ifc4x3_rc4::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcWorkTime >::ptr > Ifc4x3_rc4::IfcWorkCalendar::ExceptionTimes() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc4::IfcWorkTime >(); } -void Ifc4x3_rc4::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< ::Ifc4x3_rc4::IfcWorkCalendarTypeEnum::Value > Ifc4x3_rc4::IfcWorkCalendar::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcWorkCalendarTypeEnum::FromString(*data_->getArgument(8)); } -void Ifc4x3_rc4::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWorkCalendarTypeEnum::ToString(*v)));data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWorkCalendarTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcWorkCalendar::declaration() const { return *IFC4X3_RC4_IfcWorkCalendar_type; } @@ -23494,17 +23494,17 @@ Ifc4x3_rc4::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4x3_r std::string Ifc4x3_rc4::IfcWorkControl::CreationDate() const { std::string v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcWorkControl::setCreationDate(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPerson >::ptr > Ifc4x3_rc4::IfcWorkControl::Creators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc4::IfcPerson >(); } -void Ifc4x3_rc4::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_rc4::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcWorkControl::Purpose() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcWorkControl::Duration() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; } -void Ifc4x3_rc4::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} } +void Ifc4x3_rc4::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcWorkControl::TotalFloat() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; } -void Ifc4x3_rc4::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} } +void Ifc4x3_rc4::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} } std::string Ifc4x3_rc4::IfcWorkControl::StartTime() const { std::string v = *data_->getArgument(11); return v; } void Ifc4x3_rc4::IfcWorkControl::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcWorkControl::FinishTime() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; } -void Ifc4x3_rc4::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} } +void Ifc4x3_rc4::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcWorkControl::declaration() const { return *IFC4X3_RC4_IfcWorkControl_type; } @@ -23514,7 +23514,7 @@ Ifc4x3_rc4::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4x3_rc4 // Function implementations for IfcWorkPlan boost::optional< ::Ifc4x3_rc4::IfcWorkPlanTypeEnum::Value > Ifc4x3_rc4::IfcWorkPlan::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcWorkPlanTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc4::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWorkPlanTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWorkPlanTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcWorkPlan::declaration() const { return *IFC4X3_RC4_IfcWorkPlan_type; } @@ -23524,7 +23524,7 @@ Ifc4x3_rc4::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4x3_rc4::IfcO // Function implementations for IfcWorkSchedule boost::optional< ::Ifc4x3_rc4::IfcWorkScheduleTypeEnum::Value > Ifc4x3_rc4::IfcWorkSchedule::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc4::IfcWorkScheduleTypeEnum::FromString(*data_->getArgument(13)); } -void Ifc4x3_rc4::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWorkScheduleTypeEnum::ToString(*v)));data_->setArgument(13,attr);} } +void Ifc4x3_rc4::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc4::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc4::IfcWorkScheduleTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcWorkSchedule::declaration() const { return *IFC4X3_RC4_IfcWorkSchedule_type; } @@ -23536,9 +23536,9 @@ Ifc4x3_rc4::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4x3_r ::Ifc4x3_rc4::IfcRecurrencePattern* Ifc4x3_rc4::IfcWorkTime::RecurrencePattern() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc4::IfcRecurrencePattern>(true); } void Ifc4x3_rc4::IfcWorkTime::setRecurrencePattern(::Ifc4x3_rc4::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcWorkTime::Start() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; } -void Ifc4x3_rc4::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} } +void Ifc4x3_rc4::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} } boost::optional< std::string > Ifc4x3_rc4::IfcWorkTime::Finish() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcWorkTime::declaration() const { return *IFC4X3_RC4_IfcWorkTime_type; } @@ -23556,9 +23556,9 @@ void Ifc4x3_rc4::IfcZShapeProfileDef::setWebThickness(double v) { {IfcWrite::Ifc double Ifc4x3_rc4::IfcZShapeProfileDef::FlangeThickness() const { double v = *data_->getArgument(6); return v; } void Ifc4x3_rc4::IfcZShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} } boost::optional< double > Ifc4x3_rc4::IfcZShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; } -void Ifc4x3_rc4::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} } +void Ifc4x3_rc4::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} } boost::optional< double > Ifc4x3_rc4::IfcZShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; } -void Ifc4x3_rc4::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} } +void Ifc4x3_rc4::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcZShapeProfileDef::declaration() const { return *IFC4X3_RC4_IfcZShapeProfileDef_type; } @@ -23568,7 +23568,7 @@ Ifc4x3_rc4::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4x3_rc4::IfcProfileTyp // Function implementations for IfcZone boost::optional< std::string > Ifc4x3_rc4::IfcZone::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; } -void Ifc4x3_rc4::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} } +void Ifc4x3_rc4::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} } const IfcParse::entity& Ifc4x3_rc4::IfcZone::declaration() const { return *IFC4X3_RC4_IfcZone_type; } diff --git a/src/ifcparse/Ifc4x3_rc4.h b/src/ifcparse/Ifc4x3_rc4.h index 292ce3921e..e27ef42f96 100644 --- a/src/ifcparse/Ifc4x3_rc4.h +++ b/src/ifcparse/Ifc4x3_rc4.h @@ -42,7 +42,9 @@ struct Ifc4x3_rc4 { -static const IfcParse::schema_definition& get_schema(); +IFC_PARSE_API static const IfcParse::schema_definition& get_schema(); + +IFC_PARSE_API static void clear_schema(); static const char* const Identifier; diff --git a/src/ifcparse/IfcEntityInstanceData.h b/src/ifcparse/IfcEntityInstanceData.h index ecce5f8474..e8b62b172b 100644 --- a/src/ifcparse/IfcEntityInstanceData.h +++ b/src/ifcparse/IfcEntityInstanceData.h @@ -66,8 +66,8 @@ public: Argument* getArgument(size_t i) const; - // NB: This makes a copy of the argument - void setArgument(size_t i, Argument* a, IfcUtil::ArgumentType attr_type = IfcUtil::Argument_UNKNOWN); + // NB: This makes a copy of the argument if make_copy is set + void setArgument(size_t i, Argument* a, IfcUtil::ArgumentType attr_type = IfcUtil::Argument_UNKNOWN, bool make_copy = false); virtual size_t getArgumentCount() const { if (type_ == 0) { @@ -80,6 +80,8 @@ public: } } + void clearArguments(); + const IfcParse::declaration* type() const { return type_; } diff --git a/src/ifcparse/IfcFile.h b/src/ifcparse/IfcFile.h index 9cddf017cd..f915059168 100644 --- a/src/ifcparse/IfcFile.h +++ b/src/ifcparse/IfcFile.h @@ -175,6 +175,7 @@ public: IfcFile(IfcParse::IfcSpfStream* f); IfcFile(const IfcParse::schema_definition* schema = IfcParse::schema_by_name("IFC4")); + /// Deleting the file will also delete all new instances that were added to the file (via memory allocation) virtual ~IfcFile(); file_open_status good() const { return good_; } diff --git a/src/ifcparse/IfcParse.cpp b/src/ifcparse/IfcParse.cpp index 51d344033b..3dae4f7cd6 100644 --- a/src/ifcparse/IfcParse.cpp +++ b/src/ifcparse/IfcParse.cpp @@ -1057,15 +1057,21 @@ std::string IfcEntityInstanceData::toString(bool upper) const { return ss.str(); } -IfcEntityInstanceData::~IfcEntityInstanceData() { +void IfcEntityInstanceData::clearArguments() +{ if (attributes_ != NULL) { for (size_t i = 0; i < getArgumentCount(); ++i) { delete attributes_[i]; } delete[] attributes_; + attributes_ = NULL; } } +IfcEntityInstanceData::~IfcEntityInstanceData() { + clearArguments(); +} + unsigned IfcEntityInstanceData::set_id(boost::optional i) { if (i) { return id_ = *i; @@ -1148,7 +1154,7 @@ IfcEntityInstanceData::IfcEntityInstanceData(const IfcEntityInstanceData& e) { for (unsigned int i = 0; i < count; ++i) { attributes_[i] = 0; - this->setArgument(i, e.getArgument(i), get_argument_type(e.type(), i)); + this->setArgument(i, e.getArgument(i), get_argument_type(e.type(), i), true); } } @@ -1265,131 +1271,135 @@ public: }; -void IfcEntityInstanceData::setArgument(size_t i, Argument* a, IfcUtil::ArgumentType attr_type) { +void IfcEntityInstanceData::setArgument(size_t i, Argument* a, IfcUtil::ArgumentType attr_type, bool make_copy) { if (attributes_ == 0) { load(); } - - if (attr_type == IfcUtil::Argument_UNKNOWN) { - attr_type = a->type(); - } else if (a->isNull()) { - attr_type = IfcUtil::Argument_NULL; - } - - IfcWrite::IfcWriteArgument* copy = new IfcWrite::IfcWriteArgument(); - - switch (attr_type) { - case IfcUtil::Argument_NULL: - copy->set(boost::blank()); - break; - case IfcUtil::Argument_DERIVED: - copy->set(IfcWrite::IfcWriteArgument::Derived()); - break; - case IfcUtil::Argument_INT: - copy->set(static_cast(*a)); - break; - case IfcUtil::Argument_BOOL: - copy->set(static_cast(*a)); - break; - case IfcUtil::Argument_LOGICAL: { - boost::logic::tribool tb = *a; - copy->set(tb); - break; - } - case IfcUtil::Argument_DOUBLE: - copy->set(static_cast(*a)); - break; - case IfcUtil::Argument_STRING: - copy->set(static_cast(*a)); - break; - case IfcUtil::Argument_BINARY: { - boost::dynamic_bitset<> attr_value = *a; - copy->set(attr_value); - break; } - case IfcUtil::Argument_AGGREGATE_OF_INT: { - std::vector attr_value = *a; - copy->set(attr_value); - break; } - case IfcUtil::Argument_AGGREGATE_OF_DOUBLE: { - std::vector attr_value = *a; - copy->set(attr_value); - break; } - case IfcUtil::Argument_AGGREGATE_OF_STRING: { - std::vector attr_value = *a; - copy->set(attr_value); - break; } - case IfcUtil::Argument_AGGREGATE_OF_BINARY: { - std::vector< boost::dynamic_bitset<> > attr_value = *a; - copy->set(attr_value); - break; } - case IfcUtil::Argument_ENUMERATION: { - std::string enum_literal = a->toString(); - // Remove leading and trailing '.' - enum_literal = enum_literal.substr(1, enum_literal.size() - 2); - - const IfcParse::enumeration_type* enum_type = type()->as_enumeration_type() - ? type()->as_enumeration_type() - : type()->as_entity()->attribute_by_index(i)->type_of_attribute()-> - as_named_type()->declared_type()->as_enumeration_type(); - - std::vector::const_iterator it = std::find( - enum_type->enumeration_items().begin(), - enum_type->enumeration_items().end(), - enum_literal); - - if (it == enum_type->enumeration_items().end()) { - throw IfcParse::IfcException(enum_literal + " does not name a valid item for " + enum_type->name()); + Argument* new_attribute = a; + if (make_copy) { + if (attr_type == IfcUtil::Argument_UNKNOWN) { + attr_type = a->type(); + } else if (a->isNull()) { + attr_type = IfcUtil::Argument_NULL; } - copy->set(IfcWrite::IfcWriteArgument::EnumerationReference(it - enum_type->enumeration_items().begin(), it->c_str())); - break; } - case IfcUtil::Argument_ENTITY_INSTANCE: { - copy->set(static_cast(*a)); - break; } - case IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE: { - aggregate_of_instance::ptr instances = *a; - aggregate_of_instance::ptr mapped_instances(new aggregate_of_instance); - // @todo mapped_instances are not actually mapped to the file using add(). - for (aggregate_of_instance::it it = instances->begin(); it != instances->end(); ++it) { - mapped_instances->push(*it); + IfcWrite::IfcWriteArgument* copy = new IfcWrite::IfcWriteArgument(); + + switch (attr_type) { + case IfcUtil::Argument_NULL: + copy->set(boost::blank()); + break; + case IfcUtil::Argument_DERIVED: + copy->set(IfcWrite::IfcWriteArgument::Derived()); + break; + case IfcUtil::Argument_INT: + copy->set(static_cast(*a)); + break; + case IfcUtil::Argument_BOOL: + copy->set(static_cast(*a)); + break; + case IfcUtil::Argument_LOGICAL: { + boost::logic::tribool tb = *a; + copy->set(tb); + break; } - copy->set(mapped_instances); - break; } - case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_INT: { - std::vector< std::vector > attr_value = *a; - copy->set(attr_value); - break; } - case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_DOUBLE: { - std::vector< std::vector > attr_value = *a; - copy->set(attr_value); - break; } - case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_ENTITY_INSTANCE: { - aggregate_of_aggregate_of_instance::ptr instances = *a; - aggregate_of_aggregate_of_instance::ptr mapped_instances(new aggregate_of_aggregate_of_instance); - for (aggregate_of_aggregate_of_instance::outer_it it = instances->begin(); it != instances->end(); ++it) { - std::vector inner; - for (aggregate_of_aggregate_of_instance::inner_it jt = it->begin(); jt != it->end(); ++jt) { - inner.push_back(*jt); + case IfcUtil::Argument_DOUBLE: + copy->set(static_cast(*a)); + break; + case IfcUtil::Argument_STRING: + copy->set(static_cast(*a)); + break; + case IfcUtil::Argument_BINARY: { + boost::dynamic_bitset<> attr_value = *a; + copy->set(attr_value); + break; } + case IfcUtil::Argument_AGGREGATE_OF_INT: { + std::vector attr_value = *a; + copy->set(attr_value); + break; } + case IfcUtil::Argument_AGGREGATE_OF_DOUBLE: { + std::vector attr_value = *a; + copy->set(attr_value); + break; } + case IfcUtil::Argument_AGGREGATE_OF_STRING: { + std::vector attr_value = *a; + copy->set(attr_value); + break; } + case IfcUtil::Argument_AGGREGATE_OF_BINARY: { + std::vector< boost::dynamic_bitset<> > attr_value = *a; + copy->set(attr_value); + break; } + case IfcUtil::Argument_ENUMERATION: { + std::string enum_literal = a->toString(); + // Remove leading and trailing '.' + enum_literal = enum_literal.substr(1, enum_literal.size() - 2); + + const IfcParse::enumeration_type* enum_type = type()->as_enumeration_type() + ? type()->as_enumeration_type() + : type()->as_entity()->attribute_by_index(i)->type_of_attribute()-> + as_named_type()->declared_type()->as_enumeration_type(); + + std::vector::const_iterator it = std::find( + enum_type->enumeration_items().begin(), + enum_type->enumeration_items().end(), + enum_literal); + + if (it == enum_type->enumeration_items().end()) { + throw IfcParse::IfcException(enum_literal + " does not name a valid item for " + enum_type->name()); } - mapped_instances->push(inner); - } - copy->set(mapped_instances); - break; } - case IfcUtil::Argument_EMPTY_AGGREGATE: - case IfcUtil::Argument_AGGREGATE_OF_EMPTY_AGGREGATE: { - IfcUtil::ArgumentType t2 = IfcUtil::from_parameter_type(type()->as_entity()->attribute_by_index(i)->type_of_attribute()); - delete copy; - copy = 0; - setArgument(i, a, t2); - break; } - default: - case IfcUtil::Argument_UNKNOWN: - throw IfcParse::IfcException(std::string("Unknown attribute encountered: '") + a->toString() + "' at index '" + boost::lexical_cast(i) + "'"); - break; - } - if (!copy) { - return; + copy->set(IfcWrite::IfcWriteArgument::EnumerationReference(it - enum_type->enumeration_items().begin(), it->c_str())); + break; } + case IfcUtil::Argument_ENTITY_INSTANCE: { + copy->set(static_cast(*a)); + break; } + case IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE: { + aggregate_of_instance::ptr instances = *a; + aggregate_of_instance::ptr mapped_instances(new aggregate_of_instance); + // @todo mapped_instances are not actually mapped to the file using add(). + for (aggregate_of_instance::it it = instances->begin(); it != instances->end(); ++it) { + mapped_instances->push(*it); + } + copy->set(mapped_instances); + break; } + case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_INT: { + std::vector< std::vector > attr_value = *a; + copy->set(attr_value); + break; } + case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_DOUBLE: { + std::vector< std::vector > attr_value = *a; + copy->set(attr_value); + break; } + case IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_ENTITY_INSTANCE: { + aggregate_of_aggregate_of_instance::ptr instances = *a; + aggregate_of_aggregate_of_instance::ptr mapped_instances(new aggregate_of_aggregate_of_instance); + for (aggregate_of_aggregate_of_instance::outer_it it = instances->begin(); it != instances->end(); ++it) { + std::vector inner; + for (aggregate_of_aggregate_of_instance::inner_it jt = it->begin(); jt != it->end(); ++jt) { + inner.push_back(*jt); + } + mapped_instances->push(inner); + } + copy->set(mapped_instances); + break; } + case IfcUtil::Argument_EMPTY_AGGREGATE: + case IfcUtil::Argument_AGGREGATE_OF_EMPTY_AGGREGATE: { + IfcUtil::ArgumentType t2 = IfcUtil::from_parameter_type(type()->as_entity()->attribute_by_index(i)->type_of_attribute()); + delete copy; + copy = 0; + setArgument(i, a, t2, make_copy); + break; } + default: + case IfcUtil::Argument_UNKNOWN: + throw IfcParse::IfcException(std::string("Unknown attribute encountered: '") + a->toString() + "' at index '" + boost::lexical_cast(i) + "'"); + break; + } + + if (!copy) { + return; + } + + new_attribute = copy; } if (attributes_[i] != 0) { @@ -1403,10 +1413,10 @@ void IfcEntityInstanceData::setArgument(size_t i, Argument* a, IfcUtil::Argument if (this->file) { register_inverse_visitor visitor(*this->file, *this); - apply_individual_instance_visitor(copy, i).apply(visitor); + apply_individual_instance_visitor(new_attribute, i).apply(visitor); } - attributes_[i] = copy; + attributes_[i] = new_attribute; } // @@ -1848,8 +1858,12 @@ IfcUtil::IfcBaseClass* IfcFile::addEntity(IfcUtil::IfcBaseClass* entity, int id) we->setArgument(i, copy); } else if (decl && decl->is(*schema()->declaration_by_name("IfcLengthMeasure"))) { if (boost::math::isnan(conversion_factor)) { - const std::pair this_file_unit = getUnit("LENGTHUNIT"); - const std::pair other_file_unit = other_file->getUnit("LENGTHUNIT"); + std::pair this_file_unit = { nullptr, 1.0 }; + std::pair other_file_unit = { nullptr, 1.0 }; + try { + this_file_unit = getUnit("LENGTHUNIT"); + other_file_unit = other_file->getUnit("LENGTHUNIT"); + } catch (IfcParse::IfcException&) {} if (this_file_unit.first && other_file_unit.first) { conversion_factor = other_file_unit.second / this_file_unit.second; } else { @@ -2260,8 +2274,15 @@ IfcUtil::IfcBaseClass* IfcFile::instance_by_guid(const std::string& guid) { // FIXME: Test destructor to delete entity and arg allocations IfcFile::~IfcFile() { - for( entity_by_id_t::const_iterator it = byid.begin(); it != byid.end(); ++ it ) { - delete it->second; + std::set entities_to_delete; + for (const auto& pair : byid) { + entities_to_delete.insert(pair.second); + } + for (const auto& pair : entity_file_map) { + entities_to_delete.insert(pair.second); + } + for (auto entity : entities_to_delete) { + delete entity; } delete stream; delete tokens; diff --git a/src/ifcparse/IfcParse.h b/src/ifcparse/IfcParse.h index 8b0edf4880..484345128f 100644 --- a/src/ifcparse/IfcParse.h +++ b/src/ifcparse/IfcParse.h @@ -55,18 +55,6 @@ #include "../ifcparse/IfcSpfStream.h" -#if defined(__clang__) -# define my_thread_local thread_local -#elif defined(__GNUC__) -# define my_thread_local __thread -#elif __STDC_VERSION__ >= 201112L -# define my_thread_local _Thread_local -#elif defined(_MSC_VER) -# define my_thread_local __declspec(thread) -#else -# error Cannot define thread_local -#endif - namespace IfcParse { class IfcFile; diff --git a/src/ifcparse/IfcSchema.cpp b/src/ifcparse/IfcSchema.cpp index e9b479aae6..6c7bee5b0c 100644 --- a/src/ifcparse/IfcSchema.cpp +++ b/src/ifcparse/IfcSchema.cpp @@ -4,7 +4,14 @@ #include bool IfcParse::declaration::is(const std::string& name) const { - if (name_lower_ == boost::to_lower_copy(name)) return true; + const std::string* name_ptr = &name; + if (std::any_of(name.begin(), name.end(), [](char c) { return std::islower(c); })) { + temp_string_() = name; + boost::to_upper(temp_string_()); + name_ptr = &temp_string_(); + } + + if (name_upper_ == *name_ptr) return true; if (this->as_entity()) { return this->as_entity()->is(name); @@ -37,6 +44,14 @@ bool IfcParse::named_type::is(const IfcParse::declaration& decl) const { return declared_type()->is(decl); } +IfcParse::entity::~entity() { + for (auto attribute : attributes_) { + delete attribute; + } + for (auto inverse_attribute : inverse_attributes_) { + delete inverse_attribute; + } +} static std::map schemas; IfcParse::schema_definition::schema_definition(const std::string& name, const std::vector& declarations, instance_factory* factory) @@ -61,6 +76,7 @@ IfcParse::schema_definition::~schema_definition() { for (std::vector::const_iterator it = declarations_.begin(); it != declarations_.end(); ++it) { delete *it; } + delete factory_; } IfcUtil::IfcBaseClass* IfcParse::schema_definition::instantiate(IfcEntityInstanceData * data) const { @@ -149,3 +165,36 @@ std::vector IfcParse::schema_names() { return return_value; } + +void IfcParse::clear_schemas() { +#ifdef HAS_SCHEMA_2x3 + Ifc2x3::clear_schema(); +#endif +#ifdef HAS_SCHEMA_4 + Ifc4::clear_schema(); +#endif +#ifdef HAS_SCHEMA_4x1 + Ifc4x1::clear_schema(); +#endif +#ifdef HAS_SCHEMA_4x2 + Ifc4x2::clear_schema(); +#endif +#ifdef HAS_SCHEMA_4x3_rc1 + Ifc4x3_rc1::clear_schema(); +#endif +#ifdef HAS_SCHEMA_4x3_rc2 + Ifc4x3_rc2::clear_schema(); +#endif +#ifdef HAS_SCHEMA_4x3_rc3 + Ifc4x3_rc3::clear_schema(); +#endif +#ifdef HAS_SCHEMA_4x3_rc4 + Ifc4x3_rc4::clear_schema(); +#endif + + // clear any remaining registered schemas + // we pop schemas until map is empty, because map iteration is invalidated after each erasure + while (!schemas.empty()) { + delete schemas.begin()->second; + } +} diff --git a/src/ifcparse/IfcSchema.h b/src/ifcparse/IfcSchema.h index 5b7c805429..cb5abca5ca 100644 --- a/src/ifcparse/IfcSchema.h +++ b/src/ifcparse/IfcSchema.h @@ -24,6 +24,7 @@ #include #include #include +#include #include @@ -55,6 +56,8 @@ namespace IfcParse { class IFC_PARSE_API parameter_type { public: + virtual ~parameter_type() {} + virtual const named_type* as_named_type() const { return static_cast(0); } virtual const simple_type* as_simple_type() const { return static_cast(0); } virtual const aggregation_type* as_aggregation_type() const { return static_cast(0); } @@ -107,6 +110,8 @@ namespace IfcParse { , type_of_element_(type_of_element) {} + virtual ~aggregation_type() { delete type_of_element_; } + aggregate_type type_of_aggregation() const { return type_of_aggregation_; } int bound1() const { return bound1_; } int bound2() const { return bound2_; } @@ -119,14 +124,19 @@ namespace IfcParse { friend class schema_definition; protected: - std::string name_, name_lower_; + std::string name_, name_upper_; int index_in_schema_; mutable const schema_definition* schema_; + std::string& temp_string_() const { + static my_thread_local std::string s; + return s; + } + public: declaration(const std::string& name, int index_in_schema) : name_(name) - , name_lower_(boost::to_lower_copy(name)) + , name_upper_(boost::to_upper_copy(name)) , index_in_schema_(index_in_schema) , schema_(0) {} @@ -134,7 +144,7 @@ namespace IfcParse { virtual ~declaration() {} const std::string& name() const { return name_; } - const std::string& name_lc() const { return name_lower_; } + const std::string& name_uc() const { return name_upper_; } virtual const type_declaration* as_type_declaration() const { return static_cast(0); } virtual const select_type* as_select_type() const { return static_cast(0); } @@ -160,6 +170,8 @@ namespace IfcParse { : declaration(name, index_in_schema) , declared_type_(declared_type) {} + virtual ~type_declaration() { delete declared_type_; } + const parameter_type* declared_type() const { return declared_type_; } virtual const type_declaration* as_type_declaration() const { return this; } @@ -203,6 +215,8 @@ namespace IfcParse { , type_of_attribute_(type_of_attribute) , optional_(optional) {} + ~attribute() { delete type_of_attribute_; } + const std::string& name() const { return name_; } const parameter_type* type_of_attribute() const { return type_of_attribute_; } bool optional() const { return optional_; } @@ -277,6 +291,8 @@ namespace IfcParse { , supertype_(supertype) {} + virtual ~entity(); + bool is(const std::string& name) const { if (name == name_) return true; else if (supertype_) return supertype_->is(name); @@ -387,6 +403,8 @@ namespace IfcParse { class IFC_PARSE_API instance_factory { public: + virtual ~instance_factory() {} + virtual IfcUtil::IfcBaseClass* operator()(IfcEntityInstanceData* data) const = 0; }; @@ -404,7 +422,7 @@ namespace IfcParse { class declaration_by_name_cmp { public: bool operator()(const declaration* decl, const std::string& name) { - return decl->name_lc() < name; + return decl->name_uc() < name; } }; @@ -417,6 +435,11 @@ namespace IfcParse { instance_factory* factory_; + std::string& temp_string_() const { + static my_thread_local std::string s; + return s; + } + public: schema_definition(const std::string& name, const std::vector& declarations, instance_factory* factory); @@ -424,9 +447,14 @@ namespace IfcParse { ~schema_definition(); const declaration* declaration_by_name(const std::string& name) const { - const std::string name_lower = boost::to_lower_copy(name); - std::vector::const_iterator it = std::lower_bound(declarations_.begin(), declarations_.end(), name_lower, declaration_by_name_cmp()); - if (it == declarations_.end() || (**it).name_lc() != name_lower) { + const std::string* name_ptr = &name; + if (std::any_of(name.begin(), name.end(), [](char c) { return std::islower(c); })) { + temp_string_() = name; + boost::to_upper(temp_string_()); + name_ptr = &temp_string_(); + } + std::vector::const_iterator it = std::lower_bound(declarations_.begin(), declarations_.end(), *name_ptr, declaration_by_name_cmp()); + if (it == declarations_.end() || (**it).name_uc() != *name_ptr) { throw IfcParse::IfcException("Entity with '" + name + "' not found"); } else { return *it; @@ -453,6 +481,8 @@ namespace IfcParse { IFC_PARSE_API std::vector schema_names(); IFC_PARSE_API void register_schema(schema_definition*); + + IFC_PARSE_API void clear_schemas(); } #endif diff --git a/src/ifcparse/IfcSpfHeader.cpp b/src/ifcparse/IfcSpfHeader.cpp index 779b717152..4f17ecaeee 100644 --- a/src/ifcparse/IfcSpfHeader.cpp +++ b/src/ifcparse/IfcSpfHeader.cpp @@ -46,6 +46,10 @@ HeaderEntity::HeaderEntity(const char * const datatype, size_t size, IfcFile* fi } } +HeaderEntity::~HeaderEntity() +{ + clearArguments(); +} void IfcSpfHeader::readSemicolon() { if (!TokenFunc::isOperator(file_->tokens->Next(), ';')) { diff --git a/src/ifcparse/IfcSpfHeader.h b/src/ifcparse/IfcSpfHeader.h index 84280d7ed8..c979699fbf 100644 --- a/src/ifcparse/IfcSpfHeader.h +++ b/src/ifcparse/IfcSpfHeader.h @@ -36,6 +36,7 @@ private: HeaderEntity& operator =(const HeaderEntity&); //N/A protected: HeaderEntity(const char * const datatype, size_t size, IfcParse::IfcFile* file); + virtual ~HeaderEntity(); void setValue(unsigned int i, const std::string& s) { IfcWrite::IfcWriteArgument* argument = new IfcWrite::IfcWriteArgument; diff --git a/src/ifcparse/ifc_parse_api.h b/src/ifcparse/ifc_parse_api.h index b2dec0ba1d..6a92c6d152 100644 --- a/src/ifcparse/ifc_parse_api.h +++ b/src/ifcparse/ifc_parse_api.h @@ -34,4 +34,17 @@ #define IFC_PARSE_API #endif +#if defined(__clang__) +# define my_thread_local thread_local +#elif defined(__GNUC__) +# define my_thread_local __thread +#elif __STDC_VERSION__ >= 201112L +# define my_thread_local _Thread_local +#elif defined(_MSC_VER) +# define my_thread_local __declspec(thread) +#elif defined(SWIG) +#else +# error Cannot define thread_local +#endif + #endif diff --git a/src/ifcpatch/ifcpatch/recipes/ExtractElements.py b/src/ifcpatch/ifcpatch/recipes/ExtractElements.py index 69c5b56173..ac35c43117 100644 --- a/src/ifcpatch/ifcpatch/recipes/ExtractElements.py +++ b/src/ifcpatch/ifcpatch/recipes/ExtractElements.py @@ -50,23 +50,31 @@ class Patcher: self.file = self.new def add_element(self, element): - new_element = ifcopenshell.api.run("project.append_asset", self.new, library=self.file, element=element) + new_element = self.append_asset(element) if not new_element: return - for rel in element.ContainedInStructure: + for rel in getattr(element, "ContainedInStructure", []): spatial_element = rel.RelatingStructure - new_spatial_element = self.new.add(spatial_element) + new_spatial_element = self.append_asset(spatial_element) self.contained_ins.setdefault(spatial_element.GlobalId, set()).add(new_element) - self.add_spatial_tree(spatial_element, new_spatial_element) - for rel in element.Decomposes: - ifcopenshell.api.run("project.append_asset", self.new, library=self.file, element=rel.RelatingObject) - self.aggregates.setdefault(rel.RelatingObject.GlobalId, set()).add(new_element) + self.add_decomposition_parents(spatial_element, new_spatial_element) + self.add_decomposition_parents(element, new_element) - def add_spatial_tree(self, spatial_element, new_spatial_element): - for rel in spatial_element.Decomposes: - new = self.new.add(rel.RelatingObject) - self.aggregates.setdefault(rel.RelatingObject.GlobalId, set()).add(new_spatial_element) - self.add_spatial_tree(rel.RelatingObject, new) + def append_asset(self, element): + try: + return self.new.by_guid(element.GlobalId) + except: + pass + if element.is_a("IfcProject"): + return self.new.add(element) + return ifcopenshell.api.run("project.append_asset", self.new, library=self.file, element=element) + + def add_decomposition_parents(self, element, new_element): + for rel in element.Decomposes: + parent = rel.RelatingObject + new_parent = self.append_asset(parent) + self.aggregates.setdefault(parent.GlobalId, set()).add(new_element) + self.add_decomposition_parents(parent, new_parent) def create_spatial_tree(self): for relating_structure, related_elements in self.contained_ins.items(): diff --git a/src/ifcpatch/ifcpatch/recipes/ExtractSpaces.py b/src/ifcpatch/ifcpatch/recipes/ExtractSpaces.py deleted file mode 100644 index ca5077e401..0000000000 --- a/src/ifcpatch/ifcpatch/recipes/ExtractSpaces.py +++ /dev/null @@ -1,48 +0,0 @@ - -# IfcPatch - IFC patching utiliy -# Copyright (C) 2020, 2021 Dion Moult -# -# This file is part of IfcPatch. -# -# IfcPatch 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. -# -# IfcPatch 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 IfcPatch. If not, see . - -import ifcopenshell -import ifcopenshell.util.selector - - -class Patcher: - def __init__(self, src, file, logger, args=None): - self.src = src - self.file = file - self.logger = logger - self.args = args - - def patch(self): - self.contained_ins = {} - self.aggregates = {} - self.new = ifcopenshell.file(schema=self.file.wrapped_data.schema) - self.owner_history = None - for owner_history in self.file.by_type("IfcOwnerHistory"): - self.owner_history = self.new.add(owner_history) - break - selector = ifcopenshell.util.selector.Selector() - for space in selector.parse(self.file, ".IfcSpace"): - self.add_element(space) - self.file = self.new - - def add_element(self, element): - self.new.add(element) - for rel_aggregate in element.Decomposes: - self.add_element(rel_aggregate.RelatingObject) - self.new.add(rel_aggregate) diff --git a/src/ifcwrap/IfcGeomWrapper.i b/src/ifcwrap/IfcGeomWrapper.i index dba32a5a70..ebc76c9350 100644 --- a/src/ifcwrap/IfcGeomWrapper.i +++ b/src/ifcwrap/IfcGeomWrapper.i @@ -58,14 +58,14 @@ } } -%include "../ifcgeom/ifc_geom_api.h" -%include "../ifcgeom/IfcGeomIteratorSettings.h" -%include "../ifcgeom/IfcGeomElement.h" +%include "../ifcgeom_schema_agnostic/ifc_geom_api.h" +%include "../ifcgeom_schema_agnostic/IfcGeomIteratorSettings.h" +%include "../ifcgeom_schema_agnostic/IfcGeomElement.h" %include "../ifcgeom_schema_agnostic/IfcGeomMaterial.h" -%include "../ifcgeom/IfcGeomRepresentation.h" +%include "../ifcgeom_schema_agnostic/IfcGeomRepresentation.h" %include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" - %include "../ifcgeom_schema_agnostic/GeometrySerializer.h" + %include "../serializers/SvgSerializer.h" %include "../serializers/HdfSerializer.h" %include "../serializers/WavefrontObjSerializer.h" @@ -76,7 +76,7 @@ // A Template instantantation should be defined before it is used as a base class. // But frankly I don't care as most methods are subtlely different anyway. -%include "../ifcgeom/IfcGeomTree.h" +%include "../ifcgeom_schema_agnostic/IfcGeomTree.h" %extend IfcGeom::tree { @@ -370,6 +370,9 @@ struct ShapeRTTI : public boost::static_visitor IfcParse::IfcFile* file = instance->data().file; IfcGeom::Kernel kernel(file); + + // @todo unify this logic with the logic in iterator impl. + kernel.setValue(IfcGeom::Kernel::GV_MAX_FACES_TO_ORIENT, settings.get(IfcGeom::IteratorSettings::SEW_SHELLS) ? std::numeric_limits::infinity() : -1); kernel.setValue(IfcGeom::Kernel::GV_DIMENSIONALITY, (settings.get(IfcGeom::IteratorSettings::INCLUDE_CURVES) ? (settings.get(IfcGeom::IteratorSettings::EXCLUDE_SOLIDS_AND_SURFACES) ? -1. : 0.) : +1.)); kernel.setValue(IfcGeom::Kernel::GV_LAYERSET_FIRST, @@ -377,6 +380,39 @@ struct ShapeRTTI : public boost::static_visitor ? +1.0 : -1.0 ); + kernel.setValue(IfcGeom::Kernel::GV_NO_WIRE_INTERSECTION_CHECK, + settings.get(IfcGeom::IteratorSettings::NO_WIRE_INTERSECTION_CHECK) + ? +1.0 + : -1.0 + ); + kernel.setValue(IfcGeom::Kernel::GV_NO_WIRE_INTERSECTION_TOLERANCE, + settings.get(IfcGeom::IteratorSettings::NO_WIRE_INTERSECTION_TOLERANCE) + ? +1.0 + : -1.0 + ); + kernel.setValue(IfcGeom::Kernel::GV_PRECISION_FACTOR, + settings.get(IfcGeom::IteratorSettings::STRICT_TOLERANCE) + ? 1.0 + : 10.0 + ); + + kernel.setValue(IfcGeom::Kernel::GV_DISABLE_BOOLEAN_RESULT, + settings.get(IfcGeom::IteratorSettings::DISABLE_BOOLEAN_RESULT) + ? +1.0 + : -1.0 + ); + + kernel.setValue(IfcGeom::Kernel::GV_DEBUG_BOOLEAN, + settings.get(IfcGeom::IteratorSettings::DEBUG_BOOLEAN) + ? +1.0 + : -1.0 + ); + + kernel.setValue(IfcGeom::Kernel::GV_BOOLEAN_ATTEMPT_2D, + settings.get(IfcGeom::IteratorSettings::BOOLEAN_ATTEMPT_2D) + ? +1.0 + : -1.0 + ); if (instance->declaration().is(Schema::IfcProduct::Class())) { if (representation) { @@ -447,6 +483,22 @@ struct ShapeRTTI : public boost::static_visitor } } + // Read precision for found representation's context + auto context = ifc_representation->ContextOfItems(); + if (context->template as()) { + context = context->template as()->ParentContext(); + } + if (context->template as() && context->template as()->Precision()) { + double p = *context->template as()->Precision() + * kernel.getValue(IfcGeom::Kernel::GV_PRECISION_FACTOR); + p *= kernel.getValue(IfcGeom::Kernel::GV_LENGTH_UNIT); + if (p < 1.e-7) { + Logger::Message(Logger::LOG_WARNING, "Precision lower than 0.0000001 meter not enforced"); + p = 1.e-7; + } + kernel.setValue(IfcGeom::Kernel::GV_PRECISION, p); + } + if (!ifc_representation) { if (reps->size()) { // Return a random representation diff --git a/src/ifcwrap/IfcPython.i b/src/ifcwrap/IfcPython.i index 1c16c4f487..dd1517c998 100644 --- a/src/ifcwrap/IfcPython.i +++ b/src/ifcwrap/IfcPython.i @@ -72,13 +72,15 @@ } } +%include "../serializers/serializers_api.h" + // Include headers for the typemaps to function. This set of includes, // can probably be reduced, but for now it's identical to the includes // of the module definition below. %{ #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" #include "../ifcgeom_schema_agnostic/Serialization.h" - #include "../ifcgeom/IfcGeomTree.h" + #include "../ifcgeom_schema_agnostic/IfcGeomTree.h" #include "../serializers/SvgSerializer.h" #include "../serializers/WavefrontObjSerializer.h" @@ -131,7 +133,7 @@ %module ifcopenshell_wrapper %{ #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" #include "../ifcgeom_schema_agnostic/Serialization.h" - #include "../ifcgeom/IfcGeomTree.h" + #include "../ifcgeom_schema_agnostic/IfcGeomTree.h" #include "../serializers/SvgSerializer.h" #include "../serializers/WavefrontObjSerializer.h" diff --git a/src/qtviewer/CMakeLists.txt b/src/qtviewer/CMakeLists.txt index a1649011aa..473013a726 100644 --- a/src/qtviewer/CMakeLists.txt +++ b/src/qtviewer/CMakeLists.txt @@ -17,39 +17,25 @@ # # ################################################################################ -# Find QT header files -SET(QT_MIN_VERSION "4.5.0") -FIND_PACKAGE(Qt4 REQUIRED) -FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtOpenGL) +cmake_minimum_required(VERSION 3.1.3) -INCLUDE(${QT_USE_FILE}) -SET(CMAKE_PACKAGE_QTGUI TRUE) +message("Running CMakeLists.txt in /src/qtviewer") +message("Provide the path to Qt5 via CMAKE_PREFIX_PATH") -# Find QT header files -IF("$ENV{QT_INCLUDE_DIR}" STREQUAL "") - SET(QT_INCLUDE_DIR "/usr/include/QT4/" CACHE FILEPATH "QT4 header files") - MESSAGE(STATUS "Looking for QT4 include files in: ${QT_INCLUDE_DIR}") - MESSAGE(STATUS "Use QT_INCLUDE_DIR to specify another directory") -ELSE() - SET(QT_INCLUDE_DIR $ENV{QT_INCLUDE_DIR} CACHE FILEPATH "QT4 header files") - MESSAGE(STATUS "Looking for QT4 include files in: ${QT_INCLUDE_DIR}") -ENDIF() +find_package(Qt5 COMPONENTS Core Gui OpenGL Widgets REQUIRED) - -INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR}) - -SET(QTviewer_SRCS +add_executable(QtViewer ../../src/qtviewer/mainwindow.h ../../src/qtviewer/mainwindow.cpp ../../src/qtviewer/main.cpp ) -SET(QTviewer_MOC_SRCS - ../../src/qtviewer/mainwindow.h + +set_target_properties(QtViewer PROPERTIES + AUTOMOC On ) -QT_WRAP_CPP(QTviewer QTviewer_SRCS ${QTviewer_MOC_SRCS}) - -ADD_EXECUTABLE( QTviewer ${QTviewer_SRCS} ${QTviewer_MOC_SRCS}) -#http://www.qtcentre.org/wiki/index.php?title=Compiling_Qt4_apps_with_CMake - -TARGET_LINK_LIBRARIES (QTviewer ${IFCLIBS} ${QT_LIBRARIES} ${OPENCASCADE_LIBRARIES}) +target_link_libraries(QtViewer + ${IFCLIBS} + Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Widgets + ${OPENCASCADE_LIBRARIES} +) \ No newline at end of file diff --git a/src/serializers/ColladaSerializer.h b/src/serializers/ColladaSerializer.h index 5d7651df5a..6adc32a80c 100644 --- a/src/serializers/ColladaSerializer.h +++ b/src/serializers/ColladaSerializer.h @@ -43,13 +43,14 @@ #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" +#include "../serializers/serializers_api.h" #include "../ifcgeom_schema_agnostic/GeometrySerializer.h" #include #include -class ColladaSerializer : public WriteOnlyGeometrySerializer +class SERIALIZERS_API ColladaSerializer : public WriteOnlyGeometrySerializer { // TODO The vast amount of implement details of ColladaSerializer could be hidden to the cpp file. private: diff --git a/src/serializers/GltfSerializer.h b/src/serializers/GltfSerializer.h index c9aae885d2..ca8c68303a 100644 --- a/src/serializers/GltfSerializer.h +++ b/src/serializers/GltfSerializer.h @@ -22,6 +22,7 @@ #ifdef WITH_GLTF +#include "../serializers/serializers_api.h" #include "../ifcgeom_schema_agnostic/GeometrySerializer.h" #include @@ -29,7 +30,7 @@ using json = nlohmann::json; #include -class GltfSerializer : public WriteOnlyGeometrySerializer { +class SERIALIZERS_API GltfSerializer : public WriteOnlyGeometrySerializer { private: std::string filename_, tmp_filename1_, tmp_filename2_; std::ofstream fstream_, tmp_fstream1_, tmp_fstream2_; diff --git a/src/serializers/HdfSerializer.h b/src/serializers/HdfSerializer.h index 568ab5be54..35d82b1aae 100644 --- a/src/serializers/HdfSerializer.h +++ b/src/serializers/HdfSerializer.h @@ -28,11 +28,12 @@ #include "H5Cpp.h" +#include "../serializers/serializers_api.h" #include "../ifcgeom_schema_agnostic/GeometrySerializer.h" #define USE_BINARY -class HdfSerializer : public GeometrySerializer { +class SERIALIZERS_API HdfSerializer : public GeometrySerializer { private: const std::string hdf_filename; unsigned int vcount_total; diff --git a/src/serializers/OpenCascadeBasedSerializer.h b/src/serializers/OpenCascadeBasedSerializer.h index e289e6ebfd..57d27d6855 100644 --- a/src/serializers/OpenCascadeBasedSerializer.h +++ b/src/serializers/OpenCascadeBasedSerializer.h @@ -20,11 +20,12 @@ #ifndef OPENCASCADEBASEDSERIALIZER_H #define OPENCASCADEBASEDSERIALIZER_H +#include "../serializers/serializers_api.h" #include "../ifcgeom_schema_agnostic/IfcGeomIterator.h" #include "../ifcgeom_schema_agnostic/GeometrySerializer.h" -class OpenCascadeBasedSerializer : public WriteOnlyGeometrySerializer { +class SERIALIZERS_API OpenCascadeBasedSerializer : public WriteOnlyGeometrySerializer { OpenCascadeBasedSerializer(const OpenCascadeBasedSerializer&); //N/A OpenCascadeBasedSerializer& operator =(const OpenCascadeBasedSerializer&); //N/A protected: diff --git a/src/serializers/SvgSerializer.h b/src/serializers/SvgSerializer.h index 344e9fa568..b5cdc64d67 100644 --- a/src/serializers/SvgSerializer.h +++ b/src/serializers/SvgSerializer.h @@ -23,6 +23,7 @@ #define SVGSERIALIZER_H #include "../ifcgeom_schema_agnostic/GeometrySerializer.h" +#include "../serializers/serializers_api.h" #include "../serializers/util.h" #include "../ifcparse/utils.h" @@ -135,7 +136,7 @@ typedef boost::variant< Handle(HLRBRep_PolyAlgo) > hlr_t; -class SvgSerializer : public WriteOnlyGeometrySerializer { +class SERIALIZERS_API SvgSerializer : public WriteOnlyGeometrySerializer { public: typedef std::pair > path_object; typedef std::vector< boost::shared_ptr > float_item_list; diff --git a/src/serializers/WavefrontObjSerializer.h b/src/serializers/WavefrontObjSerializer.h index f640fd0db4..fd493ca025 100644 --- a/src/serializers/WavefrontObjSerializer.h +++ b/src/serializers/WavefrontObjSerializer.h @@ -24,10 +24,11 @@ #include #include +#include "../serializers/serializers_api.h" #include "../ifcgeom_schema_agnostic/GeometrySerializer.h" // http://people.sc.fsu.edu/~jburkardt/txt/obj_format.txt -class WaveFrontOBJSerializer : public WriteOnlyGeometrySerializer { +class SERIALIZERS_API WaveFrontOBJSerializer : public WriteOnlyGeometrySerializer { private: stream_or_filename obj_stream; stream_or_filename mtl_stream; diff --git a/src/serializers/XmlSerializer.h b/src/serializers/XmlSerializer.h index 0c18a24ddc..ac2c16f4fe 100644 --- a/src/serializers/XmlSerializer.h +++ b/src/serializers/XmlSerializer.h @@ -1,5 +1,6 @@ #define SCHEMA_METHOD +#include "../serializers/serializers_api.h" #include "../ifcgeom_schema_agnostic/Serializer.h" #include "../ifcparse/IfcFile.h" @@ -7,7 +8,7 @@ #include -class XmlSerializer : public Serializer { +class SERIALIZERS_API XmlSerializer : public Serializer { private: XmlSerializer* implementation_; @@ -26,7 +27,7 @@ public: void setFile(IfcParse::IfcFile*) { throw IfcParse::IfcException("Should be supplied on construction"); } }; -struct XmlSerializerFactory { +struct SERIALIZERS_API XmlSerializerFactory { typedef boost::function2 fn; class Factory : public std::map { diff --git a/src/serializers/schema_dependent/XmlSerializer.cpp b/src/serializers/schema_dependent/XmlSerializer.cpp index 2c0d1c27ce..816bf583f8 100644 --- a/src/serializers/schema_dependent/XmlSerializer.cpp +++ b/src/serializers/schema_dependent/XmlSerializer.cpp @@ -380,6 +380,121 @@ void format_quantities(IfcSchema::IfcPhysicalQuantity::list::ptr quantities, ptr } } +// Format IfcTask instances and insert into the DOM. +void format_tasks(IfcSchema::IfcTask* task, ptree& node) { + ptree* ntask = format_entity_instance(task, node); + + if (ntask) { +#ifdef SCHEMA_IfcTask_HAS_TaskTime + IfcSchema::IfcTaskTime* task_time = task->TaskTime(); + if (task_time) + { + format_entity_instance(task_time, *ntask); + } +#endif + +#ifdef SCHEMA_IfcProcess_HAS_IsSuccessorFrom + IfcSchema::IfcRelSequence::list::ptr successor_from = task->IsSuccessorFrom(); + for (IfcSchema::IfcRelSequence::list::it it = successor_from->begin(); it != successor_from->end(); ++it) + { + IfcSchema::IfcProcess* relating_process = (*it)->RelatingProcess(); + ptree nobject; + nobject.put(".id", relating_process->GlobalId()); + ntask->add_child("IsSuccessorFrom", nobject); + } +#endif + +#ifdef SCHEMA_IfcProcess_HAS_IsPredecessorTo + IfcSchema::IfcRelSequence::list::ptr predecessor_to = task->IsPredecessorTo(); + for (IfcSchema::IfcRelSequence::list::it it = predecessor_to->begin(); it != predecessor_to->end(); ++it) + { + IfcSchema::IfcProcess* relating_process = (*it)->RelatedProcess(); + ptree nobject; + nobject.put(".id", relating_process->GlobalId()); + ntask->add_child("IsPredecessorTo", nobject); + } +#endif + + IfcSchema::IfcPropertySetDefinition::list::ptr property_sets = get_related + + (task, &IfcSchema::IfcObject::IsDefinedBy, &IfcSchema::IfcRelDefinesByProperties::RelatingPropertyDefinition); + + for (IfcSchema::IfcPropertySetDefinition::list::it it = property_sets->begin(); it != property_sets->end(); ++it) { + IfcSchema::IfcPropertySetDefinition* pset = *it; + if (pset->declaration().is(IfcSchema::IfcPropertySet::Class())) { + format_entity_instance(pset, *ntask, true); + } + else if (pset->declaration().is(IfcSchema::IfcElementQuantity::Class())) { + format_entity_instance(pset, *ntask, true); + } + } + +#ifdef SCHEMA_IfcProcess_HAS_OperatesOn + IfcSchema::IfcRelAssignsToProcess::list::ptr operates = task->OperatesOn(); + if (operates->size() > 0) + { + for (IfcSchema::IfcRelAssignsToProcess::list::it i = operates->begin(); i != operates->end(); ++i) + { + IfcSchema::IfcRelAssignsToProcess* operation = (*i); + IfcSchema::IfcObjectDefinition::list::ptr objects = operation->RelatedObjects(); + for (IfcSchema::IfcObjectDefinition::list::it it2 = objects->begin(); it2 != objects->end(); ++it2) + { + IfcSchema::IfcObjectDefinition* object = *it2; + ptree nobject; + nobject.put(".id", object->GlobalId()); + if (object->declaration().is(IfcSchema::IfcProduct::Class())) + { + ntask->add_child("Input", nobject); + } + else if (object->declaration().is(IfcSchema::IfcResource::Class())) + { + ntask->add_child("Resource", nobject); + } + else if (object->declaration().is(IfcSchema::IfcControl::Class())) + { + ntask->add_child("Control", nobject); + } + else + { + nobject.put(".Type", object->declaration().name()); + ntask->add_child("OperatesOn", nobject); + } + } + } + } +#endif + + IfcSchema::IfcRelAssigns::list::ptr assignments = task->HasAssignments(); + for (IfcSchema::IfcRelAssigns::list::it i = assignments->begin(); i != assignments->end(); ++i) + { + IfcSchema::IfcRelAssigns* assignment = *i; + if (assignment->declaration().is(IfcSchema::IfcRelAssignsToProduct::Class())) { + IfcSchema::IfcRelAssignsToProduct* assign_to_product = assignment->as(); + IfcSchema::IfcProduct* product = assign_to_product->RelatingProduct()->as(); + ptree nobject; + nobject.put(".id", product->GlobalId()); + ntask->add_child("Output", nobject); + } + } + +#ifdef SCHEMA_IfcObjectDefinition_HAS_IsNestedBy + IfcSchema::IfcRelNests::list::ptr nested_by = task->IsNestedBy(); + for (IfcSchema::IfcRelNests::list::it it = nested_by->begin(); it != nested_by->end(); ++it) + { + IfcSchema::IfcObjectDefinition::list::ptr related_objects = (*it)->RelatedObjects(); + for (IfcSchema::IfcObjectDefinition::list::it it2 = related_objects->begin(); it2 != related_objects->end(); ++it2) + { + if (!(*it2)->declaration().is(IfcSchema::IfcTask::Class())) { + continue; + } + IfcSchema::IfcTask* task2 = (*it2)->as(); + format_tasks(task2, *ntask); + } + } +#endif + } +} + } // ~unnamed namespace void MAKE_TYPE_NAME(XmlSerializer)::finalize() { @@ -392,7 +507,7 @@ void MAKE_TYPE_NAME(XmlSerializer)::finalize() { } IfcSchema::IfcProject* project = *projects->begin(); - ptree root, header, units, decomposition, properties, quantities, types, layers, materials; + ptree root, header, units, decomposition, properties, quantities, types, layers, materials, work, calendars; // Write the SPF header as XML nodes. BOOST_FOREACH(const std::string& s, file->header().file_description().description()) { @@ -479,6 +594,77 @@ void MAKE_TYPE_NAME(XmlSerializer)::finalize() { } } + // Write all work schedules and values as XML nodes. + ptree pwork_schedules; + IfcSchema::IfcWorkSchedule::list::ptr pschedules = file->instances_by_type(); + for (IfcSchema::IfcWorkSchedule::list::it it = pschedules->begin(); it != pschedules->end(); ++it) { + IfcSchema::IfcWorkSchedule* schedule = *it; + ptree* nschedule = format_entity_instance(schedule, pwork_schedules); + + if(nschedule) { + IfcSchema::IfcRelAssignsToControl::list::ptr controls = schedule->Controls(); + for(IfcSchema::IfcRelAssignsToControl::list::it it2 = controls->begin(); it2 != controls->end(); ++it2) { + IfcSchema::IfcRelAssignsToControl* control = *it2; + + IfcSchema::IfcObjectDefinition::list::ptr objects = control->RelatedObjects(); + for(IfcSchema::IfcObjectDefinition::list::it it3 = objects->begin(); it3 != objects->end(); ++it3) { + IfcSchema::IfcObjectDefinition* object = *it3; + + if (object && object->declaration().is(IfcSchema::IfcTask::Class())) { + IfcSchema::IfcTask* task = object->as(); + format_tasks(task, *nschedule); + } + } + } + } + } + work.add_child("schedules", pwork_schedules); + + // Write all work plans and values as XML nodes. + ptree pwork_plans; + IfcSchema::IfcWorkPlan::list::ptr pplans = file->instances_by_type(); + for (IfcSchema::IfcWorkPlan::list::it it = pplans->begin(); it != pplans->end(); ++it) { + IfcSchema::IfcWorkPlan* plan = *it; + ptree* nschedule = format_entity_instance(plan, pwork_plans); + + if (nschedule) { +#ifdef SCHEMA_IfcObjectDefinition_HAS_IsDecomposedBy + auto decomposed_by = plan->IsDecomposedBy(); + for (auto it2 = decomposed_by->begin(); it2 != decomposed_by->end(); ++it2) + { + IfcSchema::IfcObjectDefinition::list::ptr related_objects = (*it2)->RelatedObjects(); + for (IfcSchema::IfcObjectDefinition::list::it it3 = related_objects->begin(); it3 != related_objects->end(); ++it3) + { + IfcSchema::IfcObjectDefinition* work_schedule = *it3; + ptree pwork_schedule; + pwork_schedule.put(".id", work_schedule->GlobalId()); + nschedule->add_child("IfcWorkSchedule", pwork_schedule); + } + } +#endif + } + } + work.add_child("plans", pwork_plans); + + // Write all work calendars and values as XML nodes. +#ifdef SCHEMA_HAS_IfcWorkCalendar + IfcSchema::IfcWorkCalendar::list::ptr pcalendars = file->instances_by_type(); + for (IfcSchema::IfcWorkCalendar::list::it it = pcalendars->begin(); it != pcalendars->end(); ++it) { + IfcSchema::IfcWorkCalendar* calendar = *it; + ptree* ncalendar = format_entity_instance(calendar, calendars); + + if (ncalendar) { + IfcSchema::IfcWorkTime::list::ptr working_times = calendar->WorkingTimes().value_or(nullptr); + if (working_times != nullptr) { + for (IfcSchema::IfcWorkTime::list::it it2 = working_times->begin(); it2 != working_times->end(); ++it2) + { + IfcSchema::IfcWorkTime* working_time = *it2; + format_entity_instance(working_time, *ncalendar); + } + } + } + } +#endif // Write all type objects as XML nodes. IfcSchema::IfcTypeObject::list::ptr type_objects = file->instances_by_type(); @@ -565,8 +751,10 @@ void MAKE_TYPE_NAME(XmlSerializer)::finalize() { root.add_child("ifc.units", units); root.add_child("ifc.properties", properties); root.add_child("ifc.quantities", quantities); + root.add_child("ifc.work", work); + root.add_child("ifc.calendars", calendars); root.add_child("ifc.types", types); - root.add_child("ifc.layers", layers); + root.add_child("ifc.layers", layers); root.add_child("ifc.materials", materials); root.add_child("ifc.decomposition", decomposition); diff --git a/src/serializers/serializers_api.h b/src/serializers/serializers_api.h new file mode 100644 index 0000000000..a46a27122b --- /dev/null +++ b/src/serializers/serializers_api.h @@ -0,0 +1,37 @@ +/******************************************************************************** +* * +* This file is part of IfcOpenShell. * +* * +* IfcOpenShell is free software: you can redistribute it and/or modify * +* it under the terms of the Lesser GNU General Public License as published by * +* the Free Software Foundation, either version 3.0 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 * +* Lesser GNU General Public License for more details. * +* * +* You should have received a copy of the Lesser GNU General Public License * +* along with this program. If not, see . * +* * +********************************************************************************/ + +#ifndef IFC_SERIALIZERS_API_H +#define IFC_SERIALIZERS_API_H + +#ifdef IFC_SHARED_BUILD + #ifdef _WIN32 + #ifdef Serializers_EXPORTS + #define SERIALIZERS_API __declspec(dllexport) + #else + #define SERIALIZERS_API __declspec(dllimport) + #endif + #else // simply assume *nix + GCC-like compiler + #define SERIALIZERS_API __attribute__((visibility("default"))) + #endif +#else + #define SERIALIZERS_API +#endif + +#endif diff --git a/src/svgfill b/src/svgfill index 01a2fb4943..f9102b1e9f 160000 --- a/src/svgfill +++ b/src/svgfill @@ -1 +1 @@ -Subproject commit 01a2fb49434920eb5cce789d14fcb425b9fe82c2 +Subproject commit f9102b1e9f58e2c3bf9923c1eafa0373eeb872f5 diff --git a/win/build-deps.cmd b/win/build-deps.cmd index 3d5b705bd0..aa321a8496 100644 --- a/win/build-deps.cmd +++ b/win/build-deps.cmd @@ -210,10 +210,10 @@ if NOT "%USE_STATIC_RUNTIME%"=="FALSE" git apply "%~dp0patches\mpir_runtime.patc IF NOT %ERRORLEVEL%==0 GOTO :Error cd msvc cd vs%VS_VER:~2,2% -call .\msbuild.bat gc LIB %VS_PLATFORM% Release +call .\msbuild.bat gc LIB %VS_PLATFORM% %DEBUG_OR_RELEASE% IF NOT %ERRORLEVEL%==0 GOTO :Error IF NOT EXIST "%INSTALL_DIR%\mpir". mkdir "%INSTALL_DIR%\mpir" -copy ..\..\lib\%VS_PLATFORM%\Release\* "%INSTALL_DIR%\mpir" +copy ..\..\lib\%VS_PLATFORM%\%DEBUG_OR_RELEASE%\* "%INSTALL_DIR%\mpir" IF NOT %ERRORLEVEL%==0 GOTO :Error :mpfr @@ -229,15 +229,18 @@ if NOT "%USE_STATIC_RUNTIME%"=="FALSE" git apply "%~dp0patches\mpfr_runtime.patc IF NOT %ERRORLEVEL%==0 GOTO :Error if "%VS_VER%"=="2017" ( set mpfr_sln=build.vc15 + set orig_platform_toolset=v141 ) else ( set mpfr_sln=build.vs19 + set orig_platform_toolset=v142 ) +powershell -c "get-childitem %DEPENDENCY_DIR%\%mpfr_sln% -recurse -include *.vcxproj | select -expand fullname | foreach { (Get-Content $_) -replace '%orig_platform_toolset%', 'v%VC_VER:.=%' | Set-Content $_ }" call :BuildSolution "%DEPENDENCY_DIR%\%mpfr_sln%\lib_mpfr.sln" %DEBUG_OR_RELEASE% lib_mpfr IF NOT %ERRORLEVEL%==0 GOTO :Error REM This command fails because not all msvc projects are patched with the right sdk version -IF NOT EXIST lib\%VS_PLATFORM%\Release\mpfr.lib GOTO :Error +IF NOT EXIST lib\%VS_PLATFORM%\%DEBUG_OR_RELEASE%\mpfr.lib GOTO :Error IF NOT EXIST "%INSTALL_DIR%\mpfr". mkdir "%INSTALL_DIR%\mpfr" -copy lib\%VS_PLATFORM%\Release\* "%INSTALL_DIR%\mpfr" +copy lib\%VS_PLATFORM%\%DEBUG_OR_RELEASE%\* "%INSTALL_DIR%\mpfr" IF NOT %ERRORLEVEL%==0 GOTO :Error :HDF5 @@ -354,7 +357,7 @@ if not %ERRORLEVEL%==0 goto :Error set DEPENDENCY_NAME=Open CASCADE %OCCT_VERSION% set DEPENDENCY_DIR=%DEPS_DIR%\occt_git cd "%DEPS_DIR%" -call :GitCloneAndCheckoutRevision https://git.dev.opencascade.org/repos/occt.git "%DEPENDENCY_DIR%" %OCCT_VER% +call :GitCloneAndCheckoutRevision https://github.com/Open-Cascade-SAS/OCCT "%DEPENDENCY_DIR%" %OCCT_VER% if not %ERRORLEVEL%==0 goto :Error :: Patching always blindly would trigger a rebuild each time @@ -403,16 +406,15 @@ rmdir /s /q "%INSTALL_DIR%\opencascade-%OCCT_VERSION%\samples" del "%INSTALL_DIR%\opencascade-%OCCT_VERSION%\*.bat" :Python +set DEPENDENCY_NAME=Python %PYTHON_VERSION% +set DEPENDENCY_DIR=N/A +set PYTHON_AMD64_POSTFIX=.amd64 +:: NOTE/TODO Beginning from 3.5.0: set PYTHON_AMD64_POSTFIX=-amd64 +IF NOT %TARGET_ARCH%==x64 set PYTHON_AMD64_POSTFIX= +:: NOTE/TODO 3.5.0 doesn't use MSI any longer, but exe: set PYTHON_INSTALLER=python-%PYTHON_VERSION%%PYTHON_AMD64_POSTFIX%.exe +set PYTHON_INSTALLER=python-%PYTHON_VERSION%%PYTHON_AMD64_POSTFIX%.msi + IF "%IFCOS_INSTALL_PYTHON%"=="TRUE" ( - set DEPENDENCY_NAME=Python %PYTHON_VERSION% - set DEPENDENCY_DIR=N/A - - set PYTHON_AMD64_POSTFIX=.amd64 - :: NOTE/TODO Beginning from 3.5.0: set PYTHON_AMD64_POSTFIX=-amd64 - IF NOT %TARGET_ARCH%==x64 set PYTHON_AMD64_POSTFIX= - :: NOTE/TODO 3.5.0 doesn't use MSI any longer, but exe: set PYTHON_INSTALLER=python-%PYTHON_VERSION%%PYTHON_AMD64_POSTFIX%.exe - set PYTHON_INSTALLER=python-%PYTHON_VERSION%%PYTHON_AMD64_POSTFIX%.msi - cd "%DEPS_DIR%" call :DownloadFile https://www.python.org/ftp/python/%PYTHON_VERSION%/%PYTHON_INSTALLER% "%DEPS_DIR%" %PYTHON_INSTALLER% IF NOT %ERRORLEVEL%==0 GOTO :Error